Kamil Chmielowski
Web / Angular
Jasmine code coverage report for cv app.
You can contact with me by email: kamilchmielowski94@gmail.com or my page.
Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | 106x 84x 2x 2x 8x 176x 41x 8x 6x 12x 8x 1x 4x 1x 2x 1x 2x 3x 4x 4x 16x 5x 5x 3x 3x 3x 3x 3x 66x 3x | import { By } from '@angular/platform-browser'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ChangeDetectorRef, DebugElement } from '@angular/core'; import { SvgIconRegistryService } from 'angular-svg-icon'; import { TranslateTestingModule } from 'ngx-translate-testing'; import { appIcons } from '../app-icons-map'; import { routes } from '../app-routing.module'; import { ValidatorUtil } from './validator.util'; export class JasmineUtil { static moduleWithTranslations(modules: any[]): any[] { return [ ...modules, TranslateTestingModule .withTranslations('en', require('../../assets/i18n/en.json')) .withTranslations('pl', require('../../assets/i18n/pl.json')), ]; } static svgIconSpyProvider(): any { return { provide: SvgIconRegistryService, useValue: jasmine.createSpyObj(['getSvgByName']) } } static markForCheckSpy(fixture: ComponentFixture<any>): jasmine.Spy<any> { const changeDetectorRef = fixture.debugElement.injector.get(ChangeDetectorRef); return spyOn(changeDetectorRef.constructor.prototype, 'markForCheck'); } static shouldDisplayExistingIcons(fixture: ComponentFixture<any>): void { const svgIconsEl = fixture.debugElement.queryAll(By.css('svg-icon')); const iconNames = appIcons.map(icons => icons[0]); const everyIconsExist = svgIconsEl.every(icon => iconNames.includes(icon.componentInstance.name)); expect(everyIconsExist).toBeTrue(); } static shouldSetTextOrAriaLabelToClickableElement(fixture: ComponentFixture<any>, selector = '.clickable'): void { const clickableEl = [ ...fixture.debugElement.queryAll(By.css('button')), ...fixture.debugElement.queryAll(By.css(selector)), ]; expect(clickableEl.every(el => !!el.nativeElement.textContent || !!el.nativeElement.ariaLabel)).toBeTrue(); } static shouldRenderMinElements(fixture: ComponentFixture<any>, selector: string, min: number): void { expect(fixture.debugElement.queryAll(By.css(selector)).length).withContext(`Missing ${selector} selector`).toBeGreaterThanOrEqual(min); } static shouldRenderComponents(components: { [key: string]: DebugElement[] }): void { Object.entries(components).forEach(([key, component]) => { expect(component.length === 1).withContext(`missing ${key} component`).toBeTrue(); }); } static shouldSetValidHrefToElement(fixture: ComponentFixture<any>, selector = '.clickable'): void { const elements = fixture.debugElement.queryAll(By.css(selector)); expect(elements.every(el => ValidatorUtil.isValidHttpUrl(el.nativeElement.href))).toBeTrue(); } static shouldSetValidRouterLinkToElement(fixture: ComponentFixture<any>, selector = '.clickable'): void { const elements = fixture.debugElement.queryAll(By.css(selector)) expect(elements.every(el => routes .some(route => route.path === el.attributes['routerLink'] || el.attributes['routerLink'] === '/') )).toBeTrue(); } static shouldSetValidHrefToComponent(fixture: ComponentFixture<any>, selector = '.clickable', propertyName = 'href'): void { const elements = fixture.debugElement.queryAll(By.css(selector)) expect(elements.every(el => { return el.componentInstance[propertyName] ? ValidatorUtil.isValidHttpUrl(el.componentInstance[propertyName]) : true; })).toBeTrue(); } static shouldRenderNgContent(component: any, text = 'ng-content test'): void { const testFixture = TestBed.createComponent(component); expect(testFixture.nativeElement.textContent).toContain(text); } static shouldRenderOneWrapperElement(fixture: ComponentFixture<any>, selector: string): void { const elements = fixture.debugElement.queryAll(By.css(selector)); expect(elements.length).withContext('too many elements').toBe(1); expect(fixture.debugElement.nativeElement.firstElementChild.localName) .withContext('component doesn\'t start with html mark').toEqual(selector); expect(fixture.debugElement.children.length) .withContext('doesn\'t wrap a html content').toBe(1); } static sectionTitleComponentUnitTests() { return { existingIcon: (element: DebugElement) => { const iconNames = appIcons.map(icons => icons[0]); expect(iconNames.includes(element.componentInstance.icon)).toBeTrue(); } } } } |