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 bfdd33113b77d9839ae9211c6a4ed6ffb5d96321..bcbabb60356f3899f012836cb8ddf2bd7c408832 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 ae2167e54c9cb4a7894b8fa0535eec78f8ac4094..2b029395973ed84c24f89705f6b106fddc813852 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 3b2c89d88a148e669da468534c994b44300849df..44527b85e851f5096017e9bed839ad8c3b6bfea3 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 bd90111520f21d7d1d62da9acd666e357be82a7b..a4dca2c7c85585a8f866d18b181ebd85ee6338fa 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 0000000000000000000000000000000000000000..6b504d868048f6e003fb877c3f8e868ed2b45d73 --- /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); + }); +});