Skip to content

Commit de3dfaf

Browse files
author
Andrea Barbasso
committed
[DSC-2267] fix nested tab validation
1 parent 1f1cfc5 commit de3dfaf

3 files changed

Lines changed: 36 additions & 4 deletions

File tree

src/app/item-page/cris-item-page-tab.resolver.spec.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { HardRedirectService } from '../core/services/hard-redirect.service';
99
import { CrisItemPageTabResolver } from './cris-item-page-tab.resolver';
1010
import { TabDataService } from '../core/layout/tab-data.service';
1111
import { createPaginatedList } from '../shared/testing/utils.test';
12-
import { tabDetailsTest, tabPublicationsTest } from '../shared/testing/layout-tab.mocks';
12+
import { tabDetailsTest, tabFundingsTest, tabPublicationsTest, } from '../shared/testing/layout-tab.mocks';
1313
import { PLATFORM_ID } from '@angular/core';
1414

1515
describe('CrisItemPageTabResolver', () => {
@@ -48,8 +48,8 @@ describe('CrisItemPageTabResolver', () => {
4848
}
4949
});
5050

51-
const tabsRD = createSuccessfulRemoteDataObject(createPaginatedList([tabPublicationsTest, tabDetailsTest]));
52-
const tabsRD$ = createSuccessfulRemoteDataObject$(createPaginatedList([tabPublicationsTest, tabDetailsTest]));
51+
const tabsRD = createSuccessfulRemoteDataObject(createPaginatedList([tabPublicationsTest, tabDetailsTest, tabFundingsTest]));
52+
const tabsRD$ = createSuccessfulRemoteDataObject$(createPaginatedList([tabPublicationsTest, tabDetailsTest, tabFundingsTest]));
5353

5454
const noTabsRD = createSuccessfulRemoteDataObject(createPaginatedList([]));
5555
const noTabsRD$ = createSuccessfulRemoteDataObject$(createPaginatedList([]));
@@ -128,6 +128,18 @@ describe('CrisItemPageTabResolver', () => {
128128
}
129129
);
130130
});
131+
132+
it('Should handle tab shortnames with "::" correctly', () => {
133+
const tabRD = createSuccessfulRemoteDataObject(createPaginatedList([{ ...tabPublicationsTest, shortname: 'publication::details' }]));
134+
tabService.findByItem.and.returnValue(createSuccessfulRemoteDataObject$(tabRD) as any);
135+
136+
TestBed.runInInjectionContext(() => {
137+
return resolver.resolve({ params: { id: uuid } } as any, { url: '/entities/publication/1234-65487-12354-1235/publication::details' } as any);
138+
});
139+
140+
expect(router.navigateByUrl).not.toHaveBeenCalled();
141+
expect(hardRedirectService.redirect).not.toHaveBeenCalled();
142+
});
131143
});
132144

133145
describe('when platform is server', () => {

src/app/item-page/cris-item-page-tab.resolver.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,12 @@ export class CrisItemPageTabResolver implements Resolve<RemoteData<PaginatedList
5555
const urlSplit = state.url.split(route.params.id);
5656
const givenTab = urlSplit[1];
5757
const itemPageRoute = getItemPageRoute(itemRD.payload);
58-
const isValidTab = tabsRD.payload.page.some((tab) => !givenTab || `/${tab.shortname}` === givenTab);
58+
59+
const isValidTab = !givenTab || tabsRD.payload.page.some((tab) => {
60+
const shortnameSplit = tab.shortname.split('::');
61+
const shortname = shortnameSplit[shortnameSplit.length - 1];
62+
return `/${shortname}` === givenTab;
63+
});
5964

6065
const mainTab = tabsRD.payload.page.length === 1
6166
? tabsRD.payload.page[0]

src/app/shared/testing/layout-tab.mocks.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,4 +1050,19 @@ export const tabPeoplesTest: CrisLayoutTab = {
10501050
}
10511051
}
10521052
};
1053+
export const tabFundingsTest: CrisLayoutTab = {
1054+
'id': 395,
1055+
'shortname': 'outputs::fundings',
1056+
'header': 'Fundings',
1057+
'entityType': 'OrgUnit',
1058+
'priority': 0,
1059+
'security': 0,
1060+
'type': TAB,
1061+
'uuid': '123123123123',
1062+
'_links': {
1063+
'self': {
1064+
'href': 'http://localhost:8080/server/api/layout/tabs/401',
1065+
},
1066+
},
1067+
};
10531068
export const tabsWithNestedLevel = [tabDetailsTest, tabPublicationsTest, tabRpPublicationsTest, tabProjectsTest, tabRpProjectsTest, tabPeoplesTest];

0 commit comments

Comments
 (0)