Browse Source

chore(server): Make mock data deterministic, add variant translations

Michael Bromley 7 years ago
parent
commit
3117e55bc2
1 changed files with 40 additions and 4 deletions
  1. 40 4
      server/mock-data/mock-data-client.service.ts

+ 40 - 4
server/mock-data/mock-data-client.service.ts

@@ -9,7 +9,6 @@ import { CreateAdministratorDto } from '../src/entity/administrator/administrato
 import { CreateCustomerDto } from '../src/entity/customer/customer.dto';
 import { Customer } from '../src/entity/customer/customer.entity';
 import { CreateProductOptionGroupDto } from '../src/entity/product-option-group/product-option-group.dto';
-import { CreateProductVariantDto } from '../src/entity/product-variant/create-product-variant.dto';
 import { CreateProductDto } from '../src/entity/product/product.dto';
 import { Product } from '../src/entity/product/product.entity';
 import { LanguageCode } from '../src/locale/language-code';
@@ -24,6 +23,8 @@ export class MockDataClientService {
 
     constructor(config: VendureConfig) {
         this.apiUrl = `http://localhost:${config.port}/${config.apiPath}`;
+        // make the generated results deterministic
+        faker.seed(1);
     }
 
     async populateOptions(): Promise<any> {
@@ -148,7 +149,7 @@ export class MockDataClientService {
             const name = faker.commerce.productName();
             const slug = name.toLowerCase().replace(/\s+/g, '-');
             const description = faker.lorem.sentence();
-            const languageCodes = [LanguageCode.EN, LanguageCode.DE, LanguageCode.ES];
+            const languageCodes = [LanguageCode.EN, LanguageCode.DE];
 
             const variables = {
                 input: {
@@ -167,7 +168,28 @@ export class MockDataClientService {
                 },
                 err => console.log(err),
             );
-            await this.makeProductVariant(product.createProduct.id);
+            const prodWithVariants = await this.makeProductVariant(product.createProduct.id);
+            const variants = prodWithVariants.variants;
+            for (const variant of variants) {
+                const variantEN = variant.translations[0];
+                const variantDE = { ...variantEN };
+                variantDE.languageCode = LanguageCode.DE;
+                variantDE.name = variantDE.name.replace(LanguageCode.EN, LanguageCode.DE);
+                variantDE.id = undefined;
+                variant.translations.push(variantDE);
+            }
+            await request(
+                this.apiUrl,
+                `
+                 mutation UpdateVariants($input: [UpdateProductVariantInput!]!) {
+                     updateProductVariants(input: $input) {
+                        id
+                    }
+                }`,
+                {
+                    input: variants,
+                },
+            );
         }
     }
 
@@ -190,8 +212,22 @@ export class MockDataClientService {
             generateVariantsForProduct(productId: $productId) {
                 id
                 name
+                variants {
+                    id
+                    translations {
+                        id
+                        languageCode
+                        name
+                    }
+                    sku
+                    image
+                    price
+                }
             }
          }`;
-        await request(this.apiUrl, query, { productId }).then(data => data, err => console.log(err));
+        return request<any>(this.apiUrl, query, { productId }).then(
+            data => data.generateVariantsForProduct,
+            err => console.log(err),
+        );
     }
 }