// import { Component, OnInit, OnDestroy, Pipe } from '@angular/core'; // import { Router, ActivatedRoute } from '@angular/router'; // import { DebugElement } from '@angular/core'; import { FormsModule, FormBuilder } from '@angular/forms'; import { Observable } from 'rxjs/Rx'; import { inject, tick, TestBed, getTestBed, async, fakeAsync, ComponentFixture } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { SharedService } from '../../../../shared/shared.service'; import { UserService } from '../../../../services/user.service'; 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 { TradeinService } from '../../../../services/tradein.service'; import { LoggingService } from '../../../../services/logging.service'; import { CheckoutService } from '../../../../services/checkout.service'; import { cartData, customerSearchResponse, packagesData } from '../../../../shared/mock-data'; import { PPUAddressComponent } from './ppu-address.component'; import { CheckoutStub } from '../../../../services/checkout.service.stub'; import { CustomerSearchStub } from '../../../../services/customer.service.stub'; import { HttpClient, HttpHandler } from '@angular/common/http'; describe('PPU Adress Component', () => { let ppuAddressObject: PPUAddressComponent; let fixture: ComponentFixture; let dataStub: CustomerSearchStub; beforeEach(async(() => { TestBed.configureTestingModule({ providers: [ SharedService, UserService, CartService, CustomerService, LookupService, CatalogService, TradeinService, LoggingService, CheckoutService, FormBuilder, HttpClient, HttpHandler ], imports: [ FormsModule, RouterTestingModule ], declarations: [PPUAddressComponent] }); fixture = TestBed.createComponent(PPUAddressComponent); TestBed.get(SharedService); TestBed.get(UserService); TestBed.get(CartService); ppuAddressObject = fixture.componentInstance; dataStub = fixture.debugElement.injector.get(CustomerService); ppuAddressObject.package = cartData.packages[0]; })); it('should be created', () => { expect(ppuAddressObject).toBeTruthy(); }); it('All methods are defined', async(() => { expect(ppuAddressObject.switchPpuAddress).toBeDefined(); expect(ppuAddressObject.validateAddress).toBeDefined(); expect(ppuAddressObject.updateAddress).toBeDefined(); })); it('updatePortingNumber are working correctly', async(() => { const inputData = { numberPortingId: 123456, phoneNumber: 123456, accountNumber: 123456, accountPin: 123456, } ppuAddressObject.checkoutService.customerInfo = { firstName: 'test', packages: cartData.packages[0] } ppuAddressObject.updateAddress(inputData); expect(ppuAddressObject.checkoutService.customerInfo.packages.numberPorting).toEqual(inputData); })); it('switchPpuAddress are working correctly', async(() => { spyOn(ppuAddressObject, 'updateAddress'); ppuAddressObject.switchPpuAddress(true); expect(ppuAddressObject.addressModel.isValidPPU).toBeTruthy(); expect(ppuAddressObject.addressModel.sameAsBilling).toBeTruthy(); })); it('should resolve validate Address test data', fakeAsync(() => { const inputData = { valid: true } ppuAddressObject.addressModel = { city: 'Bothell', address1: '1st floor', zipCode: '98021', state: 'WA', acceptE911: false }; ppuAddressObject.package = packagesData[0]; const spy = spyOn(dataStub, 'validateAddress').and.returnValue( Observable.of(customerSearchResponse) ); ppuAddressObject.validateAddress(inputData); fixture.detectChanges(); expect(ppuAddressObject.karmaTestResult).toEqual(customerSearchResponse); })); });