diff --git a/goofy-client/libs/user-settings/src/lib/user-settings-container/user-settings-email-benachrichtigung/user-settings-email-benachrichtigung.component.html b/goofy-client/libs/user-settings/src/lib/user-settings-container/user-settings-email-benachrichtigung/user-settings-email-benachrichtigung.component.html index e794cd37026aa4b2f3a724e91fbd2e5ac0f99768..90823c5225e8680fc0f3c4e8f2d59ada0db9366e 100644 --- a/goofy-client/libs/user-settings/src/lib/user-settings-container/user-settings-email-benachrichtigung/user-settings-email-benachrichtigung.component.html +++ b/goofy-client/libs/user-settings/src/lib/user-settings-container/user-settings-email-benachrichtigung/user-settings-email-benachrichtigung.component.html @@ -1,5 +1,5 @@ <ng-container *ngIf="(userSettings$ | async)?.resource as userSettings"> - <mat-slide-toggle + <mat-slide-toggle data-test-id="toggle-notifications-send-for" color="primary" matTooltip="Benachrichtigung per E-Mail bei Eingang eines Antrags" [checked]="getToggleStatus(userSettings)" diff --git a/goofy-client/libs/user-settings/src/lib/user-settings-container/user-settings-email-benachrichtigung/user-settings-email-benachrichtigung.component.spec.ts b/goofy-client/libs/user-settings/src/lib/user-settings-container/user-settings-email-benachrichtigung/user-settings-email-benachrichtigung.component.spec.ts index 77f1f938ff3059e27f3de7a51493395c49ba9f61..84969ed2659f95fb7dd76e3fd5eb56be1719b2f2 100644 --- a/goofy-client/libs/user-settings/src/lib/user-settings-container/user-settings-email-benachrichtigung/user-settings-email-benachrichtigung.component.spec.ts +++ b/goofy-client/libs/user-settings/src/lib/user-settings-container/user-settings-email-benachrichtigung/user-settings-email-benachrichtigung.component.spec.ts @@ -1,23 +1,36 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { UiModule } from '@goofy-client/ui'; +import { MatRippleModule } from '@angular/material/core'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatSlideToggle } from '@angular/material/slide-toggle'; +import { createStateResource } from '@goofy-client/tech-shared'; + +import { dispatchEventFromFixture, mock } from '@goofy-client/test-utils'; +import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { NotificationsSendFor } from 'libs/user-settings-shared/src/lib/user-settings.model'; -import { createUserSettings } from 'libs/user-settings-shared/test/user-settings'; +import { createUserSettings, createUserSettingsResource } from 'libs/user-settings-shared/test/user-settings'; +import { of } from 'rxjs'; +import { EventEmitter } from 'stream'; import { UserSettingsEmailBenachrichtigungComponent } from './user-settings-email-benachrichtigung.component'; describe('UserSettingsEmailBenachrichtigungComponent', () => { let component: UserSettingsEmailBenachrichtigungComponent; let fixture: ComponentFixture<UserSettingsEmailBenachrichtigungComponent>; + const toggle: string = getDataTestIdOf('toggle-notifications-send-for'); + const userSettings = createUserSettings(); + beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [UiModule], - declarations: [UserSettingsEmailBenachrichtigungComponent], + imports: [MatMenuModule, MatRippleModule], + declarations: [UserSettingsEmailBenachrichtigungComponent, MatSlideToggle], }).compileComponents(); fixture = TestBed.createComponent( UserSettingsEmailBenachrichtigungComponent ); component = fixture.componentInstance; + component.userSettings$ = of(createStateResource(createUserSettingsResource())); + component.valueChanged = { ...<any>mock(EventEmitter), emit: jest.fn() }; fixture.detectChanges(); }); @@ -25,9 +38,14 @@ describe('UserSettingsEmailBenachrichtigungComponent', () => { expect(component).toBeTruthy(); }); - describe('toogle status', () => { - const userSettings = createUserSettings(); - it('should be checked if userSettings.notificationsSendFor is ALL', () => { + it('should show toggle', () => { + const element = fixture.nativeElement.querySelector(toggle); + + expect(element).toBeInstanceOf(HTMLElement); + }) + + describe('toggle status', () => { + it('should be set if userSettings.notificationsSendFor is ALL', () => { userSettings.notificationsSendFor = NotificationsSendFor.ALL; const result: boolean = component.getToggleStatus(userSettings); @@ -35,12 +53,18 @@ describe('UserSettingsEmailBenachrichtigungComponent', () => { expect(result).toBeTruthy(); }) - it('should not be checked if userSettings.notificationsSendFor is NONE', () => { + it('should not be set if userSettings.notificationsSendFor is NONE', () => { userSettings.notificationsSendFor = NotificationsSendFor.NONE; const result: boolean = component.getToggleStatus(userSettings); expect(result).toBeFalsy(); }) + + it('should emit value if toggled', () => { + dispatchEventFromFixture(fixture, toggle, 'change'); + + expect(component.valueChanged.emit).toHaveBeenCalled(); + }) }) });