Skip to content
Snippets Groups Projects
app.component.spec.ts 2.06 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { ComponentFixture, TestBed, async } from '@angular/core/testing';
    import { provideMockStore, MockStore } from '@ngrx/store/testing';
    import { Component, Input } from '@angular/core';
    import { RouterTestingModule } from '@angular/router/testing';
    
    import { AppComponent } from './app.component';
    import * as fromLogin from '../../login/store/login.reducer';
    import * as loginActions from '../../login/store/login.action';
    import { LoginToken } from "../../login/store/model";
    
    describe('[Search] Container: AppComponent', () => {
        @Component({ selector: 'app-nav', template: '' })
        class NavStubComponent {
            @Input() isAuthenticated: boolean;
            @Input() loginToken: LoginToken;
        }
    
        let component: AppComponent;
        let fixture: ComponentFixture<AppComponent>;
        let store: MockStore;
        const initialState = {
            login: { ...fromLogin.initialState }
        };
    
        beforeEach(async(() => {
            TestBed.configureTestingModule({
                imports: [RouterTestingModule],
                declarations: [
                    AppComponent,
                    NavStubComponent
                ],
                providers: [
                    provideMockStore({ initialState })
                ]
            });
            fixture = TestBed.createComponent(AppComponent);
            component = fixture.componentInstance;
            store = TestBed.inject(MockStore);
        }));
    
        it('should create the component', () => {
            expect(component).toBeTruthy();
        });
    
        it('should execute ngOnInit lifecycle', () => {
            const loginLocalStorageAction = new loginActions.LoginLocalStorageAction();
            const spy = spyOn(store, 'dispatch');
            component.ngOnInit();
            expect(spy).toHaveBeenCalledTimes(1);
            expect(spy).toHaveBeenCalledWith(loginLocalStorageAction);
        });
    
        it('#logout() should dispatch LogoutAction', () => {
            const logoutAction = new loginActions.LogoutAction();
            const spy = spyOn(store, 'dispatch');
            component.logout();
            expect(spy).toHaveBeenCalledTimes(1);
            expect(spy).toHaveBeenCalledWith(logoutAction);
        });
    });