diff --git a/alfa-client/apps/admin/src/app/app.component.html b/alfa-client/apps/admin/src/app/app.component.html index 9dd7a6ab0f9a470fac3f834887e7f627bd832c66..b8a2a57f0984c15be178bbfe6c5a1be5dbcbd12a 100644 --- a/alfa-client/apps/admin/src/app/app.component.html +++ b/alfa-client/apps/admin/src/app/app.component.html @@ -17,7 +17,7 @@ <ods-navbar data-test-id="navigation"> <ng-container *ngIf="apiRoot | hasLink: ApiRootLinkRel.CONFIGURATION"> <ng-container *ngIf="environment.features.benutzerRollen"> - <ods-nav-item data-test-id="benutzer-und-rollen-navigation" caption="Benutzer & Rollen" path="/benutzer_und_rollen"> + <ods-nav-item data-test-id="users-roles-navigation" caption="Benutzer & Rollen" path="/benutzer_und_rollen"> <ods-users-icon class="stroke-text" icon /> </ods-nav-item> <hr /> diff --git a/alfa-client/apps/admin/src/app/app.component.spec.ts b/alfa-client/apps/admin/src/app/app.component.spec.ts index 15f471fb15d9b1151896620728ea8098c837b334..212128e52b594d9b397ac8fffa3893dc0b07bfac 100644 --- a/alfa-client/apps/admin/src/app/app.component.spec.ts +++ b/alfa-client/apps/admin/src/app/app.component.spec.ts @@ -38,7 +38,7 @@ describe('AppComponent', () => { const buildInfoSelector: string = getDataTestIdOf('build-info'); const userProfileButtonSelector: string = getDataTestIdOf('user-profile-button'); const navigationSelector: string = getDataTestIdOf('navigation'); - const benutzerUndRollenNavigationSelector: string = getDataTestIdOf('benutzer-und-rollen-navigation'); + const usersRolesNavigationSelector: string = getDataTestIdOf('users-roles-navigation'); const postfachNavigationSelector: string = getDataTestIdOf('postfach-navigation'); const organisationsEinheitenNavigationSelector: string = getDataTestIdOf('organisations-einheiten-navigation'); const logoLink: string = getDataTestIdOf('logo-link'); @@ -234,14 +234,14 @@ describe('AppComponent', () => { component.environment.features.benutzerRollen = true; fixture.detectChanges(); - existsAsHtmlElement(fixture, benutzerUndRollenNavigationSelector); + existsAsHtmlElement(fixture, usersRolesNavigationSelector); }); it('should not show benutzer & rollen if benutzerRollen feature toggle is false', () => { component.environment.features.benutzerRollen = false; fixture.detectChanges(); - notExistsAsHtmlElement(fixture, benutzerUndRollenNavigationSelector); + notExistsAsHtmlElement(fixture, usersRolesNavigationSelector); }); it('should show organisationsEinheiten if link in apiRoot exists', () => { diff --git a/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.html b/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.html index 2449a303b186022b68d062f7b59ba73c5cb6a790..71a2c7edd3ad77f56b5536cf419e1ad8d11fd837 100644 --- a/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.html +++ b/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.html @@ -1 +1,5 @@ -<admin-organisationseinheit-form-container/> \ No newline at end of file +<ng-container *ngIf="(apiRootStateResource$ | async)?.resource as apiRoot"> + @if(apiRoot | hasLink: ApiRootLinkRel.ORGANISATIONS_EINHEIT){ + <admin-organisationseinheit-form-container data-test-id="organisations-einheit-form"/> + } +</ng-container> diff --git a/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.spec.ts b/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.spec.ts index 4ad49ca4595e598e66a9e6b0d40b46cca0d606b5..e27ea055d18d984cfb5edc24df6f93fe3a01a212 100644 --- a/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.spec.ts +++ b/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.spec.ts @@ -1,15 +1,31 @@ import { OrganisationsEinheitFormContainerComponent } from '@admin-client/admin-settings'; +import { ApiRootLinkRel, ApiRootService } from '@alfa-client/api-root-shared'; +import { createStateResource, TechSharedModule } from '@alfa-client/tech-shared'; +import { existsAsHtmlElement, mock, Mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; +import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { MockComponent } from 'ng-mocks'; +import { of } from 'rxjs'; import { OrganisationsEinheitFormPageComponent } from './organisationseinheit-form-page.component'; describe('OrganisationsEinheitFormPageComponent', () => { let component: OrganisationsEinheitFormPageComponent; let fixture: ComponentFixture<OrganisationsEinheitFormPageComponent>; + const organisationsEinheiteFormSelector: string = getDataTestIdOf('organisations-einheit-form'); + + const apiRootStateResource$ = of(createStateResource(createApiRootResource())); + const apiRootService: Mock<ApiRootService> = { + ...mock(ApiRootService), + getApiRoot: jest.fn().mockReturnValue(apiRootStateResource$), + }; + beforeEach(async () => { await TestBed.configureTestingModule({ + imports: [TechSharedModule], declarations: [OrganisationsEinheitFormPageComponent, MockComponent(OrganisationsEinheitFormContainerComponent)], + providers: [{ provide: ApiRootService, useValue: apiRootService }], }).compileComponents(); }); @@ -23,4 +39,31 @@ describe('OrganisationsEinheitFormPageComponent', () => { it('should create', () => { expect(component).toBeTruthy(); }); + + describe('component', () => { + describe('ngOnInit', () => { + it('should get apiRoot', () => { + component.ngOnInit(); + + expect(component.apiRootStateResource$).toBe(apiRootStateResource$); + }); + }); + }); + + describe('template', () => { + // todo: fix me + describe('admin-organisationseinheit-form-container', () => { + it('should be rendered if apiRootState has link', () => { + component.apiRootStateResource$ = of(createStateResource(createApiRootResource([ApiRootLinkRel.ORGANISATIONS_EINHEIT]))); + + existsAsHtmlElement(fixture, organisationsEinheiteFormSelector); + }); + + it('should not be rendered if apiRootState has no link', () => { + component.apiRootStateResource$ = of(createStateResource(createApiRootResource())); + + notExistsAsHtmlElement(fixture, organisationsEinheiteFormSelector); + }); + }); + }); }); diff --git a/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.ts b/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.ts index b7c9e0ea72a6ccd313239a4461f3a75692be5d9d..6a14ce6da44f0d1c4adf5c1e59c67dd12f163a15 100644 --- a/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.ts +++ b/alfa-client/apps/admin/src/pages/organisationseinheit/organisationseinheit-form-page/organisationseinheit-form-page.component.ts @@ -1,7 +1,20 @@ -import { Component } from '@angular/core'; +import { ApiRootLinkRel, ApiRootResource, ApiRootService } from '@alfa-client/api-root-shared'; +import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared'; +import { Component, inject, OnInit } from '@angular/core'; +import { Observable, of } from 'rxjs'; @Component({ selector: 'organisationseinheit-form-page', templateUrl: './organisationseinheit-form-page.component.html', }) -export class OrganisationsEinheitFormPageComponent {} +export class OrganisationsEinheitFormPageComponent implements OnInit { + private apiRootService = inject(ApiRootService); + + public apiRootStateResource$: Observable<StateResource<ApiRootResource>> = of(createEmptyStateResource<ApiRootResource>()); + + ngOnInit(): void { + this.apiRootStateResource$ = this.apiRootService.getApiRoot(); + } + + protected readonly ApiRootLinkRel = ApiRootLinkRel; +} diff --git a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.html b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.html index dad58a8662dd19eb059273474e2df1474305d3b4..b6866e0ee5dac2eeaf239ac9e1d759a78a1ff3fa 100644 --- a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.html +++ b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.html @@ -1 +1,3 @@ -<admin-user-add-form /> +@if(environment.features.benutzerRollen){ + <admin-user-add-form data-test-id="user-add-form"/> +} \ No newline at end of file diff --git a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.spec.ts b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.spec.ts index eecaa8e5c0c24be917a8b968d2af926dbf1ff56f..49c6e7a84d7daadaaaac737598acbcddf744ce0c 100644 --- a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.spec.ts +++ b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.spec.ts @@ -1,5 +1,8 @@ import { UserAddFormComponent } from '@admin-client/admin-settings'; +import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { createEnvironment } from 'libs/environment-shared/test/environment'; +import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { MockComponent } from 'ng-mocks'; import { UserAddPageComponent } from './user-add-page.component'; @@ -7,6 +10,9 @@ describe('UserAddPageComponent', () => { let component: UserAddPageComponent; let fixture: ComponentFixture<UserAddPageComponent>; + const userAddFormSelector: string = getDataTestIdOf('user-add-form'); + const environment = createEnvironment(); + beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [UserAddPageComponent, MockComponent(UserAddFormComponent)], @@ -14,10 +20,27 @@ describe('UserAddPageComponent', () => { fixture = TestBed.createComponent(UserAddPageComponent); component = fixture.componentInstance; + component.environment = environment; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); + + describe('template', () => { + it('should render the users roles component if feature toggle is true', () => { + environment.features.benutzerRollen = true; + fixture.detectChanges(); + + existsAsHtmlElement(fixture, userAddFormSelector); + }); + + it('should not render the users roles component if feature toggle is false', () => { + environment.features.benutzerRollen = false; + fixture.detectChanges(); + + notExistsAsHtmlElement(fixture, userAddFormSelector); + }); + }); }); diff --git a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.ts b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.ts index f3bcc1eaf5f74df921a17932bea865ce96a61907..e52105d82b847654bbd74d769a047a1bd0d48de7 100644 --- a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.ts +++ b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.ts @@ -1,7 +1,10 @@ +import { Environment, getEnvironmentFactory } from '@alfa-client/environment-shared'; import { Component } from '@angular/core'; @Component({ selector: 'user-add-page', templateUrl: './user-add-page.component.html', }) -export class UserAddPageComponent {} +export class UserAddPageComponent { + public environment: Environment = getEnvironmentFactory(); +} diff --git a/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.html b/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.html index 3000e0ffbac09b63c3d12d715638ab67f610bc39..dc2545d6527cb4109c09c3cbb5bb887c1b492774 100644 --- a/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.html +++ b/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.html @@ -1 +1,3 @@ -<admin-users-roles /> \ No newline at end of file +@if(environment.features.benutzerRollen){ + <admin-users-roles data-test-id="users-roles"/> +} diff --git a/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.spec.ts b/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.spec.ts index 1285eda7400123a525353d217969ab1d0d681074..a25520507ff6a3cf0c41caa26bffe2ca64f35062 100644 --- a/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.spec.ts +++ b/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.spec.ts @@ -1,5 +1,8 @@ import { UsersRolesComponent } from '@admin-client/admin-settings'; +import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { createEnvironment } from 'libs/environment-shared/test/environment'; +import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { MockComponent } from 'ng-mocks'; import { UserRolesPageComponent } from './user-roles-page.component'; @@ -7,6 +10,9 @@ describe('UserRolesPageComponent', () => { let component: UserRolesPageComponent; let fixture: ComponentFixture<UserRolesPageComponent>; + const usersRolesSelector: string = getDataTestIdOf('users-roles'); + const environment = createEnvironment(); + beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [UserRolesPageComponent], @@ -15,10 +21,27 @@ describe('UserRolesPageComponent', () => { fixture = TestBed.createComponent(UserRolesPageComponent); component = fixture.componentInstance; + component.environment = environment; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); + + describe('template', () => { + it('should render the users roles component if feature toggle is true', () => { + environment.features.benutzerRollen = true; + fixture.detectChanges(); + + existsAsHtmlElement(fixture, usersRolesSelector); + }); + + it('should not render the users roles component if feature toggle is false', () => { + environment.features.benutzerRollen = false; + fixture.detectChanges(); + + notExistsAsHtmlElement(fixture, usersRolesSelector); + }); + }); }); diff --git a/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.ts b/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.ts index 6b3576a76e34d01f319b4a8b2c4f44c82c62f44f..eacc7b424e712af3c12e5a182c0c9e339fa1d76b 100644 --- a/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.ts +++ b/alfa-client/apps/admin/src/pages/users-roles/user-roles-page/user-roles-page.component.ts @@ -1,7 +1,10 @@ +import { Environment, getEnvironmentFactory } from '@alfa-client/environment-shared'; import { Component } from '@angular/core'; @Component({ selector: 'app-user-roles-page', templateUrl: './user-roles-page.component.html', }) -export class UserRolesPageComponent {} +export class UserRolesPageComponent { + public environment: Environment = getEnvironmentFactory(); +}