Browse Source

test(core): OrderLine list relation tests

jacobfrantz1 3 years ago
parent
commit
583745664f
1 changed files with 92 additions and 3 deletions
  1. 92 3
      packages/core/e2e/shop-order.e2e-spec.ts

+ 92 - 3
packages/core/e2e/shop-order.e2e-spec.ts

@@ -130,6 +130,7 @@ describe('Shop orders', () => {
                     { name: 'notes', type: 'string' },
                     { name: 'privateField', type: 'string', public: false },
                     { name: 'lineImage', type: 'relation', entity: Asset },
+                    { name: 'lineImages', type: 'relation', list: true, entity: Asset },
                     { name: 'dropShip', type: 'boolean', defaultValue: false },
                 ],
             },
@@ -280,6 +281,9 @@ describe('Shop orders', () => {
                                 lineImage {
                                     id
                                 }
+                                lineImages {
+                                    id
+                                }
                             }
                         }
                     }
@@ -403,11 +407,13 @@ describe('Shop orders', () => {
                 });
                 expect(adjustOrderLine.lines[1].customFields).toEqual({
                     lineImage: null,
+                    lineImages: [],
                     notes: 'updated notes',
                 });
                 const { activeOrder: ao1 } = await shopClient.query(GET_ORDER_WITH_ORDER_LINE_CUSTOM_FIELDS);
                 expect(ao1.lines[1].customFields).toEqual({
                     lineImage: null,
+                    lineImages: [],
                     notes: 'updated notes',
                 });
                 const updatedNotesLineId = ao1.lines[1].id;
@@ -428,6 +434,7 @@ describe('Shop orders', () => {
                 expect(activeOrder.lines.find((l: any) => l.id === updatedNotesLineId)?.customFields).toEqual(
                     {
                         lineImage: null,
+                        lineImages: [],
                         notes: 'updated notes',
                     },
                 );
@@ -530,12 +537,91 @@ describe('Shop orders', () => {
                         orderLineId: activeOrder!.lines[2].id,
                     },
                 );
+                const { removeOrderLine } = await shopClient.query<
+                    RemoveItemFromOrder.Mutation,
+                    RemoveItemFromOrder.Variables
+                >(REMOVE_ITEM_FROM_ORDER, {
+                    orderLineId: activeOrder!.lines[1].id,
+                });
+                orderResultGuard.assertSuccess(removeOrderLine);
+                expect(removeOrderLine.lines.length).toBe(1);
+            });
+
+            it('addItemToOrder with list relation customField', async () => {
+                const { addItemToOrder } = await shopClient.query<AddItemToOrder.Mutation>(
+                    ADD_ITEM_TO_ORDER_WITH_CUSTOM_FIELDS,
+                    {
+                        productVariantId: 'T_3',
+                        quantity: 1,
+                        customFields: {
+                            lineImagesIds: ['T_1', 'T_2'],
+                        },
+                    },
+                );
+
+                orderResultGuard.assertSuccess(addItemToOrder);
+                expect(addItemToOrder!.lines.length).toBe(2);
+                expect(addItemToOrder!.lines[1].quantity).toBe(1);
+
+                const { activeOrder } = await shopClient.query(GET_ORDER_WITH_ORDER_LINE_CUSTOM_FIELDS);
+                expect(activeOrder.lines[1].customFields.lineImages).toEqual([{ id: 'T_1' }, { id: 'T_2' }]);
+            });
+
+            it('addItemToOrder with equal list relation customField adds to quantity', async () => {
+                const { addItemToOrder } = await shopClient.query<AddItemToOrder.Mutation>(
+                    ADD_ITEM_TO_ORDER_WITH_CUSTOM_FIELDS,
+                    {
+                        productVariantId: 'T_3',
+                        quantity: 1,
+                        customFields: {
+                            lineImagesIds: ['T_1', 'T_2'],
+                        },
+                    },
+                );
+
+                orderResultGuard.assertSuccess(addItemToOrder);
+                expect(addItemToOrder!.lines.length).toBe(2);
+                expect(addItemToOrder!.lines[1].quantity).toBe(2);
+
+                const { activeOrder } = await shopClient.query(GET_ORDER_WITH_ORDER_LINE_CUSTOM_FIELDS);
+
+                expect(activeOrder.lines[1].customFields.lineImages).toEqual([{ id: 'T_1' }, { id: 'T_2' }]);
+            });
+
+            it('addItemToOrder with different list relation customField adds new line', async () => {
+                const { addItemToOrder } = await shopClient.query<AddItemToOrder.Mutation>(
+                    ADD_ITEM_TO_ORDER_WITH_CUSTOM_FIELDS,
+                    {
+                        productVariantId: 'T_3',
+                        quantity: 1,
+                        customFields: {
+                            lineImagesIds: ['T_1'],
+                        },
+                    },
+                );
+
+                orderResultGuard.assertSuccess(addItemToOrder);
+                expect(addItemToOrder!.lines.length).toBe(3);
+                expect(addItemToOrder!.lines[2].quantity).toBe(1);
+
+                const { activeOrder } = await shopClient.query(GET_ORDER_WITH_ORDER_LINE_CUSTOM_FIELDS);
+
+                expect(activeOrder.lines[2].customFields.lineImages).toEqual([{ id: 'T_1' }]);
+
                 await shopClient.query<RemoveItemFromOrder.Mutation, RemoveItemFromOrder.Variables>(
                     REMOVE_ITEM_FROM_ORDER,
                     {
-                        orderLineId: activeOrder!.lines[1].id,
+                        orderLineId: activeOrder!.lines[2].id,
                     },
                 );
+                const { removeOrderLine } = await shopClient.query<
+                    RemoveItemFromOrder.Mutation,
+                    RemoveItemFromOrder.Variables
+                >(REMOVE_ITEM_FROM_ORDER, {
+                    orderLineId: activeOrder!.lines[1].id,
+                });
+                orderResultGuard.assertSuccess(removeOrderLine);
+                expect(removeOrderLine.lines.length).toBe(1);
             });
         });
 
@@ -611,7 +697,7 @@ describe('Shop orders', () => {
                 AdjustItemQuantity.Mutation,
                 AdjustItemQuantity.Variables
             >(ADJUST_ITEM_QUANTITY, {
-                orderLineId: 'T_10',
+                orderLineId: addItemToOrder!.order.lines[1].id,
                 quantity: 101,
             });
             orderResultGuard.assertErrorResult(adjustOrderLine);
@@ -627,7 +713,7 @@ describe('Shop orders', () => {
                 AdjustItemQuantity.Mutation,
                 AdjustItemQuantity.Variables
             >(ADJUST_ITEM_QUANTITY, {
-                orderLineId: 'T_10',
+                orderLineId: addItemToOrder!.order.lines[1].id,
                 quantity: 0,
             });
             orderResultGuard.assertSuccess(adjustLine2);
@@ -2182,6 +2268,9 @@ const ADJUST_ORDER_LINE_WITH_CUSTOM_FIELDS = gql`
                         lineImage {
                             id
                         }
+                        lineImages {
+                            id
+                        }
                     }
                 }
             }