From bf80346526b9edbb525a6b36d109b3a1da1e2034 Mon Sep 17 00:00:00 2001 From: Tifenn GUILLAS <tifenn.guillas@lam.fr> Date: Thu, 10 Oct 2019 11:39:27 +0200 Subject: [PATCH] WIP: add tests --- .../criteria-by-family.component.html | 2 +- .../search-type/between-date.component.html | 2 +- .../between-date.component.spec.ts | 30 +++++++++++-------- .../search-type/between-date.component.ts | 9 +++--- .../model/between-criterion.model.spec.ts | 27 +++++++++++++++++ 5 files changed, 50 insertions(+), 20 deletions(-) create mode 100644 src/app/search/store/model/between-criterion.model.spec.ts diff --git a/src/app/search/components/criteria/criteria-by-family.component.html b/src/app/search/components/criteria/criteria-by-family.component.html index bfdd3311..bcbabb60 100644 --- a/src/app/search/components/criteria/criteria-by-family.component.html +++ b/src/app/search/components/criteria/criteria-by-family.component.html @@ -92,7 +92,7 @@ [operator]="attribute.operator" [label]="attribute.form_label" [criterion]="getCriterion(attribute.id)" - (add)="add($event)" + (addCriterion)="add($event)" (deleteCriterion)="delete($event)"> </app-between-date> </div> diff --git a/src/app/search/components/criteria/search-type/between-date.component.html b/src/app/search/components/criteria/search-type/between-date.component.html index ae2167e5..2b029395 100644 --- a/src/app/search/components/criteria/search-type/between-date.component.html +++ b/src/app/search/components/criteria/search-type/between-date.component.html @@ -12,7 +12,7 @@ </div> <div class="col-2 text-center"> <button class="btn btn-outline-success" *ngIf="!field.disabled" [hidden]="!field.value" - (click)="addCriterion()"> + (click)="emitAdd()"> <span class="fas fa-plus fa-fw"></span> </button> <button class="btn btn-outline-danger" *ngIf="field.disabled" (click)="emitDelete()"> diff --git a/src/app/search/components/criteria/search-type/between-date.component.spec.ts b/src/app/search/components/criteria/search-type/between-date.component.spec.ts index 3b2c89d8..44527b85 100644 --- a/src/app/search/components/criteria/search-type/between-date.component.spec.ts +++ b/src/app/search/components/criteria/search-type/between-date.component.spec.ts @@ -1,10 +1,10 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { BsDatepickerModule } from 'ngx-bootstrap'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms'; import { BetweenDateComponent } from './between-date.component'; -import { Criterion, BetweenCriterion } from '../../../store/model'; +import { BetweenCriterion } from '../../../store/model'; describe('[Search][Criteria][SearchType] Component: BetweenDateComponent', () => { let component: BetweenDateComponent; @@ -45,15 +45,19 @@ describe('[Search][Criteria][SearchType] Component: BetweenDateComponent', () => expect(component.field.disabled).toBeTruthy(); }); - // it('raises the add criterion event when clicked', () => { - // component.id = 123; - // component.deleteCriterion.subscribe((event: number) => expect(event).toEqual(component.id)); - // component.emitDelete(); - // }); - - // it('raises the delete criterion event when clicked', () => { - // component.id = 123; - // component.deleteCriterion.subscribe((event: number) => expect(event).toEqual(component.id)); - // component.emitDelete(); - // }); + it('raises the add criterion event when clicked', () => { + component.id = 1; + const dateMin = '2019-02-08'; + const dateMax = '2019-02-17'; + component.field = new FormControl([new Date(dateMin), new Date(dateMax)]); + const expectedCriterion = new BetweenCriterion(component.id, dateMin, dateMax); + component.addCriterion.subscribe((event: BetweenCriterion) => expect(event).toEqual(expectedCriterion)); + component.emitAdd(); + }); + + it('raises the delete criterion event when clicked', () => { + component.id = 1; + component.deleteCriterion.subscribe((event: number) => expect(event).toEqual(1)); + component.emitDelete(); + }); }); diff --git a/src/app/search/components/criteria/search-type/between-date.component.ts b/src/app/search/components/criteria/search-type/between-date.component.ts index bd901115..a4dca2c7 100644 --- a/src/app/search/components/criteria/search-type/between-date.component.ts +++ b/src/app/search/components/criteria/search-type/between-date.component.ts @@ -16,20 +16,19 @@ export class BetweenDateComponent { set criterion(criterion: Criterion) { this.getDefault(criterion); } - @Output() add: EventEmitter<BetweenCriterion> = new EventEmitter(); + @Output() addCriterion: EventEmitter<BetweenCriterion> = new EventEmitter(); @Output() deleteCriterion: EventEmitter<number> = new EventEmitter(); field = new FormControl(''); - addCriterion(): void { - console.log(this.field.value); + emitAdd(): void { const dateMin = this.getDateString(this.field.value[0]); const dateMax = this.getDateString(this.field.value[1]); const fd = new BetweenCriterion(this.id, dateMin, dateMax); - this.add.emit(fd); + this.addCriterion.emit(fd); } - emitDelete() { + emitDelete(): void { this.deleteCriterion.emit(this.id); } diff --git a/src/app/search/store/model/between-criterion.model.spec.ts b/src/app/search/store/model/between-criterion.model.spec.ts new file mode 100644 index 00000000..6b504d86 --- /dev/null +++ b/src/app/search/store/model/between-criterion.model.spec.ts @@ -0,0 +1,27 @@ +import { BetweenCriterion } from './between-criterion.model'; + +describe('[Search] Model: BetweenCriterion', () => { + + it('should print criterion correctly', () => { + const dateMin = '2019-02-08'; + const dateMax = '2019-02-17'; + const criterion = new BetweenCriterion(1, dateMin, dateMax); + const expectedPrintedCriterion = '∈ [' + dateMin + ';' + dateMax + ']'; + expect(criterion.printCriterion()).toEqual(expectedPrintedCriterion); + const criterionMin = new BetweenCriterion(1, dateMin, ''); + const expectedPrintedCriterionMin = '>= ' + dateMin; + expect(criterionMin.printCriterion()).toEqual(expectedPrintedCriterionMin); + const criterionMax = new BetweenCriterion(1, '', dateMax); + const expectedPrintedCriterionMax = '<= ' + dateMax; + expect(criterionMax.printCriterion()).toEqual(expectedPrintedCriterionMax); + }); + + it('should print criterion url string correctly', () => { + const id = 1; + const dateMin = '2019-02-08'; + const dateMax = '2019-02-17'; + const criterion = new BetweenCriterion(id, dateMin, dateMax); + const expectedPrintedCriterion = id + '::bw::' + dateMin + '|' + dateMax; + expect(criterion.getCriterionStr()).toEqual(expectedPrintedCriterion); + }); +}); -- GitLab