import { Component, Input, ViewChild, OnInit, OnDestroy } from '@angular/core'; import { Router } from '@angular/router'; import * as Constants from '../../shared/constants' import { SharedService } from '../../shared/shared.service'; import { CartService } from '../../services/cart.service'; import { CustomerService } from '../../services/customer.service'; import { CheckoutService } from '../../services/checkout.service'; import { DebugElement } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { Observable } from 'rxjs/Rx'; import { By } from '@angular/platform-browser'; import { inject, tick, TestBed, getTestBed, async, fakeAsync, ComponentFixture } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { UserService } from '../../services/user.service'; import { LookupService } from '../../services/lookup.service'; import { CatalogService } from '../../services/catalog.service'; import { cartData } from '../../shared/mock-data'; import { TradeinService } from '../../services/tradein.service'; import { LoggingService } from '../../services/logging.service'; import CartUtils from '../cart.utils'; import { OrderNotesComponent } from './order-notes.component'; import { OrderNotesResponse, userMockData } from '../mock-data'; import {HttpClient, HttpHandler} from '@angular/common/http'; describe('Order Notes component', () => { let obj: OrderNotesComponent; let fixture: ComponentFixture; let debugElement: DebugElement; let el: HTMLElement; beforeEach(async(() => { TestBed.configureTestingModule({ providers: [ SharedService, CartService, CustomerService, UserService, LookupService, CheckoutService, TradeinService, LoggingService, CatalogService, HttpClient, HttpHandler ], imports: [ FormsModule, RouterTestingModule ], declarations: [OrderNotesComponent] }); fixture = TestBed.createComponent(OrderNotesComponent); obj = fixture.componentInstance; obj.cartService.cart = cartData; obj['cart'] = cartData; obj.userService.user = userMockData; obj.user = userMockData; TestBed.compileComponents(); })); it('should be created', () => { expect(obj).toBeTruthy(); }); it('All methods are defined', () => { expect(obj.show).toBeDefined(); expect(obj.hide).toBeDefined(); expect(obj.onContainerClicked).toBeDefined(); }); it('should hide the compare modal', () => { obj.visibleAnimate = true; obj.hide(); expect(obj.visibleAnimate).toBeFalsy(); }); it('should show the compare modal', () => { obj.visibleAnimate = false; obj.show(); expect(obj.visible).toBeTruthy(); }); it('Should open the modal if it is closed and viceverse', async(() => { debugElement = fixture.debugElement.query(By.css('.fade')); el = debugElement.nativeElement; obj.show(); el.click(); expect(obj.visible).toEqual(true); })); it('should resolve loadOrderNotes test data', async(() => { const dataStub = fixture.debugElement.injector.get(LookupService); const spy = spyOn(dataStub, 'getOrderNotes').and.returnValue( Observable.of(OrderNotesResponse) ); obj.loadOrderNotes(); fixture.detectChanges(); expect(obj.KarmaTestResult).toEqual(OrderNotesResponse); })); it('should resolve orderAddNote test data', async(() => { obj.orderNotesModel = { subject: 'conflict', description: ' should resolve' } const dataStub = fixture.debugElement.injector.get(LookupService); const spy = spyOn(dataStub, 'createOrderNotes').and.returnValue( Observable.of(OrderNotesResponse) ); obj.orderAddNote(); fixture.detectChanges(); expect(obj.KarmaTestResult).toEqual(OrderNotesResponse); })); it('should resolve search MemoNotes test data', async(() => { obj.cart = cartData; const dataStub = fixture.debugElement.injector.get(LookupService); const spy = spyOn(dataStub, 'searchMemoNotes').and.returnValue( Observable.of(OrderNotesResponse) ); obj.searchMemoNotes(); fixture.detectChanges(); expect(obj.KarmaTestResult).toEqual(OrderNotesResponse); })); });