/* tslint:disable:no-non-null-assertion */ import { GetCustomerList, GetOrder, GetOrderList } from '@vendure/common/lib/generated-types'; import gql from 'graphql-tag'; import path from 'path'; import { GET_CUSTOMER_LIST } from '../../../admin-ui/src/app/data/definitions/customer-definitions'; import { GET_ORDER, GET_ORDERS_LIST } from '../../../admin-ui/src/app/data/definitions/order-definitions'; import { TEST_SETUP_TIMEOUT_MS } from './config/test-config'; import { TestAdminClient, TestShopClient } from './test-client'; import { TestServer } from './test-server'; describe('Orders resolver', () => { const adminClient = new TestAdminClient(); const shopClient = new TestShopClient(); const server = new TestServer(); let customers: GetCustomerList.Items[]; const password = 'test'; beforeAll(async () => { const token = await server.init({ productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'), customerCount: 2, }); await adminClient.init(); // Create a couple of orders to be queried const result = await adminClient.query( GET_CUSTOMER_LIST, { options: { take: 2, }, }, ); customers = result.customers.items; await shopClient.asUserWithCredentials(customers[0].emailAddress, password); await shopClient.query(ADD_ITEM_TO_ORDER, { productVariantId: 'T_1', quantity: 1, }); await shopClient.asUserWithCredentials(customers[1].emailAddress, password); await shopClient.query(ADD_ITEM_TO_ORDER, { productVariantId: 'T_2', quantity: 1, }); }, TEST_SETUP_TIMEOUT_MS); afterAll(async () => { await server.destroy(); }); it('orders', async () => { const result = await adminClient.query(GET_ORDERS_LIST); expect(result.orders.items.map(o => o.id)).toEqual(['T_1', 'T_2']); }); it('order', async () => { const result = await adminClient.query(GET_ORDER, { id: 'T_2' }); expect(result.order!.id).toBe('T_2'); }); }); const ADD_ITEM_TO_ORDER = gql` mutation AddItemToOrder($productVariantId: ID!, $quantity: Int!) { addItemToOrder(productVariantId: $productVariantId, quantity: $quantity) { id } } `;