[CST-5729] Fix issue with undefined link type

This commit is contained in:
Giuseppe Digilio
2023-06-08 13:15:02 +02:00
parent d2dfd0b293
commit 02bb7db119
3 changed files with 20 additions and 9 deletions

View File

@@ -107,6 +107,7 @@ export class BitstreamDownloadPageComponent implements OnInit {
let links = ''; let links = '';
signpostingLinks.forEach((link: SignpostingLink) => { signpostingLinks.forEach((link: SignpostingLink) => {
links = links + (isNotEmpty(links) ? ', ' : '') + `<${link.href}> ; rel="${link.rel}"` + (isNotEmpty(link.type) ? ` ; type="${link.type}" ` : ' ');
links = links + (isNotEmpty(links) ? ', ' : '') + `<${link.href}> ; rel="${link.rel}" ; type="${link.type}" `; links = links + (isNotEmpty(links) ? ', ' : '') + `<${link.href}> ; rel="${link.rel}" ; type="${link.type}" `;
}); });

View File

@@ -49,7 +49,7 @@ const mocklink = {
const mocklink2 = { const mocklink2 = {
href: 'http://test2.org', href: 'http://test2.org',
rel: 'rel2', rel: 'rel2',
type: 'type2' type: undefined
}; };
const mockSignpostingLinks: SignpostingLink[] = [mocklink, mocklink2]; const mockSignpostingLinks: SignpostingLink[] = [mocklink, mocklink2];
@@ -176,13 +176,18 @@ describe('ItemPageComponent', () => {
// Check if linkHeadService.addTag() was called with the correct arguments // Check if linkHeadService.addTag() was called with the correct arguments
expect(linkHeadService.addTag).toHaveBeenCalledTimes(mockSignpostingLinks.length); expect(linkHeadService.addTag).toHaveBeenCalledTimes(mockSignpostingLinks.length);
expect(linkHeadService.addTag).toHaveBeenCalledWith(mockSignpostingLinks[0] as LinkDefinition); let expected: LinkDefinition = mockSignpostingLinks[0] as LinkDefinition;
expect(linkHeadService.addTag).toHaveBeenCalledWith(mockSignpostingLinks[1] as LinkDefinition); expect(linkHeadService.addTag).toHaveBeenCalledWith(expected);
expected = {
href: 'http://test2.org',
rel: 'rel2'
};
expect(linkHeadService.addTag).toHaveBeenCalledWith(expected);
}); });
it('should set Link header on the server', () => { it('should set Link header on the server', () => {
expect(serverResponseService.setHeader).toHaveBeenCalledWith('Link', '<http://test.org> ; rel="rel1" ; type="type1" , <http://test2.org> ; rel="rel2" ; type="type2" '); expect(serverResponseService.setHeader).toHaveBeenCalledWith('Link', '<http://test.org> ; rel="rel1" ; type="type1" , <http://test2.org> ; rel="rel2" ');
}); });
}); });

View File

@@ -20,7 +20,7 @@ import { ServerResponseService } from '../../core/services/server-response.servi
import { SignpostingDataService } from '../../core/data/signposting-data.service'; import { SignpostingDataService } from '../../core/data/signposting-data.service';
import { SignpostingLink } from '../../core/data/signposting-links.model'; import { SignpostingLink } from '../../core/data/signposting-links.model';
import { isNotEmpty } from '../../shared/empty.util'; import { isNotEmpty } from '../../shared/empty.util';
import { LinkHeadService } from '../../core/services/link-head.service'; import { LinkDefinition, LinkHeadService } from '../../core/services/link-head.service';
/** /**
* This component renders a simple item page. * This component renders a simple item page.
@@ -111,12 +111,17 @@ export class ItemPageComponent implements OnInit, OnDestroy {
this.signpostingLinks = signpostingLinks; this.signpostingLinks = signpostingLinks;
signpostingLinks.forEach((link: SignpostingLink) => { signpostingLinks.forEach((link: SignpostingLink) => {
links = links + (isNotEmpty(links) ? ', ' : '') + `<${link.href}> ; rel="${link.rel}" ; type="${link.type}" `; links = links + (isNotEmpty(links) ? ', ' : '') + `<${link.href}> ; rel="${link.rel}"` + (isNotEmpty(link.type) ? ` ; type="${link.type}" ` : ' ');
this.linkHeadService.addTag({ let tag: LinkDefinition = {
href: link.href, href: link.href,
type: link.type,
rel: link.rel rel: link.rel
}); };
if (isNotEmpty(link.type)) {
tag = Object.assign(tag, {
type: link.type
});
}
this.linkHeadService.addTag(tag);
}); });
if (isPlatformServer(this.platformId)) { if (isPlatformServer(this.platformId)) {