diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.html b/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.html index eb8c0eaa7fd1b08d5028ff9abbd5001ba0f89ea4..09cc3244d77a378a2e91d0acaa2d1551fd1628a0 100644 --- a/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.html +++ b/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.html @@ -24,3 +24,10 @@ --> <h1 class="heading-1" data-test-id="statistik-header-text">Statistik</h1> +@if (!evaluateAdditionalFields) { + <ods-button + text="Weitere Felder auswerten" + (clickEmitter)="onEvaluateAdditionalFields()" + data-test-id="weitere-felder-auswerten-button" + ></ods-button> +} diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.spec.ts b/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.spec.ts index 84b58ee0de584e0b5445a79865b4154cc60bb4c7..beb4e71bca59c1b28715694884c5f32917d31f3f 100644 --- a/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.spec.ts +++ b/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.spec.ts @@ -21,13 +21,17 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { existsAsHtmlElement, notExistsAsHtmlElement, triggerEvent } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test'; import { StatistikContainerComponent } from './statistik-container.component'; describe('StatistikContainerComponent', () => { let component: StatistikContainerComponent; let fixture: ComponentFixture<StatistikContainerComponent>; + const evaluateAdditionalFieldsTestId: string = getDataTestIdOf('weitere-felder-auswerten-button'); + beforeEach(async () => { await TestBed.configureTestingModule({ imports: [StatistikContainerComponent], @@ -41,7 +45,60 @@ describe('StatistikContainerComponent', () => { fixture.detectChanges(); }); - it('should create', () => { - expect(component).toBeTruthy(); + describe('component', () => { + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should set default values', () => { + expect(component.evaluateAdditionalFields).toBeDefined(); + expect(component.evaluateAdditionalFields).toBeFalsy(); + }); + + describe('onEvaluateAdditionalFieldsClick', () => { + it('should update component state', () => { + component.evaluateAdditionalFields = false; + + component.onEvaluateAdditionalFields(); + + expect(component.evaluateAdditionalFields).toBeTruthy(); + }); + }); + }); + + describe('template', () => { + describe('weiter felder auswerten button', () => { + it('should exists', () => { + fixture.detectChanges(); + + existsAsHtmlElement(fixture, evaluateAdditionalFieldsTestId); + }); + + it('should NOT exists', () => { + component.evaluateAdditionalFields = true; + + fixture.detectChanges(); + + notExistsAsHtmlElement(fixture, evaluateAdditionalFieldsTestId); + }); + + describe('output', () => { + describe('clickEmitter', () => { + it('should call handler', () => { + component.onEvaluateAdditionalFields = jest.fn(); + component.evaluateAdditionalFields = false; + fixture.detectChanges(); + + triggerEvent({ + fixture, + elementSelector: evaluateAdditionalFieldsTestId, + name: 'clickEmitter', + }); + + expect(component.onEvaluateAdditionalFields).toHaveBeenCalled(); + }); + }); + }); + }); }); }); diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.ts b/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.ts index 05e7e9db912474d8f6991acdf8f20d480b309fe2..bf802db58ef659c43e9e8a8c4881c293f83917af 100644 --- a/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.ts +++ b/alfa-client/libs/admin/statistik/src/lib/statistik-container/statistik-container.component.ts @@ -23,11 +23,18 @@ */ import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; +import { ButtonComponent } from '@ods/system'; @Component({ selector: 'admin-statistik-container', templateUrl: './statistik-container.component.html', standalone: true, - imports: [CommonModule], + imports: [CommonModule, ButtonComponent], }) -export class StatistikContainerComponent {} +export class StatistikContainerComponent { + public evaluateAdditionalFields: boolean = false; + + public onEvaluateAdditionalFields(): void { + this.evaluateAdditionalFields = true; + } +}