Skip to content
Snippets Groups Projects
Select Git revision
  • 6c5db2dd33f2813dcce0e5e54f0f55e23d075989
  • main default protected
  • OZG-8252-gitlab-pipelines
  • OZG-7856_schadcode_scanner
  • release
  • ci-pipeline
  • OZG-7526-signatur-nicht-uebernommen
  • OZG-6223-zip-download-bug
  • OZG-7367-tooltip-extension
  • OZG-7023-OZG-6956-E2E-externe-Stellen
  • OZG-6238-npm-durch-pnpm-ersetzen
  • release-admin
  • release-info
  • OZG-6700-admin-feature-toggle
  • E2E-Updates
  • OZG-7047-tooltips
  • OZG-6957-e2e-fachstellen-oe-daten
  • OZG-7006-ZuarbeitAnfragen
  • temp_OZG-7027
  • unit-tests-hotfix
  • OZG-6731-POC-keycloakResourceService-with-multiple-stateResources
  • 2.26.0
  • 2.25.0
  • 2.24.2
  • 2.24.1
  • 2.24.0
  • 2.23.0
  • 2.22.0
  • 2.21.0
  • 2.20.0
  • 2.21.0-SNAPSHOT
  • 2.19.0
  • 2.18.0
  • 2.17.1
  • 1.3.0
  • release-admin-1.3.0
  • release-info-1.3.0
  • 2.17.0
  • 2.16.0
  • 2.15.0
  • release-admin-1.1.0
41 results

environment.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() };
    }