From f312291f83b7a93229d83939301a5caab92f9370 Mon Sep 17 00:00:00 2001 From: Jeremie BRISON <ext.sopra.jbrison@grandlyon.com> Date: Tue, 3 Nov 2020 17:00:09 +0100 Subject: [PATCH] fix(search) : fix unit test + fix disabled filters --- .../services/structure-list.service.spec.ts | 13 +++-- .../modal-filter/modal-filter.component.html | 2 +- .../modal-filter.component.spec.ts | 47 +++++++++---------- .../modal-filter/modal-filter.component.ts | 5 ++ .../components/search/search.component.html | 4 +- .../search/search.component.spec.ts | 13 ----- .../services/search.service.spec.ts | 12 ++--- 7 files changed, 42 insertions(+), 54 deletions(-) diff --git a/src/app/services/structure-list.service.spec.ts b/src/app/services/structure-list.service.spec.ts index 230f2e331..5a1b05cc4 100644 --- a/src/app/services/structure-list.service.spec.ts +++ b/src/app/services/structure-list.service.spec.ts @@ -2,6 +2,7 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { inject, TestBed } from '@angular/core/testing'; import { Day } from '../models/day.model'; import { Structure } from '../models/structure.model'; +import { Time } from '../models/time.model'; import { Week } from '../models/week.model'; import { StructureService } from './structure-list.service'; const { DateTime } = require('luxon'); @@ -28,12 +29,11 @@ describe('StructureService', () => { s.hours.friday = new Day(false); s.hours.saturday = new Day(false); s.hours.sunday = new Day(false); - s.hours.thursday.open = true; - s.hours.thursday.time = [ - { openning: 805, closing: 1200 }, - { openning: 1400, closing: 1600 }, - ]; + s.hours.thursday.time = new Array( + new Time({ openning: 805, closing: 1200 }), + new Time({ openning: 1400, closing: 1600 }) + ); // Init date sur un jeudi à 9h05 const dt = new DateTime.local(2020, 10, 8, 9, 5); @@ -54,8 +54,7 @@ describe('StructureService', () => { s.hours.sunday = new Day(); s.hours.thursday.open = true; - s.hours.thursday.time = [{ openning: 1400, closing: 1600 }]; - + s.hours.thursday.time = new Array(new Time({ openning: 1400, closing: 1600 })); // Init date sur un jeudi à 9h05 const dt = new DateTime.local(2020, 10, 8, 9, 5); const result = structureService.updateOpeningStructure(s, dt); diff --git a/src/app/structure-list/components/modal-filter/modal-filter.component.html b/src/app/structure-list/components/modal-filter/modal-filter.component.html index 57437de6c..98f61f1d4 100644 --- a/src/app/structure-list/components/modal-filter/modal-filter.component.html +++ b/src/app/structure-list/components/modal-filter/modal-filter.component.html @@ -1,6 +1,6 @@ <div *ngIf="modalType" - (clickOutside)="emitModules(modules)" + (clickOutside)="closeModal()" fxLayout="column" fxLayoutAlign="space-between" [ngClass]="['modal', 'modal' + modalType]" diff --git a/src/app/structure-list/components/modal-filter/modal-filter.component.spec.ts b/src/app/structure-list/components/modal-filter/modal-filter.component.spec.ts index 9c1ad3d14..cac3dc7a3 100644 --- a/src/app/structure-list/components/modal-filter/modal-filter.component.spec.ts +++ b/src/app/structure-list/components/modal-filter/modal-filter.component.spec.ts @@ -29,58 +29,57 @@ describe('ModalFilterComponent', () => { it('should emit modules', () => { const modules: Module[] = [ - { id: 176, text: 'training', count: 3 }, - { id: 173, text: 'training', count: 2 }, - { id: 172, text: 'training', count: 2 }, + { id: '176', text: 'training', count: 3 }, + { id: '173', text: 'training', count: 2 }, + { id: '172', text: 'training', count: 2 }, ]; - component.checkedModules = modules; spyOn(component.searchEvent, 'emit'); - component.emitModules(); + component.emitModules(modules); expect(component.searchEvent.emit).toHaveBeenCalled(); expect(component.searchEvent.emit).toHaveBeenCalledWith(modules); }); it('should return an index or -1', () => { const modules: Module[] = [ - { id: 176, text: 'training', count: 0 }, - { id: 173, text: 'training', count: 0 }, - { id: 172, text: 'training', count: 0 }, + { id: '176', text: 'training', count: 0 }, + { id: '173', text: 'training', count: 0 }, + { id: '172', text: 'training', count: 0 }, ]; component.checkedModules = modules; - const foundItem = component.getIndex(173, 'training'); - const notFoundItem = component.getIndex(189, 'training'); + const foundItem = component.getIndex('173', 'training'); + const notFoundItem = component.getIndex('189', 'training'); expect(foundItem).toEqual(1); expect(notFoundItem).toEqual(-1); }); it('should add a module to checkedModule array', () => { const modules: Module[] = [ - { id: 176, text: 'training', count: 0 }, - { id: 173, text: 'training', count: 0 }, - { id: 172, text: 'training', count: 0 }, + { id: '176', text: 'training', count: 0 }, + { id: '173', text: 'training', count: 0 }, + { id: '172', text: 'training', count: 0 }, ]; component.checkedModules = modules; - const evt = { target: { checked: true, value: 175 } }; + const evt = { target: { checked: true, value: '175' } }; component.onCheckboxChange(evt, 'training'); expect(component.checkedModules.length).toEqual(4); }); it('should remove a module to checkedModule array', () => { const modules: Module[] = [ - { id: 176, text: 'training', count: 0 }, - { id: 173, text: 'training', count: 0 }, - { id: 172, text: 'training', count: 0 }, + { id: '176', text: 'training', count: 0 }, + { id: '173', text: 'training', count: 0 }, + { id: '172', text: 'training', count: 0 }, ]; component.checkedModules = modules; - const evt = { target: { checked: false, value: 173 } }; + const evt = { target: { checked: false, value: '173' } }; component.onCheckboxChange(evt, 'training'); expect(component.checkedModules.length).toEqual(2); }); it('should remove all modules checked from same modal, here morefilters', () => { const modules: Module[] = [ - { id: 176, text: 'morefilters', count: 0 }, - { id: 173, text: 'morefilters', count: 0 }, - { id: 172, text: 'morefilters', count: 0 }, - { id: 179, text: 'training', count: 0 }, - { id: 190, text: 'training', count: 0 }, - { id: 167, text: 'training', count: 0 }, + { id: '176', text: 'morefilters', count: 0 }, + { id: '173', text: 'morefilters', count: 0 }, + { id: '172', text: 'morefilters', count: 0 }, + { id: '179', text: 'training', count: 0 }, + { id: '190', text: 'training', count: 0 }, + { id: '167', text: 'training', count: 0 }, ]; component.checkedModules = modules; const category: Category = { name: 'morefilters', modules: [modules[0], modules[1], modules[2]] }; diff --git a/src/app/structure-list/components/modal-filter/modal-filter.component.ts b/src/app/structure-list/components/modal-filter/modal-filter.component.ts index f4056cd8b..d987c05f2 100644 --- a/src/app/structure-list/components/modal-filter/modal-filter.component.ts +++ b/src/app/structure-list/components/modal-filter/modal-filter.component.ts @@ -18,6 +18,7 @@ export class ModalFilterComponent implements OnInit { @Input() public categories: Category[]; @Input() public modules: Module[] = []; @Output() searchEvent = new EventEmitter(); + @Output() closeEvent = new EventEmitter(); // Checkbox variable checkedModules: Module[]; // Form search input @@ -62,4 +63,8 @@ export class ModalFilterComponent implements OnInit { public emitModules(m: Module[]): void { this.searchEvent.emit(m); } + + public closeModal(): void { + this.closeEvent.emit(); + } } diff --git a/src/app/structure-list/components/search/search.component.html b/src/app/structure-list/components/search/search.component.html index 848365d03..fb135ddad 100644 --- a/src/app/structure-list/components/search/search.component.html +++ b/src/app/structure-list/components/search/search.component.html @@ -28,7 +28,6 @@ <div class="btnSection" fxLayout="row" fxLayoutAlign="space-between center"> <button type="button" - [disabled]="modalTypeOpened === TypeModal[0]" [ngClass]="{ selected: modalTypeOpened === TypeModal[0], containCheckedFilters: numberAccompanimentChecked }" (click)="openModal(TypeModal[0])" fxLayout="row" @@ -39,7 +38,6 @@ </button> <button type="button" - [disabled]="modalTypeOpened === TypeModal[1]" [ngClass]="{ selected: modalTypeOpened === TypeModal[1], containCheckedFilters: numberTrainingChecked }" (click)="openModal(TypeModal[1])" fxLayout="row" @@ -50,7 +48,6 @@ </button> <button type="button" - [disabled]="modalTypeOpened === TypeModal[2]" [ngClass]="{ selected: modalTypeOpened === TypeModal[2], containCheckedFilters: numberMoreFiltersChecked }" (click)="openModal(TypeModal[2])" fxLayout="row" @@ -66,6 +63,7 @@ [categories]="categories" [modules]="checkedModulesFilter" (searchEvent)="fetchResults($event)" + (closeEvent)="closeModal()" ></app-modal-filter> </div> </div> diff --git a/src/app/structure-list/components/search/search.component.spec.ts b/src/app/structure-list/components/search/search.component.spec.ts index a5507ed76..a4cdfb399 100644 --- a/src/app/structure-list/components/search/search.component.spec.ts +++ b/src/app/structure-list/components/search/search.component.spec.ts @@ -1,11 +1,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; -import { Category } from '../../models/category.model'; import { Filter } from '../../models/filter.model'; -import { Module } from '../../models/module.model'; import { HttpClientTestingModule } from '@angular/common/http/testing'; import { SearchComponent } from './search.component'; -import { TypeModal } from '../../enum/typeModal.enum'; describe('SearchComponent', () => { let component: SearchComponent; @@ -35,14 +32,4 @@ describe('SearchComponent', () => { expect(component.searchEvent.emit).toHaveBeenCalled(); expect(component.searchEvent.emit).toHaveBeenCalledWith(filter); }); - - it('should update categories', () => { - let categories: Category[] = [new Category({ name: 'Accompagnement des démarches' })]; - categories[0].modules = []; - for (let i = 0; i < 7; i++) { - categories[0].modules.push(new Module(5 + i, 'CAF' + i)); - } - component.openModal(TypeModal[0]); - expect(component.categories).toEqual(categories); - }); }); diff --git a/src/app/structure-list/services/search.service.spec.ts b/src/app/structure-list/services/search.service.spec.ts index 4da5c5954..666955f99 100644 --- a/src/app/structure-list/services/search.service.spec.ts +++ b/src/app/structure-list/services/search.service.spec.ts @@ -21,13 +21,13 @@ describe('SearchService', () => { it('should return category with number of modules inside', () => { const structureCount: StructureCounter[] = [ - { id: 176, count: 2 }, - { id: 172, count: 1 }, - { id: 173, count: 1 }, + { id: '176', count: 2 }, + { id: '172', count: 1 }, + { id: '173', count: 1 }, ]; - const m1: Module = { id: 176, text: 'strm1', count: 0 }; - const m2: Module = { id: 173, text: 'strm2', count: 0 }; - const m3: Module = { id: 172, text: 'strm3', count: 0 }; + const m1: Module = { id: '176', text: 'strm1', count: 0 }; + const m2: Module = { id: '173', text: 'strm2', count: 0 }; + const m3: Module = { id: '172', text: 'strm3', count: 0 }; const category: Category = { name: 'strCateg', modules: [m1, m2, m3] }; const result = service.setCountModules(category, structureCount); expect(result.modules[0].count).toBe(2); -- GitLab