import gql from 'graphql-tag'; import { startSessionAnonymously } from 'test/graphql'; import { getCustomRepository } from 'typeorm'; import { RetailerProductSource } from '@/entities/types'; import { RetailerProductRepository } from '@/repositories'; import { RetailerKind } from '@/types'; describe('Query:retailerProducts', () => { const query = gql` query { retailerProducts { edges { node { id } } } } `; test('should return retailer products', async () => { const { execute } = await startSessionAnonymously(); const retailerProductRepo = getCustomRepository(RetailerProductRepository); const { retailerProductId: retailerProductId1 } = await retailerProductRepo.upsert({ retailer: RetailerKind.PERIGOLD, source: RetailerProductSource.GOOGLE_SHOPPING, productIdentifiers: ['test1'], data: { asin: 'asin', colorCode: 'colorCode', annotations: 'annotation', price: 100, description: 'description', dimensions: 'dimensions', discoverable: true, distributor: 'distributor', distributorSKU: 'distributor', imageUrls: ['http://test.com/test.jpg'], isAvailable: true, name: 'test', url: 'https://www.amazon.com/Haussmann-Twist-Stool-High-Walnut/dp/B00KRY0SY2', }, }); const { retailerProductId: retailerProductId2 } = await retailerProductRepo.upsert({ retailer: RetailerKind.PERIGOLD, source: RetailerProductSource.GOOGLE_SHOPPING, productIdentifiers: ['test2'], data: { asin: 'asin', colorCode: 'colorCode', annotations: 'annotation', price: 100, description: 'description', dimensions: 'dimensions', discoverable: true, distributor: 'distributor', distributorSKU: 'distributor', imageUrls: ['http://test.com/test.jpg'], isAvailable: true, name: 'test', url: 'https://www.amazon.com/Haussmann-Twist-Stool-High-Walnut/dp/B00KRY0SY2', }, }); const response = await execute({ query: query, }); expect(response.errors?.length).toBeFalsy(); expect(response.data?.retailerProducts?.edges).toHaveLength(2); const ids = response.data?.retailerProducts?.edges?.map( (e: any) => e.node.id ); expect(ids).toContain(retailerProductId1); expect(ids).toContain(retailerProductId2); }); }); describe('Query:retailerProduct', () => { const query = gql` query ($input: RetailerProductInput!) { retailerProduct(input: $input) { retailerProduct { id name } } } `; test('should return retailer products', async () => { const { execute } = await startSessionAnonymously(); const retailerProductRepo = getCustomRepository(RetailerProductRepository); const { retailerProductId } = await retailerProductRepo.upsert({ retailer: RetailerKind.PERIGOLD, source: RetailerProductSource.GOOGLE_SHOPPING, productIdentifiers: ['test12'], data: { asin: 'asin', colorCode: 'colorCode', annotations: 'annotation', price: 100, description: 'description', dimensions: 'dimensions', discoverable: true, distributor: 'distributor', distributorSKU: 'distributor', imageUrls: ['http://test.com/test.jpg'], isAvailable: true, name: 'test', url: 'https://www.amazon.com/Haussmann-Twist-Stool-High-Walnut/dp/B00KRY0SY2', }, }); const response = await execute({ query: query, variables: { input: { id: retailerProductId, }, }, }); expect(response.errors?.length).toBeFalsy(); expect(response.data?.retailerProduct.retailerProduct.id).toBe( retailerProductId ); }); });