Skip to content
Snippets Groups Projects
Select Git revision
  • e229480bc57a5d7c3692ac5c11cdcbc321f5746a
  • main default protected
  • OZG-7856_schadcode-scanner-e2e
  • OZG-7856_schadcode_scanner
  • OZG-7985-fix-sorting
  • OZG-8314-Alfa-Vorgang-Bearbeiter-Zuweisung-entfernen
  • OZG-8305-Create-webpack-sbom
  • tooltip-improvements
  • release-info
  • release-administration
  • release
  • OZG-7714-UpgradeKeycloakDependencyTo25
  • OZG-8086-Admin-Datenanfrage-erstellen
  • OZG-8086-Datenanfrage-Umbenennung
  • mongodb-7-0-16-e2e
  • OZG-6220-Bescheid-speichern-ohne-Postfach
  • OZG-7922-KeycloakOperatorExceptions
  • OZG-8142-poc-cards
  • OZG-8086-E2E
  • OZG-8086-E2E2
  • OZG-8142-ProjectionStuff
  • 1.11.0-info
  • 1.11.0-administration
  • 2.26.0-alfa
  • 1.10.0-info
  • 1.10.0-administration
  • 2.25.0-alfa
  • 1.9.0-info
  • 1.9.0-administration
  • 2.24.0-alfa
  • 1.8.0-info
  • 1.8.0-administration
  • 2.23.0-alfa
  • 1.7.0-info
  • 1.7.0-administration
  • 2.22.0-alfa
  • 1.6.0-info
  • 1.6.0-administration
  • 2.21.0-alfa
  • 1.5.0-info
  • 1.5.0-administration
41 results

index.ts

Blame
  • 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() };
    }