Skip to content

Commit

Permalink
Fixed role filter on burger menu
Browse files Browse the repository at this point in the history
  • Loading branch information
RLCorp committed Aug 5, 2024
1 parent 8a3fee8 commit 8d372ed
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 30 deletions.
46 changes: 45 additions & 1 deletion src/app/__tests__/app.component.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,12 @@ import { SideMenuClosed, SideMenuItemSelected, SideMenuOpened } from '@pages/das
import { AccessibilityService } from '@providers/accessibility/accessibility.service';
import { AccessibilityServiceMock } from '@providers/accessibility/__mocks__/accessibility-service.mock';
import { LOGIN_PAGE } from '@pages/page-names.constants';
import { AppComponent } from '../app.component';
import { AppComponent, Page } from '../app.component';
import { StorageMock } from '@mocks/ionic-mocks/storage.mock';
import { LogHelper } from '@providers/logs/logs-helper';
import { LogHelperMock } from '@providers/logs/__mocks__/logs-helper.mock';
import { ExaminerRole } from '@dvsa/mes-microservice-common/domain/examiner-role';
import { AppConfig } from '@providers/app-config/app-config.model';

describe('AppComponent', () => {
let component: AppComponent;
Expand Down Expand Up @@ -247,6 +249,48 @@ describe('AppComponent', () => {
});
});

describe('getFilteredPages', () => {
it('should return all pages if role is not defined', () => {
spyOn(appConfigProvider, 'getAppConfig').and.returnValue({ role: undefined } as AppConfig);
const pages: Page[] = [
{ title: 'Page1', descriptor: 'Page1' },
{ title: 'Page2', descriptor: 'Page2' },
];
const result = component.getFilteredPages(pages);
expect(result).toEqual(pages);
});

it('should return filtered pages based on role', () => {
spyOn(appConfigProvider, 'getAppConfig').and.returnValue({ role: ExaminerRole.DLG } as AppConfig);
const pages: Page[] = [
{ title: 'Page1', descriptor: 'Page1', hideWhenRole: [ExaminerRole.DLG] },
{ title: 'Page2', descriptor: 'Page2' },
];
const result = component.getFilteredPages(pages);
expect(result).toEqual([{ title: 'Page2', descriptor: 'Page2' }]);
});

it('should return all pages if hideWhenRole is not defined', () => {
spyOn(appConfigProvider, 'getAppConfig').and.returnValue({ role: ExaminerRole.DLG } as AppConfig);
const pages: Page[] = [
{ title: 'Page1', descriptor: 'Page1' },
{ title: 'Page2', descriptor: 'Page2' },
];
const result = component.getFilteredPages(pages);
expect(result).toEqual(pages);
});

it('should return empty array if all pages are hidden for the role', () => {
spyOn(appConfigProvider, 'getAppConfig').and.returnValue({ role: ExaminerRole.DLG } as AppConfig);
const pages: Page[] = [
{ title: 'Page1', descriptor: 'Page1', hideWhenRole: [ExaminerRole.DLG] },
{ title: 'Page2', descriptor: 'Page2', hideWhenRole: [ExaminerRole.DLG] },
];
const result = component.getFilteredPages(pages);
expect(result).toEqual([]);
});
});

describe('initialisePersistentStorage', () => {
it('should call setSecureContainer when in ios', fakeAsync(() => {
spyOn(dataStore, 'createContainer')
Expand Down
5 changes: 3 additions & 2 deletions src/app/app.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</ion-header>

<ion-content [scrollY]="false" style="--ion-background-color: var(--mes-toolbar-background)">
<ion-item *ngFor="let page of pages | roleFilter" class="menu-item" detail="true" (click)="navPage(page)">
<ion-item *ngFor="let page of getFilteredPages(pages)" class="menu-item" detail="true" (click)="navPage(page)">
<ion-label class="burger-menu-item" [id]="page.descriptor | formatToID: 'side-menu'">{{
page.descriptor
}}</ion-label>
Expand All @@ -19,7 +19,8 @@
slot="end"
color="danger"
id="un-submitted-test-count-badge"
class="burger-menu-item">
class="burger-menu-item"
>
{{ count }}
</ion-badge>
</ion-item>
Expand Down
11 changes: 11 additions & 0 deletions src/app/app.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import { StartSendingCompletedTests, StopSendingCompletedTests } from '@store/te
import { SetupPolling, StopPolling } from '@store/journal/journal.actions';
import { getJournalState } from '@store/journal/journal.reducer';
import { getTests } from '@store/tests/tests.reducer';
import { isAnyOf } from '@shared/helpers/simplifiers';

interface AppComponentPageState {
logoutEnabled$: Observable<boolean>;
Expand Down Expand Up @@ -91,6 +92,16 @@ export class AppComponent extends LogoutBasePageComponent implements OnInit {
super(injector);
}

getFilteredPages(pages: Page[]): Page[] {
const role = this.appConfigProvider.getAppConfig()?.role;
if (!role) {
return pages;
}
return pages.filter(
(page) => !isAnyOf(role, (page.hideWhenRole || [])),
);
}

async ngOnInit() {
try {
await this.platform.ready();
Expand Down
3 changes: 0 additions & 3 deletions src/app/shared/pipes/pipes.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { EllipsisPipe } from '@shared/pipes/ellipsis.pipe';
import { CustomKeyValuePipe } from '@shared/pipes/customKeyValue.pipe';
import { ContainsPipe } from '@shared/pipes/contains.pipe';

import { RoleFilterPipe } from '@shared/pipes/roleFilter.pipe';
import { ModifyCompetencyLabel } from './modifyCompetencyLabel';

@NgModule({
Expand All @@ -14,15 +13,13 @@ import { ModifyCompetencyLabel } from './modifyCompetencyLabel';
EllipsisPipe,
CustomKeyValuePipe,
ContainsPipe,
RoleFilterPipe,
],
exports: [
ModifyCompetencyLabel,
FormatIdPipe,
EllipsisPipe,
CustomKeyValuePipe,
ContainsPipe,
RoleFilterPipe,
],
imports: [],
})
Expand Down
24 changes: 0 additions & 24 deletions src/app/shared/pipes/roleFilter.pipe.ts

This file was deleted.

0 comments on commit 8d372ed

Please # to comment.