From f680c0620835a57a27e9d84990482d8b8c323aba Mon Sep 17 00:00:00 2001 From: Gato Date: Sun, 31 May 2026 14:49:57 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20filtre=20priorit=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gato --- src/app/issues/issues-filter.service.spec.ts | 30 ++++++++ src/app/issues/issues-filter.service.ts | 12 ++++ src/app/issues/issues.html | 38 ++++++++++ src/app/issues/issues.spec.ts | 74 ++++++++++++++++++++ src/app/issues/issues.ts | 54 +++++++++++--- 5 files changed, 200 insertions(+), 8 deletions(-) create mode 100644 src/app/issues/issues-filter.service.spec.ts create mode 100644 src/app/issues/issues-filter.service.ts diff --git a/src/app/issues/issues-filter.service.spec.ts b/src/app/issues/issues-filter.service.spec.ts new file mode 100644 index 0000000..363f98b --- /dev/null +++ b/src/app/issues/issues-filter.service.spec.ts @@ -0,0 +1,30 @@ +import { TestBed } from '@angular/core/testing'; +import { IssuesFilterService } from './issues-filter.service'; + +describe('IssuesFilterService', () => { + let service: IssuesFilterService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(IssuesFilterService); + }); + + it('initializes with empty filter state', () => { + expect(service.searchQuery).toBe(''); + expect(service.selectedTypes.size).toBe(0); + expect(service.selectedStatuses.size).toBe(0); + expect(service.selectedPriorities.size).toBe(0); + expect(service.selectedMilestoneIds.size).toBe(0); + expect(service.showNoMilestone).toBe(false); + }); + + it('allows mutation of filter state', () => { + service.searchQuery = 'bug'; + service.selectedTypes.add('Bug'); + service.selectedPriorities.add('HAUTE'); + + expect(service.searchQuery).toBe('bug'); + expect(service.selectedTypes.has('Bug')).toBe(true); + expect(service.selectedPriorities.has('HAUTE')).toBe(true); + }); +}); diff --git a/src/app/issues/issues-filter.service.ts b/src/app/issues/issues-filter.service.ts new file mode 100644 index 0000000..5da90bb --- /dev/null +++ b/src/app/issues/issues-filter.service.ts @@ -0,0 +1,12 @@ +import { Injectable } from '@angular/core'; +import { IssueType, IssueStatus, IssuePriority } from './issues.store'; + +@Injectable({ providedIn: 'root' }) +export class IssuesFilterService { + searchQuery = ''; + selectedTypes = new Set(); + selectedStatuses = new Set(); + selectedPriorities = new Set(); + selectedMilestoneIds = new Set(); + showNoMilestone = false; +} diff --git a/src/app/issues/issues.html b/src/app/issues/issues.html index 24bc4d2..11adf5c 100644 --- a/src/app/issues/issues.html +++ b/src/app/issues/issues.html @@ -82,6 +82,44 @@ + + +