Create link head spec file

This commit is contained in:
Nathan Buckingham
2022-02-25 14:56:36 -05:00
parent efb76ea883
commit ffb34da3e7
2 changed files with 59 additions and 3 deletions

View File

@@ -0,0 +1,45 @@
import { DOCUMENT } from '@angular/common';
import { Renderer2, RendererFactory2 } from '@angular/core';
import { TestBed, waitForAsync } from '@angular/core/testing';
import { MockProvider } from 'ng-mocks';
import { LinkHeadService } from './link-head.service';
describe('LinkHeadService', () => {
let service: LinkHeadService;
const renderer2: Renderer2 = {
createRenderer: jasmine.createSpy('createRenderer'),
createElement: jasmine.createSpy('createElement'),
setAttribute: jasmine.createSpy('setAttribute'),
appendChild: jasmine.createSpy('appendChild')
} as unknown as Renderer2;
beforeEach(waitForAsync(() => {
return TestBed.configureTestingModule({
providers: [
MockProvider(RendererFactory2, {
createRenderer: () => renderer2
}),
{ provide: Document, useExisting: DOCUMENT },
]
});
}));
beforeEach(() => {
service = new LinkHeadService(TestBed.inject(RendererFactory2), TestBed.inject(DOCUMENT));
});
describe('link', () => {
it('should create a link tag', () => {
const link = service.addTag({
href: 'test',
type: 'application/atom+xml',
rel: 'alternate',
title: 'Sitewide Atom feed'
});
expect(link).not.toBeUndefined();
});
});
});

View File

@@ -12,7 +12,13 @@ export class LinkHeadService {
) { ) {
} }
addTag(tag: LinkDefinition, forceCreation?: boolean) {
/**
* Method to create a Link tag in the HEAD of the html.
* @param tag LinkDefition is the paramaters to define a link tag.
* @returns Link tag that was created
*/
addTag(tag: LinkDefinition) {
try { try {
const renderer = this.rendererFactory.createRenderer(this.document, { const renderer = this.rendererFactory.createRenderer(this.document, {
@@ -23,7 +29,8 @@ export class LinkHeadService {
}); });
const link = renderer.createElement('link'); const link = renderer.createElement('link');
console.log(tag);
console.log(link);
const head = this.document.head; const head = this.document.head;
if (head === null) { if (head === null) {
@@ -35,12 +42,16 @@ export class LinkHeadService {
}); });
renderer.appendChild(head, link); renderer.appendChild(head, link);
return renderer;
} catch (e) { } catch (e) {
console.error('Error within linkService : ', e); console.error('Error within linkService : ', e);
} }
} }
/**
* Removes a link tag in header based on the given attrSelector.
* @param attrSelector The attr assigned to a link tag which will be used to determine what link to remove.
*/
removeTag(attrSelector: string) { removeTag(attrSelector: string) {
if (attrSelector) { if (attrSelector) {
try { try {