Browse Source

fix(core): Fix error when updating variant stock level

Michael Bromley 6 years ago
parent
commit
57c549922b

+ 5 - 3
packages/core/e2e/stock-control.e2e-spec.ts

@@ -186,15 +186,17 @@ describe('Stock control', () => {
                 TRANSITION_TO_STATE,
                 { state: 'ArrangingPayment' as OrderState },
             );
-            await shopClient.query<AddPaymentToOrder.Mutation, AddPaymentToOrder.Variables>(ADD_PAYMENT, {
+        });
+
+        it('creates a Sale when order completed', async () => {
+            const { addPaymentToOrder } = await shopClient.query<AddPaymentToOrder.Mutation, AddPaymentToOrder.Variables>(ADD_PAYMENT, {
                 input: {
                     method: testPaymentMethod.code,
                     metadata: {},
                 } as PaymentInput,
             });
-        });
+            expect(addPaymentToOrder).not.toBeNull();
 
-        it('creates a Sale when order completed', async () => {
             const { product } = await adminClient.query<GetStockMovement.Query, GetStockMovement.Variables>(
                 GET_STOCK_MOVEMENT,
                 { id: 'T_2' },

+ 1 - 1
packages/core/src/entity/product-variant/product-variant.subscriber.ts

@@ -26,7 +26,7 @@ export class ProductVariantSubscriber implements EntitySubscriberInterface<Produ
     }
 
     async afterUpdate(event: InsertEvent<ProductVariant>) {
-        if (event.entity.price !== undefined) {
+        if (event.entity.price !== undefined && event.queryRunner.data && event.queryRunner.data.channelId) {
             const variantPrice = await event.connection.getRepository(ProductVariantPrice).findOne({
                 where: {
                     variant: event.entity.id,