import { TemplateInfoComponent } from './template-info.component'; import { EmailSummaryComponent } from './../email-summary/email-summary.component'; 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, packageData, packagesData, storeId, userMockData } from '../../shared/mock-data'; import { ORDER_STATUS } from '../../shared/form.constants'; import { CartServiceStub } from '../../services/cart.service.stub'; import { shippingData } from '../../shared/spec.constants'; import { ProductsComponent } from '../../shared/products/products.component'; import { CustomerSearchStub } from '../../services/customer.service.stub'; import { MarketingService } from '../../services/marketing.service'; import { HttpClient, HttpHandler } from '@angular/common/http'; describe('TemplateInfo Component', () => { let obj: TemplateInfoComponent; let fixture: ComponentFixture; let dataStub: CartServiceStub; let spyNavigate: any; beforeEach(async(() => { TestBed.configureTestingModule({ providers: [ SharedService, UserService, CartService, CustomerService, LookupService, CatalogService, TradeinService, LoggingService, CheckoutService, MarketingService, FormBuilder, HttpClient, HttpHandler ], imports: [ FormsModule, RouterTestingModule ], declarations: [TemplateInfoComponent, ProductsComponent, EmailSummaryComponent] }); fixture = TestBed.createComponent(TemplateInfoComponent); dataStub = fixture.debugElement.injector.get(CartService); obj = fixture.componentInstance; obj.cartService.cart = cartData; obj.cart = cartData; spyNavigate = spyOn(obj.router, 'navigate'); obj.storeId = storeId; obj.customer = customerSearchResponse; obj.user = userMockData; })); it('should be created', () => { expect(obj).toBeTruthy(); }); it('All methods are defined', async(() => { expect(obj.getCustomerProfile).toBeDefined(); })); it('should resolve get Customer Profile test data', fakeAsync(() => { const customerStub = fixture.debugElement.injector.get(CustomerService); const spy = spyOn(customerStub, 'getCustomerProfile').and.returnValue( Observable.of(customerSearchResponse) ); obj.getCustomerProfile(12345); expect(obj.customer).toEqual(customerSearchResponse); })); it('should resolve calculateTax test data', fakeAsync(() => { const cartStub = fixture.debugElement.injector.get(CartService); const spy = spyOn(cartStub, 'calculateTax').and.returnValue( Observable.of(cartData) ); obj.calculateTax(1245); expect(obj.cart).toEqual(cartData); })); it('should resolve getCartSummary test data', fakeAsync(() => { const cartStub = fixture.debugElement.injector.get(CartService); const spy = spyOn(cartStub, 'getCartSummary').and.returnValue( Observable.of(cartData) ); obj.getCartSummary(1245); expect(obj.cart).toEqual(cartData); })); it('should resolve sendQuoteToCustomer test data', fakeAsync(() => { obj.templateModel =Object.assign({},obj.customer); spyOn(obj,'sendPurchaseEstimate'); obj.sendQuoteToCustomer(); expect(obj.sendPurchaseEstimate).toHaveBeenCalled(); })); });