ohayolibs
Version:
Ohayo is a set of essential modules for ohayojp.
88 lines (82 loc) • 3.31 kB
text/typescript
import { Component, DebugElement, ViewChild } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { createTestContext } from '@ohayo/testing';
import { OhayoLocaleModule, OhayoLocaleService, en_US, zh_CN } from '@ohayo/theme';
import { TagSelectComponent } from './tag-select.component';
import { TagSelectModule } from './tag-select.module';
describe('components: tag-select', () => {
let fixture: ComponentFixture<TestComponent>;
let dl: DebugElement;
let context: TestComponent;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [TagSelectModule, OhayoLocaleModule],
declarations: [TestComponent],
});
({ fixture, dl, context } = createTestContext(TestComponent));
fixture.detectChanges();
});
afterEach(() => context.comp.ngOnDestroy());
describe('#expandable', () => {
it('with true', () => {
context.expandable = true;
fixture.detectChanges();
expect(dl.query(By.css('.tag-select__has-expand'))).not.toBeNull();
});
it('with false', () => {
context.expandable = false;
fixture.detectChanges();
expect(dl.query(By.css('.tag-select__has-expand'))).toBeNull();
});
});
it('should be switch states via click trigger', () => {
spyOn(context, 'change');
const triEl = dl.query(By.css('.tag-select__trigger')).nativeElement as HTMLElement;
expect(context.change).not.toHaveBeenCalled();
expect(triEl.innerHTML).toContain('展开');
// expect(triEl.querySelector('.anticon-up')).toBeNull();
// expect(triEl.querySelector('.anticon-down')).not.toBeNull();
triEl.click();
fixture.detectChanges();
expect(triEl.innerHTML).toContain('收起');
// expect(triEl.querySelector('.anticon-up')).not.toBeNull();
// expect(triEl.querySelector('.anticon-down')).toBeNull();
expect(context.change).toHaveBeenCalled();
});
it('#i18n', () => {
const triEl = dl.query(By.css('.tag-select__trigger')).nativeElement as HTMLElement;
expect(triEl.innerText).toContain(zh_CN.tagSelect.expand);
TestBed.inject<OhayoLocaleService>(OhayoLocaleService).setLocale(en_US);
fixture.detectChanges();
expect(triEl.innerText).toBe(en_US.tagSelect.expand);
});
});
({
template: `
<tag-select #comp [expandable]="expandable" (change)="change()">
<li *ngFor="let i of categories; let idx = index" style="width: 30%">{{ i.text }}</li>
</tag-select>
`,
})
class TestComponent {
('comp', { static: true })
comp: TagSelectComponent;
categories = [
{ id: 0, text: '全部', value: false },
{ id: 1, text: '类目一', value: false },
{ id: 2, text: '类目二', value: false },
{ id: 3, text: '类目三', value: false },
{ id: 4, text: '类目四', value: false },
{ id: 5, text: '类目五', value: false },
{ id: 6, text: '类目六', value: false },
{ id: 7, text: '类目七', value: false },
{ id: 8, text: '类目八', value: false },
{ id: 9, text: '类目九', value: false },
{ id: 10, text: '类目十', value: false },
{ id: 11, text: '类目十一', value: false },
{ id: 12, text: '类目十二', value: false },
];
expandable = true;
change(): void { }
}