1 |
|
2 | function moduleTests(ui) {
|
3 | var
|
4 | module = ui.module,
|
5 | element = ui.element,
|
6 | singleton = ui.singleton,
|
7 | name = $.fn[module].settings.name,
|
8 |
|
9 | testValue = 'Test',
|
10 | fixtures = jasmine.getFixtures(),
|
11 |
|
12 | originalSettings,
|
13 | $modules,
|
14 | $oneModule,
|
15 | $module,
|
16 | $clone
|
17 | ;
|
18 |
|
19 |
|
20 | fixtures.fixturesPath = 'base/test/fixtures/';
|
21 |
|
22 |
|
23 | $.fn[module].settings.debug = false;
|
24 | $.fn[module].settings.performance = false;
|
25 | $.fn[module].settings.verbose = false;
|
26 |
|
27 |
|
28 | beforeEach(function() {
|
29 |
|
30 | fixtures.load(module + '.html');
|
31 |
|
32 | originalSettings = $.fn[module].settings;
|
33 |
|
34 |
|
35 | $module = $(element);
|
36 |
|
37 |
|
38 | if($module.size() == 1) {
|
39 | $oneModule = $module;
|
40 | $clone = $module.clone().appendTo( $(sandbox()) );
|
41 | $modules = $clone.add($module);
|
42 | }
|
43 |
|
44 | else {
|
45 | $modules = $(element);
|
46 | $clone = $module.eq(1);
|
47 | $oneModule = $modules.first();
|
48 | }
|
49 |
|
50 | });
|
51 |
|
52 | afterEach(function() {
|
53 |
|
54 | $.fn[module].settings = originalSettings;
|
55 |
|
56 | $(element).remove();
|
57 | });
|
58 |
|
59 | |
60 |
|
61 |
|
62 |
|
63 | |
64 |
|
65 |
|
66 | describe('Module', function() {
|
67 |
|
68 | it("allows chaining when no settings returned", function() {
|
69 | var $chain = $modules[module]();
|
70 | expect($chain).toExist();
|
71 | expect($chain.size()).toBe($modules.size());
|
72 | });
|
73 |
|
74 | it("returns a string when one setting returned", function() {
|
75 | var result = $oneModule[module]('setting', 'name');
|
76 | expect(typeof result).toBe('string');
|
77 | });
|
78 |
|
79 | it("returns an array when multiple settings returned", function() {
|
80 | var result = $modules[module]('setting', 'name');
|
81 | expect( $.isArray(result) ).toBeTruthy();
|
82 | });
|
83 |
|
84 | it("has an instance in metadata after init", function() {
|
85 | $oneModule[module]();
|
86 | expect($module).toHaveData('module-' + module);
|
87 | });
|
88 |
|
89 | });
|
90 |
|
91 | |
92 |
|
93 |
|
94 |
|
95 | describe('Settings', function() {
|
96 |
|
97 | it("clears settings on re-init", function() {
|
98 | $oneModule[module]({
|
99 | name: testValue
|
100 | });
|
101 |
|
102 | var retrievedValue = $oneModule[module]('setting', 'name');
|
103 | expect(retrievedValue).toBe(testValue);
|
104 |
|
105 |
|
106 | $oneModule[module]();
|
107 | retrievedValue = $oneModule[module]('setting', 'name');
|
108 | expect(retrievedValue).toBe(name);
|
109 | });
|
110 |
|
111 | it("allows default settings to be changed", function() {
|
112 | $.fn[module].settings.name = testValue;
|
113 | $oneModule[module]();
|
114 |
|
115 | var retrievedValue = $oneModule[module]('setting', 'name');
|
116 | $.fn[module].settings.name = name;
|
117 |
|
118 | expect(retrievedValue).toBe(testValue);
|
119 | });
|
120 |
|
121 | it("allows settings to be changed during init", function() {
|
122 | $oneModule[module]({
|
123 | name: testValue
|
124 | });
|
125 |
|
126 | var retrievedValue = $oneModule[module]('setting', 'name');
|
127 |
|
128 | expect(retrievedValue).toBe(testValue);
|
129 | });
|
130 |
|
131 | it("allows settings to be changed during runtime", function() {
|
132 | $oneModule[module]();
|
133 |
|
134 | var retrievedValue = $oneModule[module]('setting', 'name');
|
135 |
|
136 | expect(retrievedValue).toBe(name);
|
137 | });
|
138 |
|
139 | });
|
140 |
|
141 | |
142 |
|
143 |
|
144 |
|
145 | if(!singleton) {
|
146 |
|
147 | describe('Group Contamination', function() {
|
148 |
|
149 | it("creates settings for all instances", function() {
|
150 | $modules[module]('setting', 'name', testValue);
|
151 |
|
152 | var retrievedValue = $oneModule[module]('setting', 'name');
|
153 | var clonedSetting = $clone[module]('setting', 'name');
|
154 |
|
155 | expect(retrievedValue).toBe(testValue);
|
156 | expect(clonedSetting).toBe(testValue);
|
157 |
|
158 | $oneModule[module]({
|
159 | 'name': testValue
|
160 | });
|
161 |
|
162 | expect(retrievedValue).toBe(testValue);
|
163 | expect(clonedSetting).toBe(testValue);
|
164 |
|
165 | });
|
166 |
|
167 | it("does not change other elements settings when changing one element", function() {
|
168 | $modules[module]();
|
169 | $oneModule[module]('setting', 'name', testValue);
|
170 |
|
171 | var retrievedValue = $oneModule[module]('setting', 'name');
|
172 | var clonedSetting = $clone[module]('setting', 'name');
|
173 |
|
174 | expect(retrievedValue).toBe(testValue);
|
175 | expect(clonedSetting).toBe(name);
|
176 |
|
177 | });
|
178 |
|
179 | it("does not change other elements when re-initialized", function() {
|
180 | $modules[module]();
|
181 |
|
182 | $oneModule[module]({
|
183 | 'name': testValue
|
184 | });
|
185 |
|
186 | var retrievedValue = $oneModule[module]('setting', 'name');
|
187 | var clonedSetting = $clone[module]('setting', 'name');
|
188 |
|
189 | expect(retrievedValue).toBe(testValue);
|
190 | expect(clonedSetting).toBe(name);
|
191 |
|
192 | });
|
193 |
|
194 | });
|
195 |
|
196 | }
|
197 |
|
198 | |
199 |
|
200 |
|
201 | describe('Destroy', function() {
|
202 |
|
203 | it("removes all events from page", function() {
|
204 | $module[module]('destroy');
|
205 | if($.events().length > 0) {
|
206 | dump($.events());
|
207 | }
|
208 | expect($.events().length).toBe(0);
|
209 | });
|
210 |
|
211 | it("removes instance metadata", function() {
|
212 | $module[module]('destroy');
|
213 | expect( $module.data('module-'+ module) ).toBe(undefined);
|
214 | });
|
215 |
|
216 | });
|
217 |
|
218 | } |
\ | No newline at end of file |