// import { Component, OnInit, OnDestroy } from '@angular/core'; // import { Router, ActivatedRoute } from '@angular/router'; import { SharedService } from '../../../shared/shared.service'; import { CartService } from '../../../services/cart.service'; import { CustomerService } from '../../../services/customer.service'; import { DebugElement } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { Observable } from 'rxjs/Rx'; import { TestBed, async, fakeAsync, ComponentFixture } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { CreditCheckComponent } from './credit-check.component'; import { creditCheckResponse, cartData, customerSearchResponse, conflictsResponse, userMockData, paymentResponseData } from '../../../shared/mock-data'; import { PopupComponent } from '../../../shared/popup/popup.component'; import { UserService } from '../../../services/user.service'; import { LookupService } from '../../../services/lookup.service'; import { CatalogService } from '../../../services/catalog.service'; import { Customer } from '../../../shared/modal/customer'; import { Cart } from '../../../shared/modal/cart'; import { CartServiceStub } from '../../../services/cart.service.stub'; import { CustomerSearchStub } from '../../../services/customer.service.stub'; import * as Constants from '../../../shared/constants'; 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'; describe('Credit Check component', () => { let creditCheckObject: CreditCheckComponent; let fixture: ComponentFixture; let dataStub: CustomerSearchStub; let cartDataStub: CartServiceStub; beforeEach(async(() => { TestBed.configureTestingModule({ providers: [ SharedService, CatalogService, LookupService, UserService, CartService, CustomerService, CheckoutService, TradeinService, LoggingService, HttpClient, HttpHandler ], imports: [ FormsModule, RouterTestingModule ], declarations: [CreditCheckComponent, PopupComponent] }); fixture = TestBed.createComponent(CreditCheckComponent); creditCheckObject = fixture.componentInstance; creditCheckObject.cartService.cart = cartData; creditCheckObject.customerModel = { 'firstName': 'dsa', 'lastName': 'dsa', 'phone1': '5415466544', 'validDealerCode': true, 'nonTMOMobileNumber': '123-456-7980', 'nonTMOMobilePin': '1234', 'eligibility':'Y', 'eligibilityDate':'2018-08-01', 'paymentCount':'12', 'brandType':'Prepaid', 'accountNumber':'12345678' }; creditCheckObject.creditType = 'CC'; creditCheckObject.creditCheckModel = { idNumber: 1234, employeeId: '1234', idExpiration: '2018-06', idIssuedState: 'california', idType: 'DL', ssn: '1234', pin: '1234', dateOfBirth: '01/01/2017', confirmPin: '1234' } creditCheckObject['cart'] = creditCheckObject.cartService.cart; creditCheckObject.userService.user = userMockData; creditCheckObject.user = userMockData; dataStub = fixture.debugElement.injector.get(CustomerService); cartDataStub = fixture.debugElement.injector.get(CartService); TestBed.compileComponents(); TestBed.get(SharedService); TestBed.get(CartService); TestBed.get(UserService); })); // tests here it('should be created', () => { expect(creditCheckObject).toBeTruthy(); }); it('All methods are defined', async(() => { expect(creditCheckObject.checkEligibility).toBeDefined(); expect(creditCheckObject.processCreditCheck).toBeDefined(); expect(creditCheckObject.resolveConflicts).toBeDefined(); expect(creditCheckObject.removeConflicts).toBeDefined(); })); it('Popup Conflicts are resolved correctly', () => { creditCheckObject.customerForm = { valid: true } spyOn(creditCheckObject.conflictModel, 'hide'); creditCheckObject.resolveConflicts(); expect(creditCheckObject.conflictModel.hide).toHaveBeenCalled(); expect(creditCheckObject.hasItemsInCart).toBeFalsy(); }); it('min date for checking age criteria is set correctly', () => { const minDate = creditCheckObject.setMinDate(); expect(minDate).toEqual('2001-12-31'); }); it('State is set to null for military id', () => { const idSelected = 'ALIE'; creditCheckObject.idTypeChanged(idSelected); expect(creditCheckObject.creditCheckModel.idIssuedState).toEqual(''); }); it('submit button is disabled if customer from is invalid', () => { creditCheckObject.customerForm = { valid: true } expect(creditCheckObject.enableOrDisableSubmit(creditCheckObject.customerForm)).toBeFalsy(); }); it('passcodes are validated correctly', () => { const pin = { value: 5925967, valid: true } const confirmPin = { value: 5925967, valid: true } const spy = spyOn(dataStub, 'validatePINFormat').and.returnValue( Observable.of(paymentResponseData) ); creditCheckObject.validatePasscode(pin, confirmPin); expect(creditCheckObject.customerService.validatePINFormat).toHaveBeenCalledWith(creditCheckObject.storeId, pin.value); expect(creditCheckObject.creditCheckModel.isValidPIN).toBeTruthy(); }); it('should resolve remove conflicts test data', fakeAsync(() => { const cartStub = fixture.debugElement.injector.get(CartService); const spy = spyOn(cartStub, 'resolveConflicts').and.returnValue( Observable.of(conflictsResponse) ); creditCheckObject.removeConflicts(); expect(creditCheckObject.karmaTestResult).toEqual(conflictsResponse); })); });