fast-importer.e2e-spec.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { CreateProductInput, ProductTranslationInput } from '@vendure/common/lib/generated-types';
  2. import { createTestEnvironment } from '@vendure/testing';
  3. import path from 'path';
  4. import { testConfig, TEST_SETUP_TIMEOUT_MS } from '../../../e2e-common/test-config';
  5. import { initialData } from '../mock-data/data-sources/initial-data';
  6. import { FastImporterService, LanguageCode } from '../src';
  7. import { GetProductWithVariants } from './graphql/generated-e2e-admin-types';
  8. import { GET_PRODUCT_WITH_VARIANTS } from './graphql/shared-definitions';
  9. describe('FastImporterService resolver', () => {
  10. const { server, adminClient } = createTestEnvironment(testConfig());
  11. let fastImporterService: FastImporterService;
  12. beforeAll(async () => {
  13. await server.init({
  14. initialData,
  15. productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
  16. });
  17. await adminClient.asSuperAdmin();
  18. fastImporterService = server.app.get(FastImporterService);
  19. }, TEST_SETUP_TIMEOUT_MS);
  20. afterAll(async () => {
  21. await server.destroy();
  22. });
  23. it('creates normalized slug', async () => {
  24. const productTranslation: ProductTranslationInput = {
  25. languageCode: LanguageCode.en,
  26. name: 'test product',
  27. slug: 'test product',
  28. description: 'test description',
  29. };
  30. const createProductInput: CreateProductInput = {
  31. translations: [productTranslation],
  32. };
  33. await fastImporterService.initialize();
  34. const productId = await fastImporterService.createProduct(createProductInput);
  35. const { product } = await adminClient.query<
  36. GetProductWithVariants.Query,
  37. GetProductWithVariants.Variables
  38. >(GET_PRODUCT_WITH_VARIANTS, {
  39. id: productId as string,
  40. });
  41. expect(product?.slug).toMatch('test-product');
  42. });
  43. });