redoc/lib/components/ApiLogo/api-logo.spec.ts

79 lines
2.1 KiB
TypeScript
Raw Normal View History

'use strict';
2016-06-12 20:44:34 +03:00
import { getChildDebugElement } from '../../../tests/helpers';
2016-05-05 11:05:02 +03:00
import {Component, provide} from '@angular/core';
import {
2016-04-30 00:45:53 +03:00
inject,
2016-05-06 00:48:41 +03:00
async,
beforeEach,
beforeEachProviders,
it
2016-05-06 00:48:41 +03:00
} from '@angular/core/testing';
import { TestComponentBuilder } from '@angular/compiler/testing';
2016-06-12 20:44:34 +03:00
import { ApiLogo } from './api-logo';
2016-06-22 21:17:48 +03:00
import { SpecManager } from '../../utils/SpecManager';
describe('Redoc components', () => {
describe('ApiLogo Component', () => {
let builder;
let component;
let fixture;
let schemaMgr;
let schemaUrl = '/tests/schemas/api-info-test.json';
beforeEachProviders(() => [
2016-06-22 21:17:48 +03:00
provide(SpecManager, {useValue: new SpecManager()})
]);
2016-06-22 21:17:48 +03:00
beforeEach(async(inject([TestComponentBuilder, SpecManager], (tcb, _schemaMgr) => {
builder = tcb;
schemaMgr = _schemaMgr;
2016-04-30 00:45:53 +03:00
return schemaMgr.load(schemaUrl);
})));
beforeEach((done) => {
2016-06-13 20:54:24 +03:00
builder.createAsync(TestAppComponent).then(_fixture => {
fixture = _fixture;
component = getChildDebugElement(fixture.debugElement, 'api-logo').componentInstance;
fixture.detectChanges();
done();
}, err => done.fail(err));
});
it('should init component data', () => {
expect(component).not.toBeNull();
expect(component.data).not.toBeNull();
});
it('should not display image when no x-logo', () => {
2016-06-13 20:54:24 +03:00
component.data.should.be.empty();
let nativeElement = getChildDebugElement(fixture.debugElement, 'api-logo').nativeElement;
let imgElement = nativeElement.querySelector('img');
expect(imgElement).toBeNull();
// update schemaUrl to load other schema in the next test
2016-02-01 15:47:21 +03:00
schemaUrl = '/tests/schemas/extended-petstore.yml';
});
it('should load values from spec and use transparent bgColor by default', () => {
component.data.imgUrl.should.endWith('petstore-logo.png');
component.data.bgColor.should.be.equal('transparent');
});
});
});
/** Test component that contains an ApiInfo. */
@Component({
selector: 'test-app',
directives: [ApiLogo],
2016-06-22 21:17:48 +03:00
providers: [SpecManager],
template:
`<api-logo></api-logo>`
})
2016-06-13 20:54:24 +03:00
class TestAppComponent {
}