// import { Component, OnInit, OnDestroy } from '@angular/core'; // import { Router, ActivatedRoute, Route } from '@angular/router'; import { SharedService } from '../shared/shared.service'; import { UserService } from '../services/user.service'; // import { IWCToken, IChannel } from '../shared/modal/common'; // import { Logon, User } from '../shared/modal/user'; // import { ErrorComponent } from '../shared/error/error.component'; import { LoginComponent } from './login.component'; import { Observable } from 'rxjs/Rx'; import { loginResponse, profileResponse, userMockData } from '../shared/mock-data'; // import { DebugElement } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { TestBed, async, fakeAsync, ComponentFixture } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { CartService } from '../services/cart.service'; import { CustomerService } from '../services/customer.service'; import { LookupService } from '../services/lookup.service'; import { CatalogService } from '../services/catalog.service'; import { UserServiceStub } from '../services/user.service.stub'; import { TradeinService } from '../services/tradein.service'; import { LoggingService } from '../services/logging.service'; import { CheckoutService } from '../services/checkout.service'; import { HttpClient, HttpHandler } from '@angular/common/http'; import UserUtils from '../shared/user.utils'; describe('Login Component', () => { let loginObject: LoginComponent; let fixture: ComponentFixture; let dataStub: UserServiceStub; let spyNavigate: any; let sharedService: SharedService; beforeEach(async(() => { TestBed.configureTestingModule({ providers: [ SharedService, UserService, CartService, CustomerService, LookupService, CheckoutService, CatalogService, TradeinService, LoggingService, HttpClient, HttpHandler ], imports: [ FormsModule, RouterTestingModule ], declarations: [LoginComponent] }); fixture = TestBed.createComponent(LoginComponent); loginObject = fixture.componentInstance; dataStub = fixture.debugElement.injector.get(UserService); TestBed.compileComponents(); TestBed.get(SharedService); TestBed.get(CartService); TestBed.get(UserService); spyNavigate = spyOn(loginObject.router, 'navigate'); })); it('should be created', () => { expect(loginObject).toBeTruthy(); }); it('All methods are defined', async(() => { expect(loginObject.login).toBeDefined(); expect(loginObject.profile).toBeDefined(); })); it('should resolve Login response test data', fakeAsync(() => { const spy = spyOn(dataStub, 'login').and.returnValue( Observable.of(loginResponse) ); loginObject.login(loginResponse.logonId,loginResponse.password); fixture.detectChanges(); expect(loginObject.karmaTestResult).toEqual(loginResponse); })); it('should resolve Profile Response test data', fakeAsync(() => { const spy = spyOn(dataStub, 'getProfile').and.returnValue( Observable.of(profileResponse) ); loginObject.profile(loginResponse); fixture.detectChanges(); expect(loginObject.karmaTestResult).toEqual(profileResponse); })); it('should check the permissions for agent', async(() => { loginObject.user = userMockData; let isNextGen; UserUtils.setPermissionsForAgent(userMockData); expect(isNextGen).toBeFalsy(); })); it('favourites are updated correctly', async(() => { UserUtils.updateFavorites(userMockData); expect(userMockData.favorites.headerBackground).toEqual('black'); expect(userMockData.favorites.ordersPerPage).toEqual(25); expect(userMockData.favorites.contentBackground).toEqual('gray'); })); });