Browse Source

fix(core): Return correct timestamp values for translated entities

Fixes #1101
Michael Bromley 4 years ago
parent
commit
ded49c4495

+ 2 - 0
packages/core/e2e/graphql/fragments.ts

@@ -35,6 +35,8 @@ export const ASSET_FRAGMENT = gql`
 export const PRODUCT_VARIANT_FRAGMENT = gql`
     fragment ProductVariant on ProductVariant {
         id
+        createdAt
+        updatedAt
         enabled
         languageCode
         name

+ 2 - 0
packages/core/e2e/graphql/generated-e2e-admin-types.ts

@@ -5253,6 +5253,8 @@ export type AssetFragment = Pick<
 export type ProductVariantFragment = Pick<
     ProductVariant,
     | 'id'
+    | 'createdAt'
+    | 'updatedAt'
     | 'enabled'
     | 'languageCode'
     | 'name'

+ 27 - 0
packages/core/e2e/product.e2e-spec.ts

@@ -1371,6 +1371,33 @@ describe('Product resolver', () => {
                 expect(updatedVariant.price).toBe(432);
             });
 
+            // https://github.com/vendure-ecommerce/vendure/issues/1101
+            it('after update, the updatedAt should be modified', async () => {
+                // Pause for a second to ensure the updatedAt date is more than 1s
+                // later than the createdAt date, since sqlite does not seem to store
+                // down to millisecond resolution.
+                await new Promise(resolve => setTimeout(resolve, 1000));
+
+                const firstVariant = variants[0];
+                const { updateProductVariants } = await adminClient.query<
+                    UpdateProductVariants.Mutation,
+                    UpdateProductVariants.Variables
+                >(UPDATE_PRODUCT_VARIANTS, {
+                    input: [
+                        {
+                            id: firstVariant.id,
+                            translations: firstVariant.translations,
+                            sku: 'ABCD',
+                            price: 432,
+                        },
+                    ],
+                });
+
+                const updatedVariant = updateProductVariants.find(v => v?.id === variants[0].id);
+
+                expect(updatedVariant?.updatedAt).not.toBe(updatedVariant?.createdAt);
+            });
+
             it('updateProductVariants updates assets', async () => {
                 const firstVariant = variants[0];
                 const result = await adminClient.query<

+ 1 - 1
packages/core/src/service/helpers/utils/translate-entity.ts

@@ -69,7 +69,7 @@ export function translateEntity<T extends Translatable & VendureEntity>(
                 translated.customFields = {};
             }
             Object.assign(translated.customFields, value);
-        } else if (key !== 'base' && key !== 'id') {
+        } else if (key !== 'base' && key !== 'id' && key !== 'createdAt' && key !== 'updatedAt') {
             translated[key] = value;
         }
     }