diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts index 37ee685e930d77d35c7b8c4994886c7b0e99ef24..8417137108330ec18fd817f11a55d134e9e47f24 100644 --- a/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts +++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts @@ -25,11 +25,7 @@ import { ListResource, StateResource } from '@alfa-client/tech-shared'; import { HttpErrorResponse } from '@angular/common/http'; import { Action } from '@ngrx/store'; import { Resource, ResourceUri } from '@ngxp/rest'; -import { - CommandOrder, - CommandResource, - CreateCommand, -} from '../../../command-shared/src/lib/command.model'; +import { CommandOrder, CommandResource, CreateCommand } from '../../../command-shared/src/lib/command.model'; export interface Vorgang { status: VorgangStatus; @@ -41,6 +37,7 @@ export interface Vorgang { hasPostfachNachricht: boolean; hasNewPostfachNachricht: boolean; antragBewilligt?: boolean; + archiving: boolean; } export interface VorgangWithEingang extends Vorgang { diff --git a/alfa-client/libs/vorgang-shared/test/vorgang.ts b/alfa-client/libs/vorgang-shared/test/vorgang.ts index dc541c981705436d19a3ed70bc8d6d8f67fcaaf4..9eadf4c36b6fbb1e06bab1d81880a2d386db0246 100644 --- a/alfa-client/libs/vorgang-shared/test/vorgang.ts +++ b/alfa-client/libs/vorgang-shared/test/vorgang.ts @@ -57,6 +57,7 @@ export function createVorgang(): Vorgang { hasPostfachNachricht: faker.datatype.boolean(), hasNewPostfachNachricht: faker.datatype.boolean(), antragBewilligt: false, + archiving: false, }; } @@ -163,9 +164,7 @@ function createByStatus(): ByStatus { }; } -export function createVorgangWithEingangResource( - linkRelations: string[] = [], -): VorgangWithEingangResource { +export function createVorgangWithEingangResource(linkRelations: string[] = []): VorgangWithEingangResource { return toResource(createVorgangWithEingang(), linkRelations); } diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.html index 749aa184c2ff10c09ac72e425cba697649d08de1..8da0edfd4e7c0cce005e53e94a060b699dd6436f 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.html @@ -1 +1,4 @@ -<p>vorgang-archive-status works!</p> +<div class="flex gap-1 items-center"> + <ods-archive-icon class="fill-black"/> + <span>in Archivierung</span> +</div> diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.spec.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.spec.ts index 93caa47535dc2c174b9dd6067dfaa225e04baa95..69aab5616df025543a0f6e55bafea885c8ca8aa8 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.spec.ts +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.spec.ts @@ -1,19 +1,25 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { Vorgang } from '@alfa-client/vorgang-shared'; +import { ArchiveIconComponent } from '@ods/system'; +import { createVorgang } from '../../../../../../../vorgang-shared/test/vorgang'; import { VorgangArchiveStatusComponent } from './vorgang-archive-status.component'; describe('VorgangArchiveStatusComponent', () => { let component: VorgangArchiveStatusComponent; let fixture: ComponentFixture<VorgangArchiveStatusComponent>; + const vorgang: Vorgang = createVorgang(); + beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [VorgangArchiveStatusComponent] - }) - .compileComponents(); + imports: [ArchiveIconComponent], + declarations: [VorgangArchiveStatusComponent], + }).compileComponents(); fixture = TestBed.createComponent(VorgangArchiveStatusComponent); component = fixture.componentInstance; + component.vorgang = vorgang; fixture.detectChanges(); }); diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.ts index 074f14f244e6b29aec6b1522d59fcfe04cf1b646..b47eafe5b016228c6a36609e2a09a82e8efdeeec 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.ts +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-archive-status/vorgang-archive-status.component.ts @@ -1,7 +1,10 @@ -import { Component } from '@angular/core'; +import { Vorgang } from '@alfa-client/vorgang-shared'; +import { Component, Input } from '@angular/core'; @Component({ selector: 'alfa-vorgang-archive-status', templateUrl: './vorgang-archive-status.component.html', }) -export class VorgangArchiveStatusComponent {} +export class VorgangArchiveStatusComponent { + @Input() vorgang: Vorgang; +} diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html index b7e362147f00bd68bec7cf1f850f8e37a8eb7c58..de7460f9be79a5989e1bcd424c1603b3bc495a8b 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html @@ -31,7 +31,7 @@ > <div class="flex grow flex-row gap-4"> <div class="flex flex-1 flex-col gap-4 lg:flex-row"> - <div class="flex flex-none flex-row lg:w-32 lg:flex-col"> + <div class="flex flex-none flex-row lg:w-40 lg:flex-col"> <div class="flex items-center gap-3"> <alfa-vorgang-status-dot [status]="vorgang.status" diameter="12" data-test-class="status-dot"></alfa-vorgang-status-dot> <alfa-vorgang-status-text @@ -47,6 +47,13 @@ data-test-id="vorgang-list-item-bescheid-status" ></alfa-vorgang-bescheid-status> </div> + <div class="ml-6 flex text-sm lg:mt-3"> + <alfa-vorgang-archive-status + *ngIf="vorgang.archiving === true" + [vorgang]="vorgang" + data-test-id="vorgang-list-item-archive-status" + ></alfa-vorgang-archive-status> + </div> </div> <div class="ml-6 flex flex-1 flex-col gap-1 lg:ml-0"> <div data-test-id="name" class="break-all text-base font-medium"> diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts index 2d5a4428d2b7cdc89475df42c97f125c212d0afe..19cf045603cf83efe2acddffaabc484dd7c63f2c 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts @@ -55,6 +55,7 @@ import { createUserProfileResource } from 'libs/user-profile-shared/test/user-pr import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent, MockModule } from 'ng-mocks'; import { of } from 'rxjs'; +import { VorgangArchiveStatusComponent } from './vorgang-archive-status/vorgang-archive-status.component'; import { VorgangBescheidStatusComponent } from './vorgang-bescheid-status/vorgang-bescheid-status.component'; import { VorgangCreatedAtComponent } from './vorgang-created-at/vorgang-created-at.component'; import { VorgangListItemComponent } from './vorgang-list-item.component'; @@ -71,6 +72,7 @@ describe('VorgangListItemComponent', () => { const user: string = getDataTestIdOf('vorgang-user-icon'); const postfachStatus: string = getDataTestClassOf('postfach-icon'); const bescheidStatus: string = getDataTestIdOf('vorgang-list-item-bescheid-status'); + const archiveStatus: string = getDataTestIdOf('vorgang-list-item-archive-status'); const userProfile: UserProfileResource = createUserProfileResource(); @@ -94,6 +96,7 @@ describe('VorgangListItemComponent', () => { MockComponent(UserProfileInVorgangListItemContainerComponent), MockComponent(VorgangCreatedAtComponent), MockComponent(VorgangBescheidStatusComponent), + MockComponent(VorgangArchiveStatusComponent), MockModule(MatTooltipModule), ], providers: [ @@ -119,9 +122,7 @@ describe('VorgangListItemComponent', () => { describe('user profile', () => { beforeEach(() => { component.buildAriaLabel = jest.fn(); - component.userProfileService.getAssignedUserProfile = jest - .fn() - .mockReturnValue(of(createStateResource(userProfile))); + component.userProfileService.getAssignedUserProfile = jest.fn().mockReturnValue(of(createStateResource(userProfile))); }); describe('vorgang has no "assigned to" link', () => { @@ -163,10 +164,7 @@ describe('VorgangListItemComponent', () => { describe('bearbeiter/user-icon', () => { it('should be visible', () => { - component.vorgang = createVorgangResource([ - VorgangHeaderLinkRel.VORGANG_WITH_EINGANG, - VorgangHeaderLinkRel.ASSIGN, - ]); + component.vorgang = createVorgangResource([VorgangHeaderLinkRel.VORGANG_WITH_EINGANG, VorgangHeaderLinkRel.ASSIGN]); fixture.detectChanges(); const userElement = fixture.nativeElement.querySelector(user); @@ -186,10 +184,7 @@ describe('VorgangListItemComponent', () => { describe('mail icon', () => { beforeEach(() => { - component.vorgang = createVorgangResource([ - VorgangHeaderLinkRel.VORGANG_WITH_EINGANG, - VorgangHeaderLinkRel.POSTFACH_MAILS, - ]); + component.vorgang = createVorgangResource([VorgangHeaderLinkRel.VORGANG_WITH_EINGANG, VorgangHeaderLinkRel.POSTFACH_MAILS]); }); it('should show mail icon if Vorgang has new Postfachnachricht', () => { @@ -240,6 +235,26 @@ describe('VorgangListItemComponent', () => { }); }); + describe('Archive-Status', () => { + it('should show archive status if vorgang has archiving true', () => { + component.vorgang.archiving = true; + fixture.detectChanges(); + + const element = getElementFromFixture(fixture, archiveStatus); + + expect(element).toBeInstanceOf(HTMLElement); + }); + + it('should not show archive status if vorgang has archiving false', () => { + component.vorgang.archiving = false; + fixture.detectChanges(); + + const element = getElementFromFixture(fixture, archiveStatus); + + expect(element).not.toBeInstanceOf(HTMLElement); + }); + }); + describe('buildAriaLabel', () => { beforeEach(() => { component.getWiedervorlageText = jest.fn(); @@ -270,10 +285,7 @@ describe('VorgangListItemComponent', () => { }); it('should get Wiedervorlage', () => { - component.vorgang = createVorgangResource([ - VorgangHeaderLinkRel.VORGANG_WITH_EINGANG, - VorgangHeaderLinkRel.WIEDERVORLAGEN, - ]); + component.vorgang = createVorgangResource([VorgangHeaderLinkRel.VORGANG_WITH_EINGANG, VorgangHeaderLinkRel.WIEDERVORLAGEN]); component.buildAriaLabel(); @@ -282,10 +294,7 @@ describe('VorgangListItemComponent', () => { it('should not get Wiedervorlage if no nextFrist but LinkRel.WIEDERVORLAGEN', () => { component.vorgang = { - ...createVorgangResource([ - VorgangHeaderLinkRel.VORGANG_WITH_EINGANG, - VorgangHeaderLinkRel.WIEDERVORLAGEN, - ]), + ...createVorgangResource([VorgangHeaderLinkRel.VORGANG_WITH_EINGANG, VorgangHeaderLinkRel.WIEDERVORLAGEN]), nextFrist: null, }; @@ -393,9 +402,7 @@ describe('VorgangListItemComponent', () => { it('should return assigned user text', () => { const result: string = component.getUserText(userProfile); - expect(result).toBe( - `Aktuell zugewiesener Nutzer: ${userProfile.firstName} ${userProfile.lastName}`, - ); + expect(result).toBe(`Aktuell zugewiesener Nutzer: ${userProfile.firstName} ${userProfile.lastName}`); }); }); }); diff --git a/alfa-client/libs/vorgang/src/lib/vorgang.module.ts b/alfa-client/libs/vorgang/src/lib/vorgang.module.ts index a3940a605db09a43ab81aa12dc1bb4d702dc3031..4a58042a60125194bd7fd2b2b4953188c1f4aa28 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang.module.ts +++ b/alfa-client/libs/vorgang/src/lib/vorgang.module.ts @@ -34,7 +34,7 @@ import { NgModule } from '@angular/core'; import { MatButtonToggleModule } from '@angular/material/button-toggle'; import { RouterModule, Routes } from '@angular/router'; import { ButtonToggleGroupComponent } from '@ods/component'; -import { ButtonToggleComponent } from '@ods/system'; +import { ArchiveIconComponent, ButtonToggleComponent } from '@ods/system'; import { vorgangFilterViewGuard } from './vorgang-filter-view.guard'; import { VorgangListContainerComponent } from './vorgang-list-container/vorgang-list-container.component'; import { EmptyListComponent } from './vorgang-list-container/vorgang-list/empty-list/empty-list.component'; @@ -181,6 +181,7 @@ const routes: Routes = [ HintModule, ButtonToggleComponent, ButtonToggleGroupComponent, + ArchiveIconComponent, ], declarations: [ VorgangListComponent,