UNPKG

bixi

Version:

企业级中后台前端解决方案

115 lines (102 loc) 3.38 kB
import { ComponentFixture, TestBed, inject } from '@angular/core/testing'; import { RouterTestingModule } from "@angular/router/testing"; import { Component, DebugElement } from '@angular/core'; import { IMenu, BixiLayoutModule } from '../'; import { TranslateModule } from '@ngx-translate/core'; import { BixiLayoutService } from '../layout.service'; import { TableOutline, UserOutline } from '@ant-design/icons-angular/icons'; import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NzIconModule } from 'ng-zorro-antd'; import { By } from '@angular/platform-browser'; const icons = [TableOutline, UserOutline]; describe('bixi layout', () => { let fixture: ComponentFixture<BixiMenuDemoComponent>; let srv: BixiLayoutService; let debugEle: DebugElement; let context: BixiMenuDemoComponent; beforeEach(async () => { TestBed.configureTestingModule({ imports: [BixiLayoutModule, TranslateModule.forRoot(), NzIconModule.forRoot(icons), RouterTestingModule.withRoutes([]), BrowserAnimationsModule, NoopAnimationsModule], providers: [BixiLayoutService], declarations: [BixiMenuDemoComponent] }).compileComponents(); fixture = TestBed.createComponent(BixiMenuDemoComponent); debugEle = fixture.debugElement; context = fixture.componentInstance; }); beforeEach(inject([BixiLayoutService], (layoutService: BixiLayoutService) => { srv = layoutService; })); afterEach(() => { fixture.destroy(); }); it('should be className correct', () => { fixture.detectChanges(); const inlineMenu = debugEle.query(By.css('.ant-menu-inline')); expect(inlineMenu).not.toBeNull(); srv.toggleMenu(); fixture.detectChanges(); const verticalMenu = debugEle.query(By.css('.ant-menu-vertical')); expect(verticalMenu).not.toBeNull(); }) it('menu empty', () => { fixture.detectChanges(); let menuItems = debugEle.queryAll(By.css('.ant-menu-item')); expect(menuItems.length).toBe(4); context.menus = []; fixture.detectChanges(); menuItems = debugEle.queryAll(By.css('.ant-menu-item')); expect(menuItems.length).toBe(0); }) it('menu click', () => { fixture.detectChanges(); const menuItem = debugEle.query(By.css('.ant-menu-item')); expect(context.callback).toHaveBeenCalledTimes(0); menuItem.nativeElement.click(); expect(context.callback).toHaveBeenCalledTimes(1); }) }); @Component({ selector: 'app-demo', template: ` <bixi-layout-menu [menus]="menus" (menuClick)="callback()"></bixi-layout-menu>` }) export class BixiMenuDemoComponent { menus: IMenu[] = [ { title: 'Group 1', icon: 'user', selected: true, link: './', matchRouterExact: true }, { title: 'Group 2', icon: 'user', children: [ { title: 'Group 2-1', icon: 'bars', open: false, link: '/', matchRouterExact: true }, { title: 'Group 2-2', icon: 'bars', open: false, link: '/', matchRouterExact: true }, { title: 'Group 2-3', icon: 'bars', link: '/', open: false, matchRouterExact: true } ] } ]; callback = jasmine.createSpy('on menu item click'); }