|  | 
|  | 1 | +import {TestBed, inject} from '@angular/core/testing'; | 
|  | 2 | +import {StyleManager} from './style-manager'; | 
|  | 3 | + | 
|  | 4 | + | 
|  | 5 | +describe('StyleManager', () => { | 
|  | 6 | +  let styleManager: StyleManager; | 
|  | 7 | + | 
|  | 8 | +  beforeEach(() => TestBed.configureTestingModule({ | 
|  | 9 | +    providers: [StyleManager] | 
|  | 10 | +  })); | 
|  | 11 | + | 
|  | 12 | +  beforeEach(inject([StyleManager], (sm: StyleManager) => { | 
|  | 13 | +    styleManager = sm; | 
|  | 14 | +  })); | 
|  | 15 | + | 
|  | 16 | +  afterEach(() => { | 
|  | 17 | +    let links = document.head.querySelectorAll('link'); | 
|  | 18 | +    for (let link of Array.prototype.slice.call(links)) { | 
|  | 19 | +      if (link.className.includes('style-manager-')) { | 
|  | 20 | +        document.head.removeChild(link); | 
|  | 21 | +      } | 
|  | 22 | +    } | 
|  | 23 | +  }); | 
|  | 24 | + | 
|  | 25 | +  it('should add stylesheet to head', () => { | 
|  | 26 | +    styleManager.setStyle('test', 'test.css'); | 
|  | 27 | +    let styleEl = document.head.querySelector('.style-manager-test') as HTMLLinkElement; | 
|  | 28 | +    expect(styleEl).not.toBeNull(); | 
|  | 29 | +    expect(styleEl.href.endsWith('test.css')).toBe(true); | 
|  | 30 | +  }); | 
|  | 31 | + | 
|  | 32 | +  it('should change existing stylesheet', () => { | 
|  | 33 | +    styleManager.setStyle('test', 'test.css'); | 
|  | 34 | +    let styleEl = document.head.querySelector('.style-manager-test') as HTMLLinkElement; | 
|  | 35 | +    expect(styleEl).not.toBeNull(); | 
|  | 36 | +    expect(styleEl.href.endsWith('test.css')).toBe(true); | 
|  | 37 | + | 
|  | 38 | +    styleManager.setStyle('test', 'new.css'); | 
|  | 39 | +    expect(styleEl.href.endsWith('new.css')).toBe(true); | 
|  | 40 | +  }); | 
|  | 41 | + | 
|  | 42 | +  it('should remove existing stylesheet', () => { | 
|  | 43 | +    styleManager.setStyle('test', 'test.css'); | 
|  | 44 | +    let styleEl = document.head.querySelector('.style-manager-test') as HTMLLinkElement; | 
|  | 45 | +    expect(styleEl).not.toBeNull(); | 
|  | 46 | +    expect(styleEl.href.endsWith('test.css')).toBe(true); | 
|  | 47 | + | 
|  | 48 | +    styleManager.removeStyle('test'); | 
|  | 49 | +    styleEl = document.head.querySelector('.style-manager-test') as HTMLLinkElement; | 
|  | 50 | +    expect(styleEl).toBeNull(); | 
|  | 51 | +  }); | 
|  | 52 | +}); | 
0 commit comments