Select Git revision
user-settings-email-benachrichtigung.component.spec.ts
user-settings-email-benachrichtigung.component.spec.ts 2.53 KiB
import { ComponentFixture, TestBed } from '@angular/core/testing';
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, createUserSettingsResource } from 'libs/user-settings-shared/test/user-settings';
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: [MatMenuModule, MatRippleModule],
declarations: [UserSettingsEmailBenachrichtigungComponent, MatSlideToggle],
}).compileComponents();
fixture = TestBed.createComponent(
UserSettingsEmailBenachrichtigungComponent
);
component = fixture.componentInstance;
component.userSettings = createStateResource(createUserSettingsResource());
component.valueChanged = { ...<any>mock(EventEmitter), emit: jest.fn() };
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
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);
expect(result).toBeTruthy();
})
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();
})
})
});