Select Git revision
-
Sebastian Bergandy authored
Sub task: OZG-7727
Sebastian Bergandy authoredSub task: OZG-7727
postfach.service.spec.ts 4.57 KiB
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
import { SettingItem } from '@admin-client/settings-shared';
import { createEmptyStateResource, createStateResource, StateResource } from '@alfa-client/tech-shared';
import { Mock, mock } from '@alfa-client/test-utils';
import { SnackBarService } from '@alfa-client/ui';
import { Type } from '@angular/core';
import { fakeAsync, TestBed, tick } from '@angular/core/testing';
import { cold } from 'jest-marbles';
import { singleCold, singleHot } from 'libs/tech-shared/test/marbles';
import { Observable, of } from 'rxjs';
import { createPostfachResource, createPostfachSettingItem } from '../test/postfach';
import { PostfachResourceService } from './postfach-resource.service';
import { Postfach, PostfachResource } from './postfach.model';
import { PostfachService } from './postfach.service';
describe('PostfachService', () => {
let service: PostfachService;
let resourceService: Mock<PostfachResourceService>;
let snackbarService: Mock<SnackBarService>;
beforeEach(() => {
resourceService = mockResourceService(PostfachResourceService);
snackbarService = mock(SnackBarService);
TestBed.configureTestingModule({
providers: [
PostfachService,
{ provide: PostfachResourceService, useValue: resourceService },
{ provide: SnackBarService, useValue: snackbarService },
],
});
service = TestBed.inject(PostfachService);
});
it('should create', () => {
expect(service).toBeTruthy();
});
describe('get', () => {
const postfachResource: PostfachResource = createPostfachResource();
const postfachStateResource: StateResource<PostfachResource> = createStateResource(postfachResource);
it('should call resourceservice get', () => {
service.get();
expect(resourceService.get).toHaveBeenCalled();
});
it('should reurn value', () => {
resourceService.get.mockReturnValue(singleCold(postfachStateResource));
const returnedPostfachResource: Observable<StateResource<PostfachResource>> = service.get();
expect(returnedPostfachResource).toBeObservable(singleHot(postfachStateResource));
});
});
describe('save', () => {
const postfachSettingsItem: SettingItem<Postfach> = createPostfachSettingItem();
const postfachResource: PostfachResource = createPostfachResource();
const postfachStateResource: StateResource<PostfachResource> = createStateResource(postfachResource);
beforeEach(() => {});
it('should call resourceService', () => {
resourceService.save.mockReturnValue(of(postfachStateResource));
service.save(postfachSettingsItem.settingBody);
expect(resourceService.save).toHaveBeenCalledWith(postfachSettingsItem);
});
it('should return saved value', () => {
resourceService.save.mockReturnValue(singleCold(postfachStateResource, '-a'));
const savedPostfach: Observable<StateResource<PostfachResource>> = service.save(postfachResource.settingBody);
expect(savedPostfach).toBeObservable(
cold('ab', {
a: createEmptyStateResource<PostfachResource>(true),
b: postfachStateResource,
}),
);
});
it('should show message in snackbar', fakeAsync(() => {
resourceService.save.mockReturnValue(of(postfachStateResource));
const savedPostfach: Observable<StateResource<PostfachResource>> = service.save(postfachResource.settingBody);
savedPostfach.subscribe();
tick();
expect(snackbarService.showInfo).toHaveBeenCalledWith('Die Signatur wurde erfolgreich gespeichert.');
}));
});
});
export function mockResourceService<T>(service: Type<T>): Mock<T> {
return <Mock<T>>{ ...mock(service), get: jest.fn(), save: jest.fn() };
}