presidential-innovation-fellows/code-gov-web

View on GitHub
src/app/components/header-navigation/header-navigation.component.spec.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { APP_BASE_HREF } from '@angular/common';
import { HttpModule } from '@angular/http';
import {
  Component,
  CUSTOM_ELEMENTS_SCHEMA,
} from '@angular/core';
import { RouterModule } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { MobileService } from '../../services/mobile';
import { HeaderNavigationComponent } from './header-navigation.component';
import { TestBed, ComponentFixture, inject } from '@angular/core/testing';

describe('HeaderNavigationComponent', () => {
  describe('component logic', () => {
    let fixture: ComponentFixture<HeaderNavigationComponent>;
    let component: HeaderNavigationComponent;

    beforeEach(() => {
        TestBed.configureTestingModule({
          imports: [
            HttpModule,
            RouterModule.forRoot([]),
          ],
          declarations: [
            HeaderNavigationComponent,
          ],
          providers: [
            { provide: APP_BASE_HREF, useValue: '/' },
            MobileService,
          ],
          schemas: [ CUSTOM_ELEMENTS_SCHEMA ],
        });
        fixture = TestBed.createComponent(HeaderNavigationComponent);
        component = fixture.debugElement.children[0].componentInstance;
        fixture.detectChanges();
    });

    it('should have defined HeaderNavigationComponent instance', () => {
        expect(component).toBeDefined();
    });

    it('resetSearchQuery() should set the text to empty', () => {
      component.searchQuery = 'test';
      component.resetSearchQuery();

      expect(component.searchQuery).toEqual('');
    });

    it('should set the URL whenever a search is performed', () => {
      spyOn(component.router, 'navigateByUrl');

      component.searchQuery = 'test';
      component.search();

      expect(component.router.navigateByUrl).toHaveBeenCalledWith('/search?q=test');
    });
  });
});