mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-21 21:15:24 +08:00
251 lines
6.8 KiB
TypeScript
251 lines
6.8 KiB
TypeScript
import {MenuController, Menu} from 'ionic-angular';
|
|
|
|
export function run() {
|
|
describe('MenuController', () => {
|
|
|
|
describe('get() without menuId', () => {
|
|
|
|
it('should not get a menu if no menus', () => {
|
|
let menu = menuCtrl.get();
|
|
expect(menu).toEqual(null);
|
|
});
|
|
|
|
it('should get the only menu', () => {
|
|
let someMenu = mockMenu();
|
|
menuCtrl.register(someMenu);
|
|
|
|
let menu = menuCtrl.get();
|
|
expect(menu).toEqual(someMenu);
|
|
});
|
|
|
|
it('should get the only menu if menuId === ""', () => {
|
|
let someMenu = mockMenu();
|
|
menuCtrl.register(someMenu);
|
|
|
|
let menu = menuCtrl.get('');
|
|
expect(menu).toEqual(someMenu);
|
|
});
|
|
|
|
it('should get the enabled menu when multiple menus', () => {
|
|
let someMenu1 = mockMenu();
|
|
someMenu1.enabled = false;
|
|
menuCtrl.register(someMenu1);
|
|
|
|
let someMenu2 = mockMenu();
|
|
someMenu2.enabled = true;
|
|
menuCtrl.register(someMenu2);
|
|
|
|
let menu = menuCtrl.get();
|
|
expect(menu).toEqual(someMenu2);
|
|
});
|
|
|
|
});
|
|
|
|
describe('get() by id', () => {
|
|
|
|
it('should be null if no menus', () => {
|
|
let menu = menuCtrl.get('myid');
|
|
expect(menu).toEqual(null);
|
|
});
|
|
|
|
it('should be null if no matching menus with id', () => {
|
|
let someMenu = mockMenu();
|
|
someMenu.id = 'whatever';
|
|
menuCtrl.register(someMenu);
|
|
|
|
let menu = menuCtrl.get('myMenu');
|
|
expect(menu).toEqual(null);
|
|
});
|
|
|
|
it('should get the menu by id with matching id', () => {
|
|
let someMenu = mockMenu();
|
|
someMenu.id = 'myMenu';
|
|
menuCtrl.register(someMenu);
|
|
|
|
let menu = menuCtrl.get('myMenu');
|
|
expect(menu).toEqual(someMenu);
|
|
});
|
|
|
|
it('should get the menu by id with left', () => {
|
|
let someMenu = mockMenu();
|
|
someMenu.id = 'myMenu';
|
|
someMenu.side = 'left';
|
|
menuCtrl.register(someMenu);
|
|
|
|
let menu = menuCtrl.get('myMenu');
|
|
expect(menu).toEqual(someMenu);
|
|
});
|
|
|
|
it('should get the menu by id with matching id when multiple menus', () => {
|
|
let someMenu1 = mockMenu();
|
|
someMenu1.id = 'myMenu1';
|
|
menuCtrl.register(someMenu1);
|
|
|
|
let someMenu2 = mockMenu();
|
|
someMenu2.id = 'myMenu2';
|
|
menuCtrl.register(someMenu2);
|
|
|
|
let menu = menuCtrl.get('myMenu1');
|
|
expect(menu).toEqual(someMenu1);
|
|
|
|
menu = menuCtrl.get('myMenu2');
|
|
expect(menu).toEqual(someMenu2);
|
|
});
|
|
|
|
});
|
|
|
|
describe('get() by side', () => {
|
|
|
|
it('should not get a menu with a left side if no menus', () => {
|
|
let menu = menuCtrl.get('left');
|
|
expect(menu).toEqual(null);
|
|
});
|
|
|
|
it('should not get a menu with a right side if no menus', () => {
|
|
let menu = menuCtrl.get('right');
|
|
expect(menu).toEqual(null);
|
|
});
|
|
|
|
it('should get the only left menu', () => {
|
|
let someMenu = mockMenu();
|
|
someMenu.side = 'left';
|
|
menuCtrl.register(someMenu);
|
|
|
|
let menu = menuCtrl.get('left');
|
|
expect(menu).toEqual(someMenu);
|
|
});
|
|
|
|
it('should get the enabled left menu', () => {
|
|
let someMenu1 = mockMenu();
|
|
someMenu1.side = 'left';
|
|
someMenu1.enabled = false;
|
|
menuCtrl.register(someMenu1);
|
|
|
|
let someMenu2 = mockMenu();
|
|
someMenu2.side = 'left';
|
|
someMenu2.enabled = true;
|
|
menuCtrl.register(someMenu2);
|
|
|
|
let menu = menuCtrl.get('left');
|
|
expect(menu).toEqual(someMenu2);
|
|
});
|
|
|
|
it('should get the first left menu when all are disabled', () => {
|
|
let someMenu1 = mockMenu();
|
|
someMenu1.side = 'left';
|
|
someMenu1.enabled = false;
|
|
menuCtrl.register(someMenu1);
|
|
|
|
let someMenu2 = mockMenu();
|
|
someMenu2.side = 'left';
|
|
someMenu2.enabled = false;
|
|
menuCtrl.register(someMenu2);
|
|
|
|
let menu = menuCtrl.get('left');
|
|
expect(menu).toEqual(someMenu1);
|
|
});
|
|
|
|
it('should get the only right menu', () => {
|
|
let someMenu = mockMenu();
|
|
someMenu.side = 'right';
|
|
menuCtrl.register(someMenu);
|
|
|
|
let menu = menuCtrl.get('right');
|
|
expect(menu).toEqual(someMenu);
|
|
});
|
|
|
|
it('should get the menu by left with id', () => {
|
|
let someMenu = mockMenu();
|
|
someMenu.id = 'myMenu';
|
|
someMenu.side = 'left';
|
|
menuCtrl.register(someMenu);
|
|
|
|
let menu = menuCtrl.get('left');
|
|
expect(menu).toEqual(someMenu);
|
|
});
|
|
|
|
});
|
|
|
|
describe('enable()', () => {
|
|
|
|
it('should enable a menu', () => {
|
|
let someMenu = mockMenu();
|
|
someMenu.enabled = true;
|
|
menuCtrl.register(someMenu);
|
|
someMenu._menuCtrl = menuCtrl;
|
|
|
|
let menu = menuCtrl.enable(true);
|
|
expect(menu.enabled).toEqual(true);
|
|
|
|
menu = menuCtrl.enable(false);
|
|
expect(menu.enabled).toEqual(false);
|
|
});
|
|
|
|
it('should be only one enabled menu on the same side', () => {
|
|
let someMenu1 = mockMenu();
|
|
someMenu1.enabled = true;
|
|
someMenu1.side = 'left';
|
|
someMenu1.id = 'menu1';
|
|
someMenu1._menuCtrl = menuCtrl;
|
|
menuCtrl.register(someMenu1);
|
|
|
|
let someMenu2 = mockMenu();
|
|
someMenu2.enabled = false;
|
|
someMenu2.side = 'left';
|
|
someMenu2.id = 'menu2';
|
|
someMenu2._menuCtrl = menuCtrl;
|
|
menuCtrl.register(someMenu2);
|
|
|
|
let someMenu3 = mockMenu();
|
|
someMenu3.enabled = true;
|
|
someMenu3.side = 'right';
|
|
someMenu3.id = 'menu2';
|
|
someMenu3._menuCtrl = menuCtrl;
|
|
menuCtrl.register(someMenu3);
|
|
|
|
menuCtrl.enable(true, 'menu1');
|
|
expect(someMenu1.enabled).toEqual(true);
|
|
expect(someMenu2.enabled).toEqual(false);
|
|
expect(someMenu3.enabled).toEqual(true);
|
|
|
|
menuCtrl.enable(true, 'menu2');
|
|
expect(someMenu1.enabled).toEqual(false);
|
|
expect(someMenu2.enabled).toEqual(true);
|
|
expect(someMenu3.enabled).toEqual(true);
|
|
|
|
menuCtrl.enable(true, 'menu1');
|
|
expect(someMenu1.enabled).toEqual(true);
|
|
expect(someMenu2.enabled).toEqual(false);
|
|
expect(someMenu3.enabled).toEqual(true);
|
|
});
|
|
|
|
});
|
|
|
|
it('should register a menu', () => {
|
|
let menu = mockMenu();
|
|
menuCtrl.register(menu);
|
|
expect(menuCtrl.getMenus().length).toEqual(1);
|
|
|
|
let menu2 = mockMenu();
|
|
menuCtrl.register(menu2);
|
|
expect(menuCtrl.getMenus().length).toEqual(2);
|
|
|
|
menuCtrl.unregister(menu2);
|
|
menuCtrl.unregister(menu);
|
|
|
|
expect(menuCtrl.getMenus().length).toEqual(0);
|
|
});
|
|
|
|
let menuCtrl: MenuController;
|
|
|
|
beforeEach(() => {
|
|
menuCtrl = new MenuController();
|
|
});
|
|
|
|
function mockMenu(): Menu {
|
|
return new Menu(null, null, null, null, null, null, null);
|
|
}
|
|
|
|
});
|
|
}
|