diff --git a/Jenkinsfile b/Jenkinsfile index 3d215370126cfb8ca80d2a10a6269aafe3983b04..cc4b0bfef3628493c850e532b394f4bfcb8caaac 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -211,10 +211,10 @@ pipeline { stage ('OWASP Dependency-Check Vulnerabilities') { steps { - dependencyCheck additionalArguments: ''' - -o "./" + dependencyCheck additionalArguments: ''' + -o "./" -s "./" - -f "ALL" + -f "ALL" -d /dependency-check-data --suppression dependency-check-supressions.xml --disableKnownExploited @@ -258,7 +258,7 @@ String generateHelmChartVersion() { if (isMasterBranch()) { chartVersion += "-${env.GIT_COMMIT.take(7)}" } - else if (env.BRANCH_NAME != 'release') { + else if (!isReleaseBranch()) { chartVersion += "-${env.BRANCH_NAME}" } diff --git a/alfa-client/apps/alfa-e2e/src/components/kommentar/kommentar-list.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/kommentar/kommentar-list.e2e.component.ts index 3496fae7f1de53701ae0fc9c091cf50d5aa088da..90527f8a50f6c811c009403c29ae5c68408edecd 100644 --- a/alfa-client/apps/alfa-e2e/src/components/kommentar/kommentar-list.e2e.component.ts +++ b/alfa-client/apps/alfa-e2e/src/components/kommentar/kommentar-list.e2e.component.ts @@ -81,7 +81,7 @@ export class KommentareInVorgangE2EComponent { } } -class KommentarInVorgangE2E { +export class KommentarInVorgangE2E {//TODO: Rename to KommentarInVorgangE2EComponent private readonly locatorCreatedAt: string = 'kommentar-created-at'; diff --git a/alfa-client/apps/alfa-e2e/src/components/postfach/postfach-mail.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/postfach/postfach-mail.e2e.component.ts index 6aff70a2ee14d5a996e56e9c07c11ef568b81828..8dac3c2d81e93ba6b52e4811b9c9f783831dada1 100644 --- a/alfa-client/apps/alfa-e2e/src/components/postfach/postfach-mail.e2e.component.ts +++ b/alfa-client/apps/alfa-e2e/src/components/postfach/postfach-mail.e2e.component.ts @@ -74,7 +74,7 @@ export class PostfachMailE2EComponent { } } -export class PostfachMailListItem { +export class PostfachMailListItem {//TODO: Rename -> PostfachMailListItemE2EComponent private readonly locatorCreatedAt: string = 'mail-created-at'; private readonly locatorSubject: string = 'mail-subject'; diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list.search.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list.search.cy.ts index b292f316cf3d8d6741ff98a452a928099ecc79ce..cde003f7648db8acb2ab860b0ca2d45029d7e433 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list.search.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list.search.cy.ts @@ -35,9 +35,17 @@ import { AntragstellerE2ETestData, EingangE2ETestData, EingangHeaderE2ETestData, import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; import { backspaceOn, enterWith, exist, haveText, haveValue, notExist } from '../../../support/cypress.util'; import { UserRoleE2E, getUserManagerUserSabine, getUserSabine, getUserSabineInternalId, initUsermanagerUsers, loginAsSabine } from '../../../support/user-util'; - -// TODO initSearchIndex() needs to wait for ElastiSearch - unskip once OZG-4453 is implemented -describe.skip('VorgangList Suche', () => { +import { DirectionE2E, PostfachMailItemE2E, PostfachNachrichtMessageCodeE2E, VorgangAttachedItemE2E } from 'apps/alfa-e2e/src/model/vorgang-attached-item'; +import { WiedervorlageE2E } from 'apps/alfa-e2e/src/model/wiedervorlage'; +import { createPostfachNachrichtAttachedItem, createPostfachNachrichtReplyItem, initVorgangAttachedItem } from 'apps/alfa-e2e/src/support/vorgang-attached-item-util'; +import { createWiedervorlageItem, createWiedervorlageAttachedItem } from 'apps/alfa-e2e/src/support/wiedervorlage-util'; +import { KommentarE2E } from 'apps/alfa-e2e/src/model/kommentar'; +import { createKommentar, createKommentarAttachedItem } from 'apps/alfa-e2e/src/support/kommentar.util'; +import { WiedervorlageInVorgangE2EComponent } from 'apps/alfa-e2e/src/components/wiedervorlage/wiedervorlage-in-vorgang.e2e.component'; +import { KommentarInVorgangE2E, KommentareInVorgangE2EComponent } from 'apps/alfa-e2e/src/components/kommentar/kommentar-list.e2e.component'; +import { PostfachMailListItem } from 'apps/alfa-e2e/src/components/postfach/postfach-mail.e2e.component'; + +describe('VorgangList Suche', () => { const mainPage: MainPage = new MainPage(); const header: HeaderE2EComponent = mainPage.getHeader(); @@ -48,7 +56,7 @@ describe.skip('VorgangList Suche', () => { const vorgangPage: VorgangPage = new VorgangPage(); const vorgangHeader: VorgangDetailHeaderE2EComponent = vorgangPage.getVorgangDetailHeader(); - describe(`on user with role ${UserRoleE2E.VERWALTUNG_USER} by requestId/Eingangskennzeichen`, () => { + describe.skip(`on user with role ${UserRoleE2E.VERWALTUNG_USER} by requestId/Eingangskennzeichen`, () => { const requestId: string = faker.datatype.uuid(); const eingang: EingangE2E = { ...EingangE2ETestData, header: { ...EingangHeaderE2ETestData, requestId } } @@ -113,7 +121,7 @@ describe.skip('VorgangList Suche', () => { }) - describe('Search with hyphen', () => { + describe ('Search with hyphen', () => { it ('should find entry with hyphen', () => { doSearchWith('Vorgang-mit'); waitForSpinnerToDisappear(); @@ -122,7 +130,7 @@ describe.skip('VorgangList Suche', () => { notExist(vorgangWOHyphenInList.getRoot()); }) - it.skip('(should find with hyphen when query without hyphen) should find entry without hyphen', () => { + it ('should find entry without hyphen', () => { doSearchWith('Vorgang mit'); waitForSpinnerToDisappear(); @@ -218,6 +226,7 @@ describe.skip('VorgangList Suche', () => { it('should navigate back to list', () => { vorgangPage.getSubnavigation().getBackButton().click(); + exist(vorgangPage.getSpinner()); waitForSpinnerToDisappear(); exist(vorgangList.getRoot()); @@ -245,15 +254,53 @@ describe.skip('VorgangList Suche', () => { const vorgangName: string = 'VorgangMatchBySearch'; const vorgang: VorgangE2E = { ...createVorgang(), name: vorgangName }; - const vorgangOtherName: string = 'VorgangOther'; - const vorgangOther: VorgangE2E = { ...buildVorgang(objectIds[0], vorgangOtherName), status: VorgangStatusE2E.NEU }; + const wiedervorlageForMatchBySearch: WiedervorlageE2E = { ...createWiedervorlageItem('WiedervorlageMatchBySearch'), done: false }; + const wiedervorlageAttachedItemForMatchBySearch: VorgangAttachedItemE2E = { ...createWiedervorlageAttachedItem(objectIds[0], vorgang._id.$oid), item: wiedervorlageForMatchBySearch }; + + const kommentarForMatchBySearch: KommentarE2E = { ...createKommentar(), text: 'KommentarMatchBySearch' }; + const kommentarAttachedItemForMatchBySearch: VorgangAttachedItemE2E = { ...createKommentarAttachedItem(objectIds[1], vorgang._id.$oid ), item: kommentarForMatchBySearch} + + const postfachNachrichtForMatchBySearch: PostfachMailItemE2E = { + ...createPostfachNachrichtReplyItem(), + createdBy: getUserSabineInternalId(), + subject: 'PostfachNachrichtForMatchBySearch' + } + + const postfachNachrichtAttachedItemForMatchBySearch: VorgangAttachedItemE2E = { ...createPostfachNachrichtAttachedItem(objectIds[2], vorgang._id.$oid), item: postfachNachrichtForMatchBySearch }; const previewListItemVorgang: VorgangSearchPreviewListItemE2EComponent = vorgangSearch.getVorgangSearchPreviewListItem(vorgang.name); - const previewListItemVorgangOther: VorgangSearchPreviewListItemE2EComponent = vorgangSearch.getVorgangSearchPreviewListItem(vorgangOther.name); + + + const vorgangOtherName: string = 'VorgangOther'; + const vorgangOther: VorgangE2E = { ...buildVorgang(objectIds[3], vorgangOtherName), status: VorgangStatusE2E.NEU }; + + const wiedervorlageForOther: WiedervorlageE2E = { ...createWiedervorlageItem('WiedervorlageOther'), done: true }; + const wiedervorlageAttachedItemForOther: VorgangAttachedItemE2E = { ...createWiedervorlageAttachedItem(objectIds[4], vorgangOther._id.$oid), item: wiedervorlageForOther }; + + const kommentarForOther: KommentarE2E = { ...createKommentar(), text: 'KommentarOther' }; + const kommentarAttachedItemForOther: VorgangAttachedItemE2E = { ...createKommentarAttachedItem(objectIds[5], vorgangOther._id.$oid ), item: kommentarForOther }; + + const postfachNachrichtForOther: PostfachMailItemE2E = { + ...createPostfachNachrichtReplyItem(), + createdBy: getUserSabineInternalId(), + subject: 'PostfachNachrichtOther' + } + + const postfachNachrichtAttachedItemForOther: VorgangAttachedItemE2E = { ...createPostfachNachrichtAttachedItem(objectIds[6], vorgangOther._id.$oid), item: postfachNachrichtForOther }; + + const previewListItemVorgangOther: VorgangSearchPreviewListItemE2EComponent = vorgangSearch.getVorgangSearchPreviewListItem(vorgangOther.name); + before(() => { - initVorgaenge([vorgang, vorgangOther]) - initSearchIndex([vorgang, vorgangOther]) + initVorgaenge([vorgang, vorgangOther]); + initVorgangAttachedItem([ + wiedervorlageAttachedItemForMatchBySearch, wiedervorlageAttachedItemForOther, + kommentarAttachedItemForMatchBySearch, + kommentarAttachedItemForOther, + postfachNachrichtAttachedItemForMatchBySearch, + postfachNachrichtAttachedItemForOther + ]); + initSearchIndex([vorgang, vorgangOther]); loginAsSabine(); @@ -317,6 +364,24 @@ describe.skip('VorgangList Suche', () => { exist(vorgangPage.getVorgangDetailHeader().getRoot()); haveText(vorgangPage.getVorgangDetailHeader().getName(), vorgangOtherName); }) + + it('should have wiedervorlage', () => { + const wiedervorlage: WiedervorlageInVorgangE2EComponent = vorgangPage.getWiedervorlagenContainer().getWiedervorlage('WiedervorlageOther'); + + exist(wiedervorlage.getRoot()); + }) + + it('should have kommentar', () => { + const kommentar: KommentarInVorgangE2E = vorgangPage.getKommentarContainer().getKommentar('KommentarOther'); + + exist(kommentar.getRoot()); + }) + + it('should have postfachNachricht', () => { + const postfachNachricht: PostfachMailListItem = vorgangPage.getPostfachMailcontainer().getListItem('PostfachNachrichtOther'); + + exist(postfachNachricht.getRoot()); + }) }) describe('clear preview list if clicking clear button', () => { @@ -334,12 +399,11 @@ describe.skip('VorgangList Suche', () => { }) }) - describe.skip('(Wird in OZG-4711 gefixt) clear preview list on less than 3 character', () => { + describe.skip('clear preview list on less than 3 character', () => { it('should hide preview list', () => { vorgangSearch.getInput().clear().type(vorgangName.substring(0, 3), { delay: 220 }); - exist(vorgangSearch.getVorgangSearchPreviewList()); exist(previewListItemVorgang.getRoot()); exist(previewListItemVorgangOther.getRoot()); @@ -348,19 +412,9 @@ describe.skip('VorgangList Suche', () => { notExist(vorgangSearch.getVorgangSearchPreviewList()); }) }) - - describe('navigate back to vorgang list', () => { - - it('should navigate to vorgang list', () => { - vorgangPage.getSubnavigation().getBackButton().click(); - - exist(vorgangList.getRoot()); - }) - - }) }) - describe('filter by all possible fields', () => { + describe.skip('filter by all possible fields', () => { const NO_MATCH: string = 'no match'; @@ -475,7 +529,7 @@ describe.skip('VorgangList Suche', () => { notExist(byRequestId.getRoot()); }) - it.skip('(Wird in OZG-4711 gefixt) should show result by vorgangnummer', () => { + it('should show result by vorgangnummer', () => { doSearchWith(vorgangNummerToMatch); waitForSpinnerToDisappear(); diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/kommentar/kommentar.json b/alfa-client/apps/alfa-e2e/src/fixtures/kommentar/kommentar.json index 3e0833b92c89f5e1b0b878a1d15aeb436fdc15bf..e8440df0ff024a362f4396fe58886b89932354e5 100644 --- a/alfa-client/apps/alfa-e2e/src/fixtures/kommentar/kommentar.json +++ b/alfa-client/apps/alfa-e2e/src/fixtures/kommentar/kommentar.json @@ -1,7 +1,5 @@ { - "createdAt": { - "$date": "2021-03-17T08:43:52.741Z" - }, - "createdBy": "Karl Kommentar", + "createdAt": "2024-01-10T12:57:35Z[UTC]", + "createdBy": "SetInCode", "text": "Test text to test the test text test" } \ No newline at end of file diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/wiedervorlage/wiedervorlage.json b/alfa-client/apps/alfa-e2e/src/fixtures/wiedervorlage/wiedervorlage.json index 3a78b73740ed97e15cf1a194a4839db59fc16597..70bf44468acee58e5d87ae4b5dd4c31dede7e894 100644 --- a/alfa-client/apps/alfa-e2e/src/fixtures/wiedervorlage/wiedervorlage.json +++ b/alfa-client/apps/alfa-e2e/src/fixtures/wiedervorlage/wiedervorlage.json @@ -2,7 +2,7 @@ "version": 0, "vorgangId": "602566a807bb665df9a86111", "createdAt": "2021-03-17T08:43:52.000Z[UTC]", - "createdBy": "1063f1cb-95ef-48c5-b746-cec6f28e635d", + "createdBy": "SetInCode", "betreff": "Wiedervorlage", "beschreibung": "Dies ist ein Test", "frist": "2020-01-01", diff --git a/alfa-client/apps/alfa-e2e/src/model/vorgang-attached-item.ts b/alfa-client/apps/alfa-e2e/src/model/vorgang-attached-item.ts index b55fc34594c3f5eed5a0d3ab0e6d91c76f32efee..f4f284aff0f94e21acb50b7d7042d43d1cc6de10 100644 --- a/alfa-client/apps/alfa-e2e/src/model/vorgang-attached-item.ts +++ b/alfa-client/apps/alfa-e2e/src/model/vorgang-attached-item.ts @@ -21,6 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { KommentarE2E } from './kommentar'; import { LoeschAnforderungE2E } from './loesch-anforderung'; import { ObjectIdE2E } from './util'; import { WiedervorlageE2E } from './wiedervorlage'; @@ -33,6 +34,7 @@ export enum VorgangAttachedItemClientE2E { export enum VorgangAttachedItemNameE2E { POSTFACH_NACHRICHT = 'PostfachMail', WIEDERVORLAGE = 'Wiedervorlage', + KOMMENTAR = 'Kommentar', LOESCH_ANFORDERUNG = 'LoeschAnforderung', } @@ -42,7 +44,7 @@ export class VorgangAttachedItemE2E { client: VorgangAttachedItemClientE2E; vorgangId: string; itemName: VorgangAttachedItemNameE2E; - item: PostfachMailItemE2E | WiedervorlageE2E | LoeschAnforderungE2E; + item: PostfachMailItemE2E | WiedervorlageE2E | LoeschAnforderungE2E | KommentarE2E; deleted: boolean; _class: string; } diff --git a/alfa-client/apps/alfa-e2e/src/support/kommentar.util.ts b/alfa-client/apps/alfa-e2e/src/support/kommentar.util.ts index e1b96f660064425830fd92b8e5893f893a111477..fb3554a7f4243ddbffc928cf5dfd13af14ba547a 100644 --- a/alfa-client/apps/alfa-e2e/src/support/kommentar.util.ts +++ b/alfa-client/apps/alfa-e2e/src/support/kommentar.util.ts @@ -22,9 +22,28 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { KommentarE2E } from '../model/kommentar'; +import { VorgangAttachedItemClientE2E, VorgangAttachedItemE2E, VorgangAttachedItemNameE2E } from '../model/vorgang-attached-item'; +import { getUserSabineInternalId } from './user-util'; +import { VORGANG_ATTACHED_ITEM_CLASS } from './vorgang-attached-item-util'; const kommentarFixture: KommentarE2E = require('../fixtures/kommentar/kommentar.json'); export function createKommentar(): KommentarE2E { - return kommentarFixture; + return { ...kommentarFixture, createdBy: getUserSabineInternalId() }; +} + +export function createKommentarAttachedItem(_id: string, vorgangId: string): VorgangAttachedItemE2E { + return { + _id: { $oid: _id }, + version: 0, + vorgangId, + client: VorgangAttachedItemClientE2E.ALFA, + itemName: VorgangAttachedItemNameE2E.KOMMENTAR, + item: { + ...createKommentar(), + vorgangId + }, + deleted: false, + _class: VORGANG_ATTACHED_ITEM_CLASS + }; } \ No newline at end of file diff --git a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts index 3b69c644dade6cdcc196569aad14377ff56e3263..e70ab295d76c1406d39d653e0cbecf2708fd53f3 100644 --- a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts +++ b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts @@ -21,13 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { HttpErrorResponse } from '@angular/common/http'; -import { UrlSegment } from '@angular/router'; import { ApiRootResource } from '@alfa-client/api-root-shared'; import { BinaryFileListResource } from '@alfa-client/binary-file-shared'; import { CommandListResource, CommandOrder, CommandResource, CreateCommand } from '@alfa-client/command-shared'; import { RouteData } from '@alfa-client/navigation-shared'; import { ApiError, ApiErrorAction, EMPTY_ARRAY, EMPTY_STRING, StateResource, createEmptyStateResource, createStateResource } from '@alfa-client/tech-shared'; +import { HttpErrorResponse } from '@angular/common/http'; +import { UrlSegment } from '@angular/router'; import { Action } from '@ngrx/store'; import { TypedAction } from '@ngrx/store/src/models'; import { Resource, ResourceUri } from '@ngxp/rest'; @@ -383,6 +383,24 @@ describe('Vorgang Reducer', () => { expect(state.vorgangWithEingang.resource).toStrictEqual(vorgangWithEingang); }) + + it('should set reload representationList', () => { + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); + const action = VorgangActions.loadVorgangWithEingangSuccess({ vorgangWithEingang }); + + const state: VorgangState = reducer(initialState, action); + + expect(state.representationList.reload).toBeTruthy(); + }) + + it('should set reload attachmentList', () => { + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); + const action = VorgangActions.loadVorgangWithEingangSuccess({ vorgangWithEingang }); + + const state: VorgangState = reducer(initialState, action); + + expect(state.attachmentList.reload).toBeTruthy(); + }) }) describe('on "setReloadVorgangWithEingang" action', () => { @@ -907,19 +925,7 @@ describe('Vorgang Reducer', () => { it('should set reload to vorgangWithEingang', () => { const state: VorgangState = Reducer.updateByRouteData(initialState, routeData); - expect(state.vorgangWithEingang.reload).toBeTruthy(); - }) - - it('should clear attachmentList', () => { - const state: VorgangState = Reducer.updateByRouteData(initialState, routeData); - - expect(state.attachmentList).toEqual(createEmptyStateResource()); - }) - - it('should clear representationList', () => { - const state: VorgangState = Reducer.updateByRouteData(initialState, routeData); - - expect(state.representationList).toEqual(createEmptyStateResource()); + expect(state.vorgangWithEingang).toEqual(createEmptyStateResource()); }) it('should clear forwardPendingCommand', () => { diff --git a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts index 4e59588e6f4e4f5278b88c7ea697764f585c0187..8f46f23cfe60e9f62f37b10c19aac25d7d7dcd84 100644 --- a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts +++ b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts @@ -198,6 +198,8 @@ const vorgangReducer: ActionReducer<VorgangState, Action> = createReducer( on(VorgangActions.loadVorgangWithEingangSuccess, (state: VorgangState, props: VorgangWithEingangAction): VorgangState => ({ ...state, vorgangWithEingang: createStateResource(props.vorgangWithEingang), + representationList: { ...state.representationList, reload: true }, + attachmentList: { ...state.attachmentList, reload: true } })), on(VorgangActions.loadVorgangWithEingangFailure, (state: VorgangState, props: ApiErrorAction): VorgangState => ({ ...state, @@ -372,9 +374,7 @@ function prepareStateOnVorgangListNavigation(state: VorgangState, routeData: Rou function prepareStateOnVorgangNavigation(state: VorgangState): VorgangState { return {...state, - vorgangWithEingang: { ...state.vorgangWithEingang, reload: true }, - attachmentList: createEmptyStateResource(), - representationList: createEmptyStateResource(), + vorgangWithEingang: createEmptyStateResource(), forwardPendingCommand: createEmptyStateResource(), sendPostfachNachrichtPendingCommand: createEmptyStateResource() } diff --git a/alfa-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts b/alfa-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts index a8bb0fc01aabb33bd31bf355eae54e03dc7a9707..737a87bdb0a26e836ec3b24145173747495e17b3 100644 --- a/alfa-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts +++ b/alfa-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts @@ -144,17 +144,17 @@ describe('WiedervorlageService', () => { const wiedervorlageListResource: WiedervorlageListResource = createWiedervorlageListResource(); const wiedervorlageListStateResource: StateResource<WiedervorlageListResource> = createStateResource(wiedervorlageListResource); - it('should return initial values', () => { + it('should return initial value', () => { service.wiedervorlageList$.asObservable = jest.fn().mockReturnValue(hot('-a', { a: wiedervorlageListResource })); const result = service.getWiedervorlageListByGivenVorgang(vorgang); - expect(result).toBeObservable(cold('ab', { a: createEmptyStateResource(true), b: wiedervorlageListResource })); + expect(result).toBeObservable(cold('-a', { a: wiedervorlageListResource })); }) it('should load wiedervorlagen by vorgang if required', () => { service.loadWiedervorlagenByVorgang = jest.fn(); - service.wiedervorlageList$.asObservable = jest.fn().mockReturnValue(of(createEmptyStateResource())); + service.wiedervorlageList$.next(createEmptyStateResource()); service.getWiedervorlageListByGivenVorgang(vorgang).subscribe(); @@ -163,7 +163,7 @@ describe('WiedervorlageService', () => { it('should NOT load wiedervorlagen by vorgang if already loaded', () => { service.loadWiedervorlagenByVorgang = jest.fn(); - service.wiedervorlageList$.asObservable = jest.fn().mockReturnValue(of(wiedervorlageListStateResource)); + service.wiedervorlageList$.next(wiedervorlageListStateResource); service.getWiedervorlageListByGivenVorgang(vorgang).subscribe(); diff --git a/alfa-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.ts b/alfa-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.ts index 8b6e371c039d27e693bb0c51e22d86351c4503e7..ecb26ca5932e88f29d05b33b826df8dbeb0fdabf 100644 --- a/alfa-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.ts +++ b/alfa-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.ts @@ -21,14 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Injectable, OnDestroy } from '@angular/core'; -import { Params } from '@angular/router'; import { BinaryFileListResource, BinaryFileService } from '@alfa-client/binary-file-shared'; import { Command, CommandOrder, CommandResource, CommandService, CreateCommand, isDone } from '@alfa-client/command-shared'; import { NavigationService } from '@alfa-client/navigation-shared'; import { StateResource, createEmptyStateResource, createStateResource, decodeUrlFromEmbedding, doIfLoadingRequired, hasError, isNotNull, isNotUndefined, replacePlaceholder } from '@alfa-client/tech-shared'; import { SnackBarService } from '@alfa-client/ui'; import { VorgangHeaderLinkRel, VorgangResource, VorgangService } from '@alfa-client/vorgang-shared'; +import { Injectable, OnDestroy } from '@angular/core'; +import { Params } from '@angular/router'; import { ResourceUri, getUrl, hasLink } from '@ngxp/rest'; import { isEqual, isNil, isNull, isUndefined } from 'lodash-es'; import { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs'; @@ -83,10 +83,8 @@ export class WiedervorlageService implements OnDestroy { } public getWiedervorlageListByGivenVorgang(vorgangResource: VorgangResource): Observable<StateResource<WiedervorlageListResource>> { - return this.wiedervorlageList$.asObservable().pipe( - tap((wiedervorlageList) => doIfLoadingRequired(wiedervorlageList, () => this.loadWiedervorlagenByVorgang(vorgangResource))), - startWith(createEmptyStateResource<WiedervorlageListResource>(true)) - ) + doIfLoadingRequired(this.wiedervorlageList$.value, () => this.loadWiedervorlagenByVorgang(vorgangResource)); + return this.wiedervorlageList$.asObservable(); } loadWiedervorlagenByVorgang(vorgangResource: VorgangResource): void {