-
Notifications
You must be signed in to change notification settings - Fork 37
/
FormMenuSpec.js
119 lines (93 loc) · 3.48 KB
/
FormMenuSpec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*******************************************************************************
* Copyright (c) 2014-2015 BSI Business Systems Integration AG.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* BSI Business Systems Integration AG - initial API and implementation
******************************************************************************/
/* global linkWidgetAndAdapter */
describe('FormMenu', function() {
var session, desktop, helper;
beforeEach(function() {
setFixtures(sandbox());
session = sandboxSession();
helper = new scout.FormSpecHelper(session);
desktop = session.desktop;
});
function createMenu(modelProperties) {
var menu = helper.createField('FormMenu', desktop, modelProperties);
menu.form = helper.createFormWithOneField();
menu.desktop = desktop;
return menu;
}
function findPopup() {
return $('.popup');
}
describe('setSelected', function() {
it('opens and closes the form popup', function() {
var menu = createMenu();
menu.render(session.$entryPoint);
expect(findPopup()).not.toExist();
menu.setSelected(true);
expect(findPopup()).toBeVisible();
menu.setSelected(false);
expect(findPopup()).not.toExist();
});
it('opens the popup and the ellipsis if the menu is overflown', function() {
var ellipsisMenu = scout.menus.createEllipsisMenu({
parent: new scout.NullWidget(),
session: session
});
ellipsisMenu.render(session.$entryPoint);
var menu = createMenu();
menu.render(session.$entryPoint);
scout.menus.moveMenuIntoEllipsis(menu, ellipsisMenu);
expect(menu.rendered).toBe(false);
expect(findPopup()).not.toExist();
menu.setSelected(true);
expect(ellipsisMenu.selected).toBe(true);
expect(menu.selected).toBe(true);
expect(findPopup()).toBeVisible();
// cleanup
menu.setSelected(false);
ellipsisMenu.setSelected(false);
});
it('opens the popup but not the ellipsis if the menu is overflown and mobile popup style is used', function() {
var ellipsisMenu = scout.menus.createEllipsisMenu({
parent: new scout.NullWidget(),
session: session
});
ellipsisMenu.render(session.$entryPoint);
var menu = createMenu({popupStyle: scout.FormMenu.PopupStyle.MOBILE});
menu.render(session.$entryPoint);
scout.menus.moveMenuIntoEllipsis(menu, ellipsisMenu);
expect(menu.rendered).toBe(false);
expect(findPopup()).not.toExist();
menu.setSelected(true);
expect(ellipsisMenu.selected).toBe(false);
expect(menu.selected).toBe(true);
expect(findPopup()).toBeVisible();
// cleanup
menu.setSelected(false);
});
});
describe('onModelPropertyChange', function() {
describe('selected', function() {
it('calls setSelected', function() {
var menu = createMenu();
linkWidgetAndAdapter(menu, 'MenuAdapter');
menu.render(session.$entryPoint);
expect(findPopup()).not.toExist();
spyOn(menu, 'setSelected');
var event = createPropertyChangeEvent(menu, {
'selected': true
});
menu.modelAdapter.onModelPropertyChange(event);
expect(menu.setSelected).toHaveBeenCalled();
});
});
});
});