// import { Component, OnInit, OnDestroy } from '@angular/core'; // import { Router, ActivatedRoute } from '@angular/router'; // import { Observable } from 'rxjs/observable'; // import { DebugElement } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { TestBed, async, ComponentFixture } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { DeviceComponent } from './device.component'; import { CartServiceStub } from '../../../../services/cart.service.stub'; 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 { AdjustPriceComponent } from '../adjust-price/adjust-price.component'; import { TradeinComponent } from '../tradein/tradein.component'; import { PopupComponent } from '../../../../shared/popup/popup.component'; import { OrderItemDevice, cartData, cartDataResponse, tradeInEligibilityData, TradeinResponseBySerialNumber } from '../../../../shared/mock-data'; import { TRADEIN_DEVICE_EXPIRATION_MESSAGE } from '../../../../shared/constants'; import { CheckoutService } from '../../../../services/checkout.service'; import { HttpClient, HttpHandler } from '@angular/common/http'; describe('Device Component', () => { let deviceObject: DeviceComponent; let fixture: ComponentFixture; let dataStub: CartServiceStub; const spyNavigate: any = []; beforeEach(async(() => { TestBed.configureTestingModule({ providers: [ SharedService, UserService, CartService, CustomerService, LookupService, CatalogService, CheckoutService, TradeinService, LoggingService, HttpClient, HttpHandler ], imports: [ FormsModule, RouterTestingModule ], declarations: [DeviceComponent, AdjustPriceComponent, TradeinComponent, PopupComponent] }); fixture = TestBed.createComponent(DeviceComponent); deviceObject = fixture.componentInstance; dataStub = fixture.debugElement.injector.get(CartService); TestBed.compileComponents(); TestBed.get(SharedService); TestBed.get(CartService); TestBed.get(UserService); deviceObject.orderItem = OrderItemDevice; deviceObject.package = cartData.packages[0]; deviceObject.tradeinInfo = { allTradeInfoList: [ { 'isTradeIn': true } ], showTradeinExpiryMessage: 'expired' } })); // tests here it('should be created', () => { expect(deviceObject).toBeTruthy(); }); it('All methods are defined', async(() => { expect(deviceObject.tradeinDevice).toBeDefined(); })); it('TradeIn model is displayed', async(() => { deviceObject.tradeinInfo = { allTradeInfoList: [ { 'isTradeIn': true } ] } const iftradeInDetailsExists = deviceObject.checkForTradeinDetailsExits(); expect(iftradeInDetailsExists).toBeTruthy(); })); it('Inventory Status is retrieved correctly', async(() => { const status = deviceObject.getInventoryStatus('INS'); expect(status).toEqual('In Stock'); })); it('TradeIn info is retrieved correctly', async(() => { spyOn(deviceObject, 'getTradeinInfo'); const promoDetails = { 'name': 'Iphone50', 'tradeinInfo': true } deviceObject.onSelectedPromo(promoDetails); expect(deviceObject.tradeinInfo).toEqual(promoDetails); expect(deviceObject.getTradeinInfo).toHaveBeenCalled(); })); it('Setting tradeIn Info for packages ', async(() => { const tradeinInfo = { 'packageId': 12, 'isTradeIn': true } deviceObject.setTradeinInfoForPackage(tradeinInfo); expect(deviceObject.tradeinInfo.responses.getItemTradeinInfo).toEqual(tradeinInfo); })); it('edit tradein functionality is working correctly', async(() => { spyOn(deviceObject.sharedService, 'addLogging'); deviceObject.editTradeIn(); expect(deviceObject.sharedService.addLogging).toHaveBeenCalledWith('DeviceComponent', 'editTradeIn()', 'Edit tradein'); })); /*it('validateSearchQuotation is working correctly', fakeAsync(() => { const quotes = { tradeInQuotes: [ { status: { statusCode : 'OFFERED' } }] } deviceObject.validateSearchQuotation(quotes); expect(deviceObject.tradeinInfo.showTradeinExpiryMessage).toEqual(''); }));it('validatebasicPromo is working correctly', fakeAsync(() => { const quotes = { promotions: [{ endDate : '02/02/2016' } ] } deviceObject.validatebasicPromo(quotes); expect(deviceObject.tradeinInfo.showTradeinExpiryMessage).toEqual(TRADEIN_DEVICE_EXPIRATION_MESSAGE); })); */ // it('should resolve getTradeinInfo test data', fakeAsync(() => { // const tradeinStub = fixture.debugElement.injector.get(TradeinService); // const spy = spyOn(tradeinStub, 'getItemTradeinInfo').and.returnValue( // Observable.of(TradeinResponseBySerialNumber) // ); // deviceObject.storeId = 10553; // deviceObject['cart'] = cartData; // deviceObject.getTradeinInfo(); // fixture.detectChanges(); // expect(deviceObject.KarmaTestResult).toEqual(TradeinResponseBySerialNumber); // })); // it('should resolve getAllTradeInfoList test data', fakeAsync(() => { // const tradeinStub = fixture.debugElement.injector.get(TradeinService); // const spy = spyOn(tradeinStub, 'getAllTradeinInfo').and.returnValue( // Observable.of(TradeinResponseBySerialNumber) // ); // deviceObject.storeId = 10553; // deviceObject['cart'] = cartData; // deviceObject.getAllTradeInfoList(); // fixture.detectChanges(); // expect(deviceObject.KarmaTestResult).toEqual(TradeinResponseBySerialNumber); // })); // it('should resolve delete test data', fakeAsync(() => { // const tradeinStub = fixture.debugElement.injector.get(TradeinService); // const spy = spyOn(tradeinStub, 'rmaCancel').and.returnValue( // Observable.of(TradeinResponseBySerialNumber) // ); // const getitemTradeinInfo = deviceObject.tradeinInfo.responses.getItemTradeinInfo; // deviceObject.storeId = 10553; // deviceObject['cart'] = cartData; // deviceObject.rmaCancel(); // fixture.detectChanges(); // expect(deviceObject.KarmaTestResult).toEqual(TradeinResponseBySerialNumber); // })); });