Browse Source

test(admin-ui): Fix failing ui tests

Michael Bromley 2 years ago
parent
commit
d6d5777a77

+ 15 - 16
packages/admin-ui/src/lib/core/src/data/utils/add-custom-fields.spec.ts

@@ -1,6 +1,6 @@
 import { DocumentNode, FieldNode, FragmentDefinitionNode, Kind, OperationTypeNode } from 'graphql';
 
-import { CustomFields } from '../../common/generated-types';
+import { CustomFieldConfig, CustomFields } from '../../common/generated-types';
 
 import { addCustomFields } from './add-custom-fields';
 
@@ -143,14 +143,13 @@ describe('addCustomFields()', () => {
     });
 
     it('Adds customFields to Product fragment', () => {
-        const customFieldsConfig: Partial<CustomFields> = {
-            Product: [
-                { name: 'custom1', type: 'string', list: false },
-                { name: 'custom2', type: 'boolean', list: false },
-            ],
-        };
+        const customFieldsConfig = new Map<string, CustomFieldConfig[]>();
+        customFieldsConfig.set('Product', [
+            { name: 'custom1', type: 'string', list: false },
+            { name: 'custom2', type: 'boolean', list: false },
+        ]);
 
-        const result = addCustomFields(documentNode, customFieldsConfig as CustomFields);
+        const result = addCustomFields(documentNode, customFieldsConfig);
         const productFragmentDef = result.definitions[1] as FragmentDefinitionNode;
         const customFieldsDef = productFragmentDef.selectionSet.selections[2] as FieldNode;
         expect(productFragmentDef.selectionSet.selections.length).toBe(3);
@@ -160,11 +159,12 @@ describe('addCustomFields()', () => {
     });
 
     it('Adds customFields to Product translations', () => {
-        const customFieldsConfig: Partial<CustomFields> = {
-            Product: [{ name: 'customLocaleString', type: 'localeString', list: false }],
-        };
+        const customFieldsConfig = new Map<string, CustomFieldConfig[]>();
+        customFieldsConfig.set('Product', [
+            { name: 'customLocaleString', type: 'localeString', list: false },
+        ]);
 
-        const result = addCustomFields(documentNode, customFieldsConfig as CustomFields);
+        const result = addCustomFields(documentNode, customFieldsConfig);
         const productFragmentDef = result.definitions[1] as FragmentDefinitionNode;
         const translationsField = productFragmentDef.selectionSet.selections[1] as FieldNode;
         const customTranslationFieldsDef = translationsField.selectionSet!.selections[2] as FieldNode;
@@ -175,11 +175,10 @@ describe('addCustomFields()', () => {
     });
 
     function addsCustomFieldsToType(type: keyof CustomFields, indexOfDefinition: number) {
-        const customFieldsConfig: Partial<CustomFields> = {
-            [type]: [{ name: 'custom', type: 'boolean' }],
-        };
+        const customFieldsConfig = new Map<string, CustomFieldConfig[]>();
+        customFieldsConfig.set(type, [{ name: 'custom', type: 'boolean', list: false }]);
 
-        const result = addCustomFields(documentNode, customFieldsConfig as CustomFields);
+        const result = addCustomFields(documentNode, customFieldsConfig);
         const fragmentDef = result.definitions[indexOfDefinition] as FragmentDefinitionNode;
         const customFieldsDef = fragmentDef.selectionSet.selections[0] as FieldNode;
         expect(fragmentDef.selectionSet.selections.length).toBe(1);

+ 13 - 7
packages/admin-ui/src/lib/core/src/shared/components/currency-input/currency-input.component.spec.ts

@@ -2,6 +2,7 @@ import { Component, Injectable } from '@angular/core';
 import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing';
 import { FormsModule } from '@angular/forms';
 import { By } from '@angular/platform-browser';
+import { ServerConfigService } from '@vendure/admin-ui/core';
 import { Type } from '@vendure/common/lib/shared-types';
 import { of } from 'rxjs';
 
@@ -12,11 +13,20 @@ import { AffixedInputComponent } from '../affixed-input/affixed-input.component'
 
 import { CurrencyInputComponent } from './currency-input.component';
 
+class MockServerConfigService {
+    serverConfig = {
+        moneyStrategyPrecision: 2,
+    };
+}
+
 describe('CurrencyInputComponent', () => {
     beforeEach(waitForAsync(() => {
         TestBed.configureTestingModule({
             imports: [FormsModule],
-            providers: [{ provide: DataService, useClass: MockDataService }],
+            providers: [
+                { provide: DataService, useClass: MockDataService },
+                { provide: ServerConfigService, useClass: MockServerConfigService },
+            ],
             declarations: [
                 TestControlValueAccessorComponent,
                 TestSimpleComponent,
@@ -131,9 +141,7 @@ describe('CurrencyInputComponent', () => {
 
 @Component({
     selector: 'vdr-test-component',
-    template: `
-        <vdr-currency-input [(ngModel)]="price"></vdr-currency-input>
-    `,
+    template: ` <vdr-currency-input [(ngModel)]="price"></vdr-currency-input> `,
 })
 class TestControlValueAccessorComponent {
     price = 123;
@@ -141,9 +149,7 @@ class TestControlValueAccessorComponent {
 
 @Component({
     selector: 'vdr-test-component',
-    template: `
-        <vdr-currency-input [value]="price" [currencyCode]="currencyCode"></vdr-currency-input>
-    `,
+    template: ` <vdr-currency-input [value]="price" [currencyCode]="currencyCode"></vdr-currency-input> `,
 })
 class TestSimpleComponent {
     currencyCode = '';

+ 15 - 3
packages/admin-ui/src/lib/core/src/shared/pipes/locale-currency.pipe.spec.ts

@@ -1,17 +1,29 @@
+import { Injectable } from '@angular/core';
+import { CurrencyService } from '@vendure/admin-ui/core';
 import { CurrencyCode, LanguageCode } from '../../common/generated-types';
 
 import { LocaleCurrencyPipe } from './locale-currency.pipe';
 
+class MockCurrencyService extends CurrencyService {
+    constructor(precision = 2) {
+        super({
+            serverConfig: {
+                moneyStrategyPrecision: 2,
+            },
+        } as any);
+    }
+}
+
 describe('LocaleCurrencyPipe', () => {
     it('GBP in English', () => {
-        const pipe = new LocaleCurrencyPipe();
+        const pipe = new LocaleCurrencyPipe(new MockCurrencyService());
         expect(pipe.transform(1, CurrencyCode.GBP, LanguageCode.en)).toBe('£0.01');
         expect(pipe.transform(123, CurrencyCode.GBP, LanguageCode.en)).toBe('£1.23');
         expect(pipe.transform(4200000, CurrencyCode.GBP, LanguageCode.en)).toBe('£42,000.00');
     });
 
     it('EUR in German', () => {
-        const pipe = new LocaleCurrencyPipe();
+        const pipe = new LocaleCurrencyPipe(new MockCurrencyService());
         expect(pipe.transform(1, CurrencyCode.EUR, LanguageCode.de)).toBe('0,01 €');
         expect(pipe.transform(123, CurrencyCode.EUR, LanguageCode.de)).toBe('1,23 €');
         expect(pipe.transform(4200000, CurrencyCode.EUR, LanguageCode.de)).toBe('42.000,00 €');
@@ -19,7 +31,7 @@ describe('LocaleCurrencyPipe', () => {
 
     // https://github.com/vendure-ecommerce/vendure/issues/1768
     it('Custom currency code in English', () => {
-        const pipe = new LocaleCurrencyPipe();
+        const pipe = new LocaleCurrencyPipe(new MockCurrencyService());
         const customCurrencyCode = 'FLTH';
         expect(pipe.transform(1, customCurrencyCode, LanguageCode.en)).toBe('0.01');
         expect(pipe.transform(123, customCurrencyCode, LanguageCode.en)).toBe('1.23');