From d673f1b396f7787bbf958c3b903be20a3835d9ac Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Thu, 23 Sep 2021 09:28:34 +0300 Subject: [PATCH] fix theme-shared testing errors --- .../extensions/src/tests/enum.util.spec.ts | 7 +- .../extensions/src/tests/state.util.spec.ts | 5 +- .../tests/modal-container.component.spec.ts | 34 -------- .../src/lib/tests/modal.component.spec.ts | 2 +- .../src/lib/tests/modal.service.spec.ts | 87 ------------------- .../tests/sort-order-icon.component.spec.ts | 46 ---------- .../src/lib/tests/validation-utils.spec.ts | 36 +++++--- 7 files changed, 31 insertions(+), 186 deletions(-) delete mode 100644 npm/ng-packs/packages/theme-shared/src/lib/tests/modal-container.component.spec.ts delete mode 100644 npm/ng-packs/packages/theme-shared/src/lib/tests/modal.service.spec.ts delete mode 100644 npm/ng-packs/packages/theme-shared/src/lib/tests/sort-order-icon.component.spec.ts diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/enum.util.spec.ts b/npm/ng-packs/packages/theme-shared/extensions/src/tests/enum.util.spec.ts index ffdc6224a5..9a292541f1 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/tests/enum.util.spec.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/tests/enum.util.spec.ts @@ -1,5 +1,5 @@ import { ConfigStateService, LocalizationService } from '@abp/ng.core'; -import { BehaviorSubject } from 'rxjs'; +import { BehaviorSubject, of } from 'rxjs'; import { take } from 'rxjs/operators'; import { PropData } from '../lib/models/props'; import { createEnum, createEnumOptions, createEnumValueResolver } from '../lib/utils/enum.util'; @@ -109,8 +109,9 @@ describe('Enum Utils', () => { }); function createMockLocalizationService() { - const configState = new ConfigStateService(null); - configState.setState({ localization: mockL10n } as any); + const fakeAppConfigService = { get: () => of({ localization: mockL10n }) } as any; + const configState = new ConfigStateService(fakeAppConfigService); + configState.refreshAppState(); return new LocalizationService(mockSessionState, null, null, configState); } diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts b/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts index 000b4b4255..cedd632165 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts @@ -10,8 +10,9 @@ import { mapEntitiesToContributors, } from '../lib/utils/state.util'; -const configState = new ConfigStateService(null); -configState.setState(createMockState() as any); +const fakeAppConfigService = { get: () => of(createMockState()) } as any; +const configState = new ConfigStateService(fakeAppConfigService); +configState.refreshAppState(); describe('State Utils', () => { describe('#getObjectExtensionEntitiesFromStore', () => { diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal-container.component.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/modal-container.component.spec.ts deleted file mode 100644 index 9cb45127e5..0000000000 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal-container.component.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, ComponentFactoryResolver, ComponentRef } from '@angular/core'; -import { createComponentFactory, Spectator } from '@ngneat/spectator/jest'; -import { ModalContainerComponent } from '../components/modal/modal-container.component'; - -describe('ModalContainerComponent', () => { - @Component({ template: '
bar
' }) - class TestComponent {} - - let componentRef: ComponentRef; - let spectator: Spectator; - - const createComponent = createComponentFactory({ - component: ModalContainerComponent, - entryComponents: [TestComponent], - }); - - beforeEach(() => (spectator = createComponent())); - - afterEach(() => componentRef.destroy()); - - describe('#container', () => { - it('should be a ViewContainerRef', () => { - let foo = document.querySelector('div.foo'); - expect(foo).toBeNull(); - - const cfResolver = spectator.inject(ComponentFactoryResolver); - const factory = cfResolver.resolveComponentFactory(TestComponent); - componentRef = spectator.component.container.createComponent(factory); - - foo = document.querySelector('div.foo'); - expect(foo.textContent).toBe('bar'); - }); - }); -}); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts index 88ec95c700..e1f15db581 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts @@ -103,7 +103,7 @@ describe('ModalComponent', () => { xit('should close with the abpClose', async () => { await wait0ms(); - spectator.dispatchMouseEvent(spectator.component.abpClose, 'click'); + spectator.dispatchMouseEvent(spectator.query('[abpClose]'), 'click'); await wait0ms(); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.service.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.service.spec.ts deleted file mode 100644 index 0c383bc7cf..0000000000 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.service.spec.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { Component, TemplateRef, ViewChild } from '@angular/core'; -import { createComponentFactory, Spectator } from '@ngneat/spectator/jest'; -import { ModalContainerComponent } from '../components/modal/modal-container.component'; -import { ModalService } from '../services'; - -describe('ModalContainerComponent', () => { - @Component({ - template: ` - -
bar
-
- `, - }) - class TestComponent { - @ViewChild('ref', { static: true }) - template: TemplateRef; - - constructor(public modalService: ModalService) {} - } - - let spectator: Spectator; - let service: ModalService; - - const createComponent = createComponentFactory({ - component: TestComponent, - entryComponents: [ModalContainerComponent], - }); - - beforeEach(() => { - spectator = createComponent(); - service = spectator.component.modalService; - }); - - afterEach(() => { - service.getContainer().clear(); - service['containerComponentRef'].changeDetectorRef.detectChanges(); - service['containerComponentRef'].destroy(); - }); - - describe('#getContainer', () => { - it('should return the ViewContainerRef of ModalContainerComponent', () => { - let foo = document.querySelector('div.foo'); - expect(foo).toBeNull(); - - const containerRef = service.getContainer(); - const embeddedViewRef = containerRef.createEmbeddedView(spectator.component.template); - - foo = document.querySelector('div.foo'); - expect(foo).toBe(embeddedViewRef.rootNodes[0]); - expect(foo.textContent).toBe('bar'); - }); - }); - - describe('#renderTemplate', () => { - it('should render given template using the ViewContainerRef of ModalContainerComponent', () => { - let foo = document.querySelector('div.foo'); - expect(foo).toBeNull(); - - service.renderTemplate(spectator.component.template); - - foo = document.querySelector('div.foo'); - expect(foo.textContent).toBe('bar'); - }); - }); - - describe('#detectChanges', () => { - it('should call detectChanges on the containerComponentRef', () => { - const spy = jest.spyOn(service['containerComponentRef'].changeDetectorRef, 'detectChanges'); - - service.detectChanges(); - - expect(spy).toHaveBeenCalledTimes(1); - }); - }); - - describe('#clearModal', () => { - it('should call clear on the ViewContainerRef and detectChanges', () => { - const clear = jest.spyOn(service.getContainer(), 'clear'); - const detectChanges = jest.spyOn(service, 'detectChanges'); - - service.clearModal(); - - expect(clear).toHaveBeenCalledTimes(1); - expect(detectChanges).toHaveBeenCalledTimes(1); - }); - }); -}); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/sort-order-icon.component.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/sort-order-icon.component.spec.ts deleted file mode 100644 index a91f5b76c1..0000000000 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/sort-order-icon.component.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { createHostFactory, SpectatorHost } from '@ngneat/spectator/jest'; -import { SortOrderIconComponent } from '../components/sort-order-icon/sort-order-icon.component'; - -describe('SortOrderIconComponent', () => { - let spectator: SpectatorHost; - let component: SortOrderIconComponent; - const createHost = createHostFactory(SortOrderIconComponent); - - beforeEach(() => { - spectator = createHost( - '', - { - hostProps: { - selectedSortKey: '', - order: '', - }, - }, - ); - component = spectator.component; - }); - - test('should have correct icon class when selectedSortKey and sortKey are the same', () => { - const newKey = 'testKey'; - component.sort(newKey); - expect(component.selectedSortKey).toBe(newKey); - expect(component.order).toBe('asc'); - expect(component.icon).toBe('sorting_asc'); - }); - - test("shouldn't have any icon class when sortKey and selectedSortKey are different", () => { - const newKey = 'otherKey'; - component.sort(newKey); - expect(component.selectedSortKey).toBe(newKey); - expect(component.order).toBe('asc'); - expect(component.icon).toBe('sorting'); - }); - - test('should change order correctly when sort function called', () => { - component.sort('testKey'); - expect(component.order).toBe('asc'); - component.sort('testKey'); - expect(component.order).toBe('desc'); - component.sort('testKey'); - expect(component.order).toBe(''); - }); -}); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts index be212ac8dc..54e828036c 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts @@ -1,4 +1,4 @@ -import { ConfigStateService } from '@abp/ng.core'; +import { AbpApplicationConfigurationService, ConfigStateService } from '@abp/ng.core'; import { CoreTestingModule } from '@abp/ng.core/testing'; import { HttpClient } from '@angular/common/http'; import { Component, Injector } from '@angular/core'; @@ -6,6 +6,7 @@ import { Validators } from '@angular/forms'; import { createComponentFactory, Spectator } from '@ngneat/spectator/jest'; import { NgxValidateCoreModule, validatePassword } from '@ngx-validate/core'; import { OAuthService } from 'angular-oauth2-oidc'; +import { of } from 'rxjs'; import { getPasswordValidators } from '../utils'; @Component({ template: '', selector: 'abp-dummy' }) class DummyComponent {} @@ -16,6 +17,26 @@ describe('ValidationUtils', () => { component: DummyComponent, imports: [CoreTestingModule.withConfig(), NgxValidateCoreModule.forRoot()], mocks: [HttpClient, OAuthService], + providers: [ + { + provide: AbpApplicationConfigurationService, + useValue: { + get: () => + of({ + setting: { + values: { + 'Abp.Identity.Password.RequiredLength': '6', + 'Abp.Identity.Password.RequiredUniqueChars': '1', + 'Abp.Identity.Password.RequireNonAlphanumeric': 'True', + 'Abp.Identity.Password.RequireLowercase': 'True', + 'Abp.Identity.Password.RequireUppercase': 'True', + 'Abp.Identity.Password.RequireDigit': 'True', + }, + }, + }), + }, + }, + ], }); beforeEach(() => (spectator = createComponent())); @@ -23,18 +44,7 @@ describe('ValidationUtils', () => { describe('#getPasswordValidators', () => { it('should return password valdiators', () => { const configState = spectator.inject(ConfigStateService); - configState.setState({ - setting: { - values: { - 'Abp.Identity.Password.RequiredLength': '6', - 'Abp.Identity.Password.RequiredUniqueChars': '1', - 'Abp.Identity.Password.RequireNonAlphanumeric': 'True', - 'Abp.Identity.Password.RequireLowercase': 'True', - 'Abp.Identity.Password.RequireUppercase': 'True', - 'Abp.Identity.Password.RequireDigit': 'True', - }, - }, - }); + configState.refreshAppState(); const validators = getPasswordValidators(spectator.inject(Injector)); const expectedValidators = [