diff --git a/projects/v3/src/app/pages/home/home.page.spec.ts b/projects/v3/src/app/pages/home/home.page.spec.ts index 0716be3f0..ef0d98c1a 100644 --- a/projects/v3/src/app/pages/home/home.page.spec.ts +++ b/projects/v3/src/app/pages/home/home.page.spec.ts @@ -446,10 +446,7 @@ describe('HomePage', () => { component.activitySearchText = 'development'; component.filterActivities(); - expect(component.filteredMilestones.length).toBe(1); - expect(component.filteredMilestones[0].id).toBe(2); - expect(component.filteredMilestones[0].activities.length).toBe(1); - expect(component.filteredMilestones[0].activities[0].id).toBe(3); + expect(component.filteredMilestones).toEqual([]); }); it('should return empty milestones array when no activities match', () => { @@ -506,9 +503,15 @@ describe('HomePage', () => { component.activitySearchText = 'a'; component.filterActivities(); - expect(component.filteredMilestones.length).toBe(2); + expect(component.filteredMilestones.length).toBe(1); expect(component.filteredMilestones[0].activities.length).toBe(2); - expect(component.filteredMilestones[1].activities.length).toBe(1); + }); + + it('should skip locked activities even when they match search text', () => { + component.activitySearchText = 'task'; + component.filterActivities(); + + expect(component.filteredMilestones).toEqual([]); }); it('should trim whitespace from search text', () => { diff --git a/projects/v3/src/app/pages/home/home.page.ts b/projects/v3/src/app/pages/home/home.page.ts index 9bca9aa66..6da741906 100644 --- a/projects/v3/src/app/pages/home/home.page.ts +++ b/projects/v3/src/app/pages/home/home.page.ts @@ -51,7 +51,7 @@ export class HomePage implements OnInit, OnDestroy, AfterViewChecked { // default card image (gracefully show broken url) defaultLeadImage: string = ""; - lastVisitedActivityId: number = null; + lastVisitedActivityId?: number; bookmarkedActivities: { [key: number]: boolean; } = {}; @@ -65,7 +65,7 @@ export class HomePage implements OnInit, OnDestroy, AfterViewChecked { // activity search/filter activitySearchText = ''; - filteredMilestones: Milestone[] = null; + filteredMilestones: Milestone[] | null = null; // project brief data from team storage projectBrief: ProjectBrief | null = null; @@ -628,11 +628,15 @@ export class HomePage implements OnInit, OnDestroy, AfterViewChecked { // filter milestones and their activities this.filteredMilestones = this.milestones .map(milestone => { - const filteredActivities = milestone.activities.filter(activity => { + const filteredActivities = milestone.activities?.filter(activity => { + if (activity?.isLocked) { + return false; + } + const titleMatch = activity.name?.toLowerCase().includes(searchText); const descriptionMatch = activity.description?.toLowerCase().includes(searchText); return titleMatch || descriptionMatch; - }); + }) ?? []; // only include milestone if it has matching activities if (filteredActivities.length > 0) {