/** * @license * Copyright Akveo. All Rights Reserved. * Licensed under the MIT License. See License.txt in the project root for license information. */ import { Component, Input } from '@angular/core' import { ComponentFixture, TestBed } from '@angular/core/testing'; import { NbInputDirective, NbThemeModule } from '@nebular/theme'; import { By } from '@angular/platform-browser'; import { NbComponentStatus } from '../component-status'; import { NbComponentSize } from '../component-size'; import { NbComponentShape } from '../component-shape'; import { NbInputModule } from './input.module'; @Component({ template: ` `, }) class InputTestComponent { @Input() size: NbComponentSize; @Input() status: NbComponentStatus; @Input() shape: NbComponentShape; @Input() fullWidth = false; } describe('Directive: NbInput', () => { let inputTestComponent: InputTestComponent; let fixture: ComponentFixture; let inputElement: Element; let textareaElement: Element; let inputDirective: NbInputDirective; beforeEach(() => { fixture = TestBed.configureTestingModule({ imports: [ NbThemeModule.forRoot(), NbInputModule ], declarations: [ InputTestComponent ], }) .createComponent(InputTestComponent); inputTestComponent = fixture.componentInstance; inputDirective = fixture.debugElement.query(By.directive(NbInputDirective)).componentInstance; inputElement = fixture.debugElement.query(By.css('textarea')).nativeElement; textareaElement = fixture.debugElement.query(By.css('input')).nativeElement; }); it('should set status', () => { inputTestComponent.status = 'danger'; fixture.detectChanges(); expect(inputElement.classList).toContain('status-danger'); expect(textareaElement.classList).toContain('status-danger'); }); it('should set size', () => { inputTestComponent.size = 'large'; fixture.detectChanges(); expect(inputElement.classList).toContain('size-large'); expect(textareaElement.classList).toContain('size-large'); }); it('should set shape class', () => { inputTestComponent.shape = 'semi-round'; fixture.detectChanges(); expect(inputElement.classList).toContain('shape-semi-round'); expect(textareaElement.classList).toContain('shape-semi-round'); }); it('should set full width', () => { inputTestComponent.fullWidth = true; fixture.detectChanges(); expect(inputElement.classList).toContain('input-full-width'); expect(textareaElement.classList).toContain('input-full-width'); }); });