ember-source 1.13.0.beta.2 → 1.13.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ember-source might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-template-compiler.js +3847 -2709
- data/dist/ember-testing.js +400 -271
- data/dist/ember.debug.js +16186 -12158
- data/dist/ember.js +16186 -12158
- data/dist/ember.min.js +17 -15
- data/dist/ember.prod.js +16093 -11824
- data/dist/version-test.js +13 -0
- metadata +7 -5
data/dist/ember-testing.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
6
6
|
* @license Licensed under MIT license
|
7
7
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
8
|
-
* @version 1.13.0
|
8
|
+
* @version 1.13.0
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -13,8 +13,12 @@ var enifed, requireModule, eriuqer, requirejs, Ember;
|
|
13
13
|
var mainContext = this;
|
14
14
|
|
15
15
|
(function() {
|
16
|
+
var isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
|
17
|
+
|
18
|
+
if (!isNode) {
|
19
|
+
Ember = this.Ember = this.Ember || {};
|
20
|
+
}
|
16
21
|
|
17
|
-
Ember = this.Ember = this.Ember || {};
|
18
22
|
if (typeof Ember === 'undefined') { Ember = {}; };
|
19
23
|
|
20
24
|
if (typeof Ember.__loader === 'undefined') {
|
@@ -110,11 +114,18 @@ var mainContext = this;
|
|
110
114
|
}
|
111
115
|
})();
|
112
116
|
|
113
|
-
enifed(
|
117
|
+
enifed("ember-debug", ["exports", "ember-metal/core", "ember-metal/error", "ember-metal/logger", "ember-debug/deprecation-manager", "ember-metal/environment"], function (exports, _emberMetalCore, _emberMetalError, _emberMetalLogger, _emberDebugDeprecationManager, _emberMetalEnvironment) {
|
118
|
+
exports._warnIfUsingStrippedFeatureFlags = _warnIfUsingStrippedFeatureFlags;
|
114
119
|
|
115
|
-
|
120
|
+
/**
|
121
|
+
@module ember
|
122
|
+
@submodule ember-debug
|
123
|
+
*/
|
116
124
|
|
117
|
-
|
125
|
+
/**
|
126
|
+
@class Ember
|
127
|
+
@public
|
128
|
+
*/
|
118
129
|
|
119
130
|
function isPlainFunction(test) {
|
120
131
|
return typeof test === "function" && test.PrototypeMixin === undefined;
|
@@ -124,23 +135,24 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
|
|
124
135
|
Define an assertion that will throw an exception if the condition is not
|
125
136
|
met. Ember build tools will remove any calls to `Ember.assert()` when
|
126
137
|
doing a production build. Example:
|
127
|
-
|
138
|
+
|
128
139
|
```javascript
|
129
140
|
// Test for truthiness
|
130
141
|
Ember.assert('Must pass a valid object', obj);
|
131
|
-
|
142
|
+
|
132
143
|
// Fail unconditionally
|
133
144
|
Ember.assert('This code path should never be run');
|
134
145
|
```
|
135
|
-
|
146
|
+
|
136
147
|
@method assert
|
137
148
|
@param {String} desc A description of the assertion. This will become
|
138
149
|
the text of the Error thrown if the assertion fails.
|
139
150
|
@param {Boolean|Function} test Must be truthy for the assertion to pass. If
|
140
151
|
falsy, an exception will be thrown. If this is a function, it will be executed and
|
141
152
|
its return value will be used as condition.
|
153
|
+
@public
|
142
154
|
*/
|
143
|
-
|
155
|
+
_emberMetalCore.default.assert = function (desc, test) {
|
144
156
|
var throwAssertion;
|
145
157
|
|
146
158
|
if (isPlainFunction(test)) {
|
@@ -150,24 +162,25 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
|
|
150
162
|
}
|
151
163
|
|
152
164
|
if (throwAssertion) {
|
153
|
-
throw new
|
165
|
+
throw new _emberMetalError.default("Assertion Failed: " + desc);
|
154
166
|
}
|
155
167
|
};
|
156
168
|
|
157
169
|
/**
|
158
170
|
Display a warning with the provided message. Ember build tools will
|
159
171
|
remove any calls to `Ember.warn()` when doing a production build.
|
160
|
-
|
172
|
+
|
161
173
|
@method warn
|
162
174
|
@param {String} message A warning to display.
|
163
175
|
@param {Boolean} test An optional boolean. If falsy, the warning
|
164
176
|
will be displayed.
|
177
|
+
@public
|
165
178
|
*/
|
166
|
-
|
179
|
+
_emberMetalCore.default.warn = function (message, test) {
|
167
180
|
if (!test) {
|
168
|
-
|
169
|
-
if ("trace" in
|
170
|
-
|
181
|
+
_emberMetalLogger.default.warn("WARNING: " + message);
|
182
|
+
if ("trace" in _emberMetalLogger.default) {
|
183
|
+
_emberMetalLogger.default.trace();
|
171
184
|
}
|
172
185
|
}
|
173
186
|
};
|
@@ -175,32 +188,44 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
|
|
175
188
|
/**
|
176
189
|
Display a debug notice. Ember build tools will remove any calls to
|
177
190
|
`Ember.debug()` when doing a production build.
|
178
|
-
|
191
|
+
|
179
192
|
```javascript
|
180
193
|
Ember.debug('I\'m a debug notice!');
|
181
194
|
```
|
182
|
-
|
195
|
+
|
183
196
|
@method debug
|
184
197
|
@param {String} message A debug message to display.
|
198
|
+
@public
|
185
199
|
*/
|
186
|
-
|
187
|
-
|
200
|
+
_emberMetalCore.default.debug = function (message) {
|
201
|
+
_emberMetalLogger.default.debug("DEBUG: " + message);
|
188
202
|
};
|
189
203
|
|
190
204
|
/**
|
191
205
|
Display a deprecation warning with the provided message and a stack trace
|
192
206
|
(Chrome and Firefox only). Ember build tools will remove any calls to
|
193
207
|
`Ember.deprecate()` when doing a production build.
|
194
|
-
|
208
|
+
|
195
209
|
@method deprecate
|
196
210
|
@param {String} message A description of the deprecation.
|
197
211
|
@param {Boolean|Function} test An optional boolean. If falsy, the deprecation
|
198
212
|
will be displayed. If this is a function, it will be executed and its return
|
199
213
|
value will be used as condition.
|
200
214
|
@param {Object} options An optional object that can be used to pass
|
201
|
-
in a `url` to the transition guide on the emberjs.com website
|
215
|
+
in a `url` to the transition guide on the emberjs.com website, and a unique
|
216
|
+
`id` for this deprecation. The `id` can be used by Ember debugging tools
|
217
|
+
to change the behavior (raise, log or silence) for that specific deprecation.
|
218
|
+
The `id` should be namespaced by dots, e.g. "view.helper.select".
|
219
|
+
@public
|
202
220
|
*/
|
203
|
-
|
221
|
+
_emberMetalCore.default.deprecate = function (message, test, options) {
|
222
|
+
if (_emberMetalCore.default.ENV.RAISE_ON_DEPRECATION) {
|
223
|
+
_emberDebugDeprecationManager.default.setDefaultLevel(_emberDebugDeprecationManager.deprecationLevels.RAISE);
|
224
|
+
}
|
225
|
+
if (_emberDebugDeprecationManager.default.getLevel(options && options.id) === _emberDebugDeprecationManager.deprecationLevels.SILENCE) {
|
226
|
+
return;
|
227
|
+
}
|
228
|
+
|
204
229
|
var noDeprecation;
|
205
230
|
|
206
231
|
if (isPlainFunction(test)) {
|
@@ -213,8 +238,12 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
|
|
213
238
|
return;
|
214
239
|
}
|
215
240
|
|
216
|
-
if (
|
217
|
-
|
241
|
+
if (options && options.id) {
|
242
|
+
message = message + (" [deprecation id: " + options.id + "]");
|
243
|
+
}
|
244
|
+
|
245
|
+
if (_emberDebugDeprecationManager.default.getLevel(options && options.id) === _emberDebugDeprecationManager.deprecationLevels.RAISE) {
|
246
|
+
throw new _emberMetalError.default(message);
|
218
247
|
}
|
219
248
|
|
220
249
|
var error;
|
@@ -227,13 +256,13 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
|
|
227
256
|
}
|
228
257
|
|
229
258
|
if (arguments.length === 3) {
|
230
|
-
|
259
|
+
_emberMetalCore.default.assert("options argument to Ember.deprecate should be an object", options && typeof options === "object");
|
231
260
|
if (options.url) {
|
232
261
|
message += " See " + options.url + " for more details.";
|
233
262
|
}
|
234
263
|
}
|
235
264
|
|
236
|
-
if (
|
265
|
+
if (_emberMetalCore.default.LOG_STACKTRACE_ON_DEPRECATION && error.stack) {
|
237
266
|
var stack;
|
238
267
|
var stackStr = "";
|
239
268
|
|
@@ -250,30 +279,31 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
|
|
250
279
|
message = message + stackStr;
|
251
280
|
}
|
252
281
|
|
253
|
-
|
282
|
+
_emberMetalLogger.default.warn("DEPRECATION: " + message);
|
254
283
|
};
|
255
284
|
|
256
285
|
/**
|
257
286
|
Alias an old, deprecated method with its new counterpart.
|
258
|
-
|
287
|
+
|
259
288
|
Display a deprecation warning with the provided message and a stack trace
|
260
289
|
(Chrome and Firefox only) when the assigned method is called.
|
261
|
-
|
290
|
+
|
262
291
|
Ember build tools will not remove calls to `Ember.deprecateFunc()`, though
|
263
292
|
no warnings will be shown in production.
|
264
|
-
|
293
|
+
|
265
294
|
```javascript
|
266
295
|
Ember.oldMethod = Ember.deprecateFunc('Please use the new, updated method', Ember.newMethod);
|
267
296
|
```
|
268
|
-
|
297
|
+
|
269
298
|
@method deprecateFunc
|
270
299
|
@param {String} message A description of the deprecation.
|
271
300
|
@param {Function} func The new function called to replace its deprecated counterpart.
|
272
301
|
@return {Function} a new function that wrapped the original function with a deprecation warning
|
302
|
+
@private
|
273
303
|
*/
|
274
|
-
|
304
|
+
_emberMetalCore.default.deprecateFunc = function (message, func) {
|
275
305
|
return function () {
|
276
|
-
|
306
|
+
_emberMetalCore.default.deprecate(message);
|
277
307
|
return func.apply(this, arguments);
|
278
308
|
};
|
279
309
|
};
|
@@ -281,7 +311,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
|
|
281
311
|
/**
|
282
312
|
Run a function meant for debugging. Ember build tools will remove any calls to
|
283
313
|
`Ember.runInDebug()` when doing a production build.
|
284
|
-
|
314
|
+
|
285
315
|
```javascript
|
286
316
|
Ember.runInDebug(function() {
|
287
317
|
Ember.Handlebars.EachView.reopen({
|
@@ -291,50 +321,55 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
|
|
291
321
|
});
|
292
322
|
});
|
293
323
|
```
|
294
|
-
|
324
|
+
|
295
325
|
@method runInDebug
|
296
326
|
@param {Function} func The function to be executed.
|
297
327
|
@since 1.5.0
|
328
|
+
@public
|
298
329
|
*/
|
299
|
-
|
330
|
+
_emberMetalCore.default.runInDebug = function (func) {
|
300
331
|
func();
|
301
332
|
};
|
302
333
|
|
303
334
|
/**
|
304
335
|
Will call `Ember.warn()` if ENABLE_ALL_FEATURES, ENABLE_OPTIONAL_FEATURES, or
|
305
336
|
any specific FEATURES flag is truthy.
|
306
|
-
|
337
|
+
|
307
338
|
This method is called automatically in debug canary builds.
|
308
|
-
|
339
|
+
|
309
340
|
@private
|
310
341
|
@method _warnIfUsingStrippedFeatureFlags
|
311
342
|
@return {void}
|
312
343
|
*/
|
344
|
+
|
313
345
|
function _warnIfUsingStrippedFeatureFlags(FEATURES, featuresWereStripped) {
|
314
346
|
if (featuresWereStripped) {
|
315
|
-
|
316
|
-
|
347
|
+
_emberMetalCore.default.warn("Ember.ENV.ENABLE_ALL_FEATURES is only available in canary builds.", !_emberMetalCore.default.ENV.ENABLE_ALL_FEATURES);
|
348
|
+
_emberMetalCore.default.warn("Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.", !_emberMetalCore.default.ENV.ENABLE_OPTIONAL_FEATURES);
|
317
349
|
|
318
350
|
for (var key in FEATURES) {
|
319
351
|
if (FEATURES.hasOwnProperty(key) && key !== "isEnabled") {
|
320
|
-
|
352
|
+
_emberMetalCore.default.warn("FEATURE[\"" + key + "\"] is set as enabled, but FEATURE flags are only available in canary builds.", !FEATURES[key]);
|
321
353
|
}
|
322
354
|
}
|
323
355
|
}
|
324
356
|
}
|
325
357
|
|
326
|
-
if (!
|
358
|
+
if (!_emberMetalCore.default.testing) {
|
327
359
|
// Complain if they're using FEATURE flags in builds other than canary
|
328
|
-
|
360
|
+
_emberMetalCore.default.FEATURES["features-stripped-test"] = true;
|
329
361
|
var featuresWereStripped = true;
|
330
362
|
|
331
|
-
|
332
|
-
|
333
|
-
|
363
|
+
if (_emberMetalCore.default.FEATURES.isEnabled("features-stripped-test")) {
|
364
|
+
featuresWereStripped = false;
|
365
|
+
}
|
366
|
+
|
367
|
+
delete _emberMetalCore.default.FEATURES["features-stripped-test"];
|
368
|
+
_warnIfUsingStrippedFeatureFlags(_emberMetalCore.default.ENV.FEATURES, featuresWereStripped);
|
334
369
|
|
335
370
|
// Inform the developer about the Ember Inspector if not installed.
|
336
|
-
var isFirefox =
|
337
|
-
var isChrome =
|
371
|
+
var isFirefox = _emberMetalEnvironment.default.isFirefox;
|
372
|
+
var isChrome = _emberMetalEnvironment.default.isChrome;
|
338
373
|
|
339
374
|
if (typeof window !== "undefined" && (isFirefox || isChrome) && window.addEventListener) {
|
340
375
|
window.addEventListener("load", function () {
|
@@ -347,41 +382,76 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
|
|
347
382
|
downloadURL = "https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/";
|
348
383
|
}
|
349
384
|
|
350
|
-
|
385
|
+
_emberMetalCore.default.debug("For more advanced debugging, install the Ember Inspector from " + downloadURL);
|
351
386
|
}
|
352
387
|
}, false);
|
353
388
|
}
|
354
389
|
}
|
355
390
|
|
391
|
+
_emberMetalCore.default.Debug = {
|
392
|
+
_addDeprecationLevel: function (id, level) {
|
393
|
+
_emberDebugDeprecationManager.default.setLevel(id, level);
|
394
|
+
},
|
395
|
+
_deprecationLevels: _emberDebugDeprecationManager.deprecationLevels
|
396
|
+
};
|
397
|
+
|
356
398
|
/*
|
357
399
|
We are transitioning away from `ember.js` to `ember.debug.js` to make
|
358
400
|
it much clearer that it is only for local development purposes.
|
359
|
-
|
401
|
+
|
360
402
|
This flag value is changed by the tooling (by a simple string replacement)
|
361
403
|
so that if `ember.js` (which must be output for backwards compat reasons) is
|
362
404
|
used a nice helpful warning message will be printed out.
|
363
405
|
*/
|
364
406
|
var runningNonEmberDebugJS = false;
|
407
|
+
exports.runningNonEmberDebugJS = runningNonEmberDebugJS;
|
365
408
|
if (runningNonEmberDebugJS) {
|
366
|
-
|
409
|
+
_emberMetalCore.default.warn("Please use `ember.debug.js` instead of `ember.js` for development and debugging.");
|
367
410
|
}
|
368
|
-
|
369
|
-
exports.runningNonEmberDebugJS = runningNonEmberDebugJS;
|
370
|
-
|
371
411
|
});
|
372
|
-
|
412
|
+
/*global __fail__*/
|
413
|
+
enifed('ember-debug/deprecation-manager', ['exports', 'ember-metal/dictionary', 'ember-metal/utils'], function (exports, _emberMetalDictionary, _emberMetalUtils) {
|
414
|
+
var deprecationLevels = {
|
415
|
+
RAISE: (0, _emberMetalUtils.symbol)('RAISE'),
|
416
|
+
LOG: (0, _emberMetalUtils.symbol)('LOG'),
|
417
|
+
SILENCE: (0, _emberMetalUtils.symbol)('SILENCE')
|
418
|
+
};
|
373
419
|
|
374
|
-
|
420
|
+
exports.deprecationLevels = deprecationLevels;
|
421
|
+
exports.default = {
|
422
|
+
defaultLevel: deprecationLevels.LOG,
|
423
|
+
individualLevels: (0, _emberMetalDictionary.default)(null),
|
424
|
+
setDefaultLevel: function (level) {
|
425
|
+
this.defaultLevel = level;
|
426
|
+
},
|
427
|
+
setLevel: function (id, level) {
|
428
|
+
this.individualLevels[id] = level;
|
429
|
+
},
|
430
|
+
getLevel: function (id) {
|
431
|
+
var level = this.individualLevels[id];
|
432
|
+
if (!level) {
|
433
|
+
level = this.defaultLevel;
|
434
|
+
}
|
435
|
+
return level;
|
436
|
+
}
|
437
|
+
};
|
438
|
+
});
|
439
|
+
enifed("ember-testing", ["exports", "ember-metal/core", "ember-testing/initializers", "ember-testing/support", "ember-testing/setup_for_testing", "ember-testing/test", "ember-testing/adapters/adapter", "ember-testing/adapters/qunit", "ember-testing/helpers"], function (exports, _emberMetalCore, _emberTestingInitializers, _emberTestingSupport, _emberTestingSetup_for_testing, _emberTestingTest, _emberTestingAdaptersAdapter, _emberTestingAdaptersQunit, _emberTestingHelpers) {
|
440
|
+
// adds helpers to helpers object in Test
|
375
441
|
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
442
|
+
/**
|
443
|
+
@module ember
|
444
|
+
@submodule ember-testing
|
445
|
+
*/
|
380
446
|
|
447
|
+
_emberMetalCore.default.Test = _emberTestingTest.default;
|
448
|
+
_emberMetalCore.default.Test.Adapter = _emberTestingAdaptersAdapter.default;
|
449
|
+
_emberMetalCore.default.Test.QUnitAdapter = _emberTestingAdaptersQunit.default;
|
450
|
+
_emberMetalCore.default.setupForTesting = _emberTestingSetup_for_testing.default;
|
381
451
|
});
|
382
|
-
|
383
|
-
|
384
|
-
|
452
|
+
// to setup initializer
|
453
|
+
// to handle various edge cases
|
454
|
+
enifed("ember-testing/adapters/adapter", ["exports", "ember-runtime/system/object"], function (exports, _emberRuntimeSystemObject) {
|
385
455
|
|
386
456
|
function K() {
|
387
457
|
return this;
|
@@ -395,11 +465,12 @@ enifed('ember-testing/adapters/adapter', ['exports', 'ember-runtime/system/objec
|
|
395
465
|
/**
|
396
466
|
The primary purpose of this class is to create hooks that can be implemented
|
397
467
|
by an adapter for various test frameworks.
|
398
|
-
|
468
|
+
|
399
469
|
@class Adapter
|
400
470
|
@namespace Ember.Test
|
471
|
+
@public
|
401
472
|
*/
|
402
|
-
var Adapter =
|
473
|
+
var Adapter = _emberRuntimeSystemObject.default.extend({
|
403
474
|
/**
|
404
475
|
This callback will be called whenever an async operation is about to start.
|
405
476
|
Override this to call your framework's methods that handle async
|
@@ -435,14 +506,20 @@ enifed('ember-testing/adapters/adapter', ['exports', 'ember-runtime/system/objec
|
|
435
506
|
}
|
436
507
|
});
|
437
508
|
|
438
|
-
exports
|
439
|
-
|
509
|
+
exports.default = Adapter;
|
440
510
|
});
|
441
|
-
enifed(
|
511
|
+
enifed("ember-testing/adapters/qunit", ["exports", "ember-testing/adapters/adapter", "ember-metal/utils"], function (exports, _emberTestingAdaptersAdapter, _emberMetalUtils) {
|
442
512
|
|
443
|
-
|
444
|
-
|
445
|
-
|
513
|
+
/**
|
514
|
+
This class implements the methods defined by Ember.Test.Adapter for the
|
515
|
+
QUnit testing framework.
|
516
|
+
|
517
|
+
@class QUnitAdapter
|
518
|
+
@namespace Ember.Test
|
519
|
+
@extends Ember.Test.Adapter
|
520
|
+
@public
|
521
|
+
*/
|
522
|
+
exports.default = _emberTestingAdaptersAdapter.default.extend({
|
446
523
|
asyncStart: function () {
|
447
524
|
QUnit.stop();
|
448
525
|
},
|
@@ -450,46 +527,48 @@ enifed('ember-testing/adapters/qunit', ['exports', 'ember-testing/adapters/adapt
|
|
450
527
|
QUnit.start();
|
451
528
|
},
|
452
529
|
exception: function (error) {
|
453
|
-
ok(false,
|
530
|
+
ok(false, (0, _emberMetalUtils.inspect)(error));
|
454
531
|
}
|
455
532
|
});
|
456
|
-
|
457
533
|
});
|
458
|
-
enifed(
|
534
|
+
enifed("ember-testing/helpers", ["exports", "ember-metal/core", "ember-metal/property_get", "ember-metal/error", "ember-metal/run_loop", "ember-views/system/jquery", "ember-testing/test", "ember-runtime/ext/rsvp"], function (exports, _emberMetalCore, _emberMetalProperty_get, _emberMetalError, _emberMetalRun_loop, _emberViewsSystemJquery, _emberTestingTest, _emberRuntimeExtRsvp) {
|
459
535
|
|
460
|
-
|
536
|
+
/**
|
537
|
+
@module ember
|
538
|
+
@submodule ember-testing
|
539
|
+
*/
|
461
540
|
|
462
|
-
var helper =
|
463
|
-
var asyncHelper =
|
541
|
+
var helper = _emberTestingTest.default.registerHelper;
|
542
|
+
var asyncHelper = _emberTestingTest.default.registerAsyncHelper;
|
464
543
|
|
465
544
|
function currentRouteName(app) {
|
466
545
|
var appController = app.__container__.lookup("controller:application");
|
467
546
|
|
468
|
-
return
|
547
|
+
return (0, _emberMetalProperty_get.get)(appController, "currentRouteName");
|
469
548
|
}
|
470
549
|
|
471
550
|
function currentPath(app) {
|
472
551
|
var appController = app.__container__.lookup("controller:application");
|
473
552
|
|
474
|
-
return
|
553
|
+
return (0, _emberMetalProperty_get.get)(appController, "currentPath");
|
475
554
|
}
|
476
555
|
|
477
556
|
function currentURL(app) {
|
478
557
|
var router = app.__container__.lookup("router:main");
|
479
558
|
|
480
|
-
return
|
559
|
+
return (0, _emberMetalProperty_get.get)(router, "location").getURL();
|
481
560
|
}
|
482
561
|
|
483
562
|
function pauseTest() {
|
484
|
-
|
485
|
-
return new
|
563
|
+
_emberTestingTest.default.adapter.asyncStart();
|
564
|
+
return new _emberMetalCore.default.RSVP.Promise(function () {}, "TestAdapter paused promise");
|
486
565
|
}
|
487
566
|
|
488
567
|
function focus(el) {
|
489
568
|
if (el && el.is(":input, [contenteditable=true]")) {
|
490
569
|
var type = el.prop("type");
|
491
570
|
if (type !== "checkbox" && type !== "radio" && type !== "hidden") {
|
492
|
-
|
571
|
+
(0, _emberMetalRun_loop.default)(el, function () {
|
493
572
|
// Firefox does not trigger the `focusin` event if the window
|
494
573
|
// does not have focus. If the document doesn't have focus just
|
495
574
|
// use trigger('focusin') instead.
|
@@ -511,10 +590,10 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
511
590
|
|
512
591
|
if (app._readinessDeferrals > 0) {
|
513
592
|
router["initialURL"] = url;
|
514
|
-
|
593
|
+
(0, _emberMetalRun_loop.default)(app, "advanceReadiness");
|
515
594
|
delete router["initialURL"];
|
516
595
|
} else {
|
517
|
-
|
596
|
+
(0, _emberMetalRun_loop.default)(app.__deprecatedInstance__, "handleURL", url);
|
518
597
|
}
|
519
598
|
|
520
599
|
return app.testHelpers.wait();
|
@@ -522,12 +601,12 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
522
601
|
|
523
602
|
function click(app, selector, context) {
|
524
603
|
var $el = app.testHelpers.findWithAssert(selector, context);
|
525
|
-
|
604
|
+
(0, _emberMetalRun_loop.default)($el, "mousedown");
|
526
605
|
|
527
606
|
focus($el);
|
528
607
|
|
529
|
-
|
530
|
-
|
608
|
+
(0, _emberMetalRun_loop.default)($el, "mouseup");
|
609
|
+
(0, _emberMetalRun_loop.default)($el, "click");
|
531
610
|
|
532
611
|
return app.testHelpers.wait();
|
533
612
|
}
|
@@ -536,7 +615,7 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
536
615
|
var $el = app.testHelpers.findWithAssert(selector, context);
|
537
616
|
var type = $el.prop("type");
|
538
617
|
|
539
|
-
|
618
|
+
_emberMetalCore.default.assert("To check '" + selector + "', the input must be a checkbox", type === "checkbox");
|
540
619
|
|
541
620
|
if (!$el.prop("checked")) {
|
542
621
|
app.testHelpers.click(selector, context);
|
@@ -549,7 +628,7 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
549
628
|
var $el = app.testHelpers.findWithAssert(selector, context);
|
550
629
|
var type = $el.prop("type");
|
551
630
|
|
552
|
-
|
631
|
+
_emberMetalCore.default.assert("To uncheck '" + selector + "', the input must be a checkbox", type === "checkbox");
|
553
632
|
|
554
633
|
if ($el.prop("checked")) {
|
555
634
|
app.testHelpers.click(selector, context);
|
@@ -591,9 +670,9 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
591
670
|
|
592
671
|
var $el = app.testHelpers.findWithAssert(selector, context);
|
593
672
|
|
594
|
-
var event =
|
673
|
+
var event = _emberViewsSystemJquery.default.Event(type, options);
|
595
674
|
|
596
|
-
|
675
|
+
(0, _emberMetalRun_loop.default)($el, "trigger", event);
|
597
676
|
|
598
677
|
return app.testHelpers.wait();
|
599
678
|
}
|
@@ -622,7 +701,7 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
622
701
|
}
|
623
702
|
$el = app.testHelpers.findWithAssert(selector, context);
|
624
703
|
focus($el);
|
625
|
-
|
704
|
+
(0, _emberMetalRun_loop.default)(function () {
|
626
705
|
$el.val(text).change();
|
627
706
|
});
|
628
707
|
return app.testHelpers.wait();
|
@@ -631,14 +710,14 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
631
710
|
function findWithAssert(app, selector, context) {
|
632
711
|
var $el = app.testHelpers.find(selector, context);
|
633
712
|
if ($el.length === 0) {
|
634
|
-
throw new
|
713
|
+
throw new _emberMetalError.default("Element " + selector + " not found.");
|
635
714
|
}
|
636
715
|
return $el;
|
637
716
|
}
|
638
717
|
|
639
718
|
function find(app, selector, context) {
|
640
719
|
var $el;
|
641
|
-
context = context ||
|
720
|
+
context = context || (0, _emberMetalProperty_get.get)(app, "rootElement");
|
642
721
|
$el = app.$(selector, context);
|
643
722
|
|
644
723
|
return $el;
|
@@ -649,7 +728,7 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
649
728
|
}
|
650
729
|
|
651
730
|
function wait(app, value) {
|
652
|
-
return new
|
731
|
+
return new _emberRuntimeExtRsvp.default.Promise(function (resolve) {
|
653
732
|
// Every 10ms, poll for the async thing to have finished
|
654
733
|
var watcher = setInterval(function () {
|
655
734
|
var router = app.__container__.lookup("router:main");
|
@@ -661,15 +740,15 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
661
740
|
}
|
662
741
|
|
663
742
|
// 2. If there are pending Ajax requests, keep polling
|
664
|
-
if (
|
743
|
+
if (_emberTestingTest.default.pendingAjaxRequests) {
|
665
744
|
return;
|
666
745
|
}
|
667
746
|
|
668
747
|
// 3. If there are scheduled timers or we are inside of a run loop, keep polling
|
669
|
-
if (
|
748
|
+
if (_emberMetalRun_loop.default.hasScheduledTimers() || _emberMetalRun_loop.default.currentRunLoop) {
|
670
749
|
return;
|
671
750
|
}
|
672
|
-
if (
|
751
|
+
if (_emberTestingTest.default.waiters && _emberTestingTest.default.waiters.any(function (waiter) {
|
673
752
|
var context = waiter[0];
|
674
753
|
var callback = waiter[1];
|
675
754
|
return !callback.call(context);
|
@@ -680,237 +759,281 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
680
759
|
clearInterval(watcher);
|
681
760
|
|
682
761
|
// Synchronously resolve the promise
|
683
|
-
|
762
|
+
(0, _emberMetalRun_loop.default)(null, resolve, value);
|
684
763
|
}, 10);
|
685
764
|
});
|
686
765
|
}
|
687
766
|
|
688
767
|
/**
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
768
|
+
Loads a route, sets up any controllers, and renders any templates associated
|
769
|
+
with the route as though a real user had triggered the route change while
|
770
|
+
using your app.
|
771
|
+
|
772
|
+
Example:
|
773
|
+
|
774
|
+
```javascript
|
775
|
+
visit('posts/index').then(function() {
|
776
|
+
// assert something
|
777
|
+
});
|
778
|
+
```
|
779
|
+
|
780
|
+
@method visit
|
781
|
+
@param {String} url the name of the route
|
782
|
+
@return {RSVP.Promise}
|
783
|
+
@public
|
704
784
|
*/
|
705
785
|
asyncHelper("visit", visit);
|
706
786
|
|
707
787
|
/**
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
788
|
+
Clicks an element and triggers any actions triggered by the element's `click`
|
789
|
+
event.
|
790
|
+
|
791
|
+
Example:
|
792
|
+
|
793
|
+
```javascript
|
794
|
+
click('.some-jQuery-selector').then(function() {
|
795
|
+
// assert something
|
796
|
+
});
|
797
|
+
```
|
798
|
+
|
799
|
+
@method click
|
800
|
+
@param {String} selector jQuery selector for finding element on the DOM
|
801
|
+
@return {RSVP.Promise}
|
802
|
+
@public
|
722
803
|
*/
|
723
804
|
asyncHelper("click", click);
|
724
805
|
|
806
|
+
if (_emberMetalCore.default.FEATURES.isEnabled("ember-testing-checkbox-helpers")) {
|
725
807
|
/**
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
808
|
+
Checks a checkbox. Ensures the presence of the `checked` attribute
|
809
|
+
Example:
|
810
|
+
```javascript
|
811
|
+
check('#remember-me').then(function() {
|
812
|
+
// assert something
|
813
|
+
});
|
814
|
+
```
|
815
|
+
@method check
|
816
|
+
@param {String} selector jQuery selector finding an `input[type="checkbox"]`
|
817
|
+
element on the DOM to check
|
818
|
+
@return {RSVP.Promise}
|
819
|
+
@private
|
820
|
+
*/
|
821
|
+
asyncHelper("check", check);
|
822
|
+
|
823
|
+
/**
|
824
|
+
Unchecks a checkbox. Ensures the absence of the `checked` attribute
|
825
|
+
Example:
|
826
|
+
```javascript
|
827
|
+
uncheck('#remember-me').then(function() {
|
828
|
+
// assert something
|
829
|
+
});
|
830
|
+
```
|
831
|
+
@method check
|
832
|
+
@param {String} selector jQuery selector finding an `input[type="checkbox"]`
|
833
|
+
element on the DOM to uncheck
|
834
|
+
@return {RSVP.Promise}
|
835
|
+
@private
|
836
|
+
*/
|
837
|
+
asyncHelper("uncheck", uncheck);
|
838
|
+
}
|
839
|
+
/**
|
840
|
+
Simulates a key event, e.g. `keypress`, `keydown`, `keyup` with the desired keyCode
|
841
|
+
|
842
|
+
Example:
|
843
|
+
|
844
|
+
```javascript
|
845
|
+
keyEvent('.some-jQuery-selector', 'keypress', 13).then(function() {
|
846
|
+
// assert something
|
847
|
+
});
|
848
|
+
```
|
849
|
+
|
850
|
+
@method keyEvent
|
851
|
+
@param {String} selector jQuery selector for finding element on the DOM
|
852
|
+
@param {String} type the type of key event, e.g. `keypress`, `keydown`, `keyup`
|
853
|
+
@param {Number} keyCode the keyCode of the simulated key event
|
854
|
+
@return {RSVP.Promise}
|
855
|
+
@since 1.5.0
|
856
|
+
@public
|
742
857
|
*/
|
743
858
|
asyncHelper("keyEvent", keyEvent);
|
744
859
|
|
745
860
|
/**
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
861
|
+
Fills in an input element with some text.
|
862
|
+
|
863
|
+
Example:
|
864
|
+
|
865
|
+
```javascript
|
866
|
+
fillIn('#email', 'you@example.com').then(function() {
|
867
|
+
// assert something
|
868
|
+
});
|
869
|
+
```
|
870
|
+
|
871
|
+
@method fillIn
|
872
|
+
@param {String} selector jQuery selector finding an input element on the DOM
|
873
|
+
to fill text with
|
874
|
+
@param {String} text text to place inside the input element
|
875
|
+
@return {RSVP.Promise}
|
876
|
+
@public
|
761
877
|
*/
|
762
878
|
asyncHelper("fillIn", fillIn);
|
763
879
|
|
764
880
|
/**
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
881
|
+
Finds an element in the context of the app's container element. A simple alias
|
882
|
+
for `app.$(selector)`.
|
883
|
+
|
884
|
+
Example:
|
885
|
+
|
886
|
+
```javascript
|
887
|
+
var $el = find('.my-selector');
|
888
|
+
```
|
889
|
+
|
890
|
+
@method find
|
891
|
+
@param {String} selector jQuery string selector for element lookup
|
892
|
+
@return {Object} jQuery object representing the results of the query
|
893
|
+
@public
|
777
894
|
*/
|
778
895
|
helper("find", find);
|
779
896
|
|
780
897
|
/**
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
898
|
+
Like `find`, but throws an error if the element selector returns no results.
|
899
|
+
|
900
|
+
Example:
|
901
|
+
|
902
|
+
```javascript
|
903
|
+
var $el = findWithAssert('.doesnt-exist'); // throws error
|
904
|
+
```
|
905
|
+
|
906
|
+
@method findWithAssert
|
907
|
+
@param {String} selector jQuery selector string for finding an element within
|
908
|
+
the DOM
|
909
|
+
@return {Object} jQuery object representing the results of the query
|
910
|
+
@throws {Error} throws error if jQuery object returned has a length of 0
|
911
|
+
@private
|
794
912
|
*/
|
795
913
|
helper("findWithAssert", findWithAssert);
|
796
914
|
|
797
915
|
/**
|
798
916
|
Causes the run loop to process any pending events. This is used to ensure that
|
799
917
|
any async operations from other helpers (or your assertions) have been processed.
|
800
|
-
|
918
|
+
|
801
919
|
This is most often used as the return value for the helper functions (see 'click',
|
802
920
|
'fillIn','visit',etc).
|
803
|
-
|
921
|
+
|
804
922
|
Example:
|
805
|
-
|
923
|
+
|
806
924
|
```javascript
|
807
925
|
Ember.Test.registerAsyncHelper('loginUser', function(app, username, password) {
|
808
926
|
visit('secured/path/here')
|
809
927
|
.fillIn('#username', username)
|
810
928
|
.fillIn('#password', password)
|
811
929
|
.click('.submit')
|
812
|
-
|
930
|
+
|
813
931
|
return app.testHelpers.wait();
|
814
932
|
});
|
815
|
-
|
933
|
+
|
816
934
|
@method wait
|
817
935
|
@param {Object} value The value to be returned.
|
818
936
|
@return {RSVP.Promise}
|
937
|
+
@public
|
819
938
|
*/
|
820
939
|
asyncHelper("wait", wait);
|
821
940
|
asyncHelper("andThen", andThen);
|
822
941
|
|
823
942
|
/**
|
824
943
|
Returns the currently active route name.
|
825
|
-
|
944
|
+
|
826
945
|
Example:
|
827
|
-
|
946
|
+
|
828
947
|
```javascript
|
829
948
|
function validateRouteName() {
|
830
949
|
equal(currentRouteName(), 'some.path', "correct route was transitioned into.");
|
831
950
|
}
|
832
|
-
|
951
|
+
|
833
952
|
visit('/some/path').then(validateRouteName)
|
834
953
|
```
|
835
|
-
|
954
|
+
|
836
955
|
@method currentRouteName
|
837
956
|
@return {Object} The name of the currently active route.
|
838
957
|
@since 1.5.0
|
958
|
+
@public
|
839
959
|
*/
|
840
960
|
helper("currentRouteName", currentRouteName);
|
841
961
|
|
842
962
|
/**
|
843
963
|
Returns the current path.
|
844
|
-
|
964
|
+
|
845
965
|
Example:
|
846
|
-
|
966
|
+
|
847
967
|
```javascript
|
848
968
|
function validateURL() {
|
849
969
|
equal(currentPath(), 'some.path.index', "correct path was transitioned into.");
|
850
970
|
}
|
851
|
-
|
971
|
+
|
852
972
|
click('#some-link-id').then(validateURL);
|
853
973
|
```
|
854
|
-
|
974
|
+
|
855
975
|
@method currentPath
|
856
976
|
@return {Object} The currently active path.
|
857
977
|
@since 1.5.0
|
978
|
+
@public
|
858
979
|
*/
|
859
980
|
helper("currentPath", currentPath);
|
860
981
|
|
861
982
|
/**
|
862
983
|
Returns the current URL.
|
863
|
-
|
984
|
+
|
864
985
|
Example:
|
865
|
-
|
986
|
+
|
866
987
|
```javascript
|
867
988
|
function validateURL() {
|
868
989
|
equal(currentURL(), '/some/path', "correct URL was transitioned into.");
|
869
990
|
}
|
870
|
-
|
991
|
+
|
871
992
|
click('#some-link-id').then(validateURL);
|
872
993
|
```
|
873
|
-
|
994
|
+
|
874
995
|
@method currentURL
|
875
996
|
@return {Object} The currently active URL.
|
876
997
|
@since 1.5.0
|
998
|
+
@public
|
877
999
|
*/
|
878
1000
|
helper("currentURL", currentURL);
|
879
1001
|
|
880
1002
|
/**
|
881
1003
|
Pauses the current test - this is useful for debugging while testing or for test-driving.
|
882
1004
|
It allows you to inspect the state of your application at any point.
|
883
|
-
|
1005
|
+
|
884
1006
|
Example (The test will pause before clicking the button):
|
885
|
-
|
1007
|
+
|
886
1008
|
```javascript
|
887
1009
|
visit('/')
|
888
1010
|
return pauseTest();
|
889
|
-
|
1011
|
+
|
890
1012
|
click('.btn');
|
891
1013
|
```
|
892
|
-
|
1014
|
+
|
893
1015
|
@since 1.9.0
|
894
1016
|
@method pauseTest
|
895
1017
|
@return {Object} A promise that will never resolve
|
896
|
-
|
1018
|
+
@public
|
1019
|
+
*/
|
897
1020
|
helper("pauseTest", pauseTest);
|
898
1021
|
|
899
1022
|
/**
|
900
1023
|
Triggers the given DOM event on the element identified by the provided selector.
|
901
|
-
|
1024
|
+
|
902
1025
|
Example:
|
903
|
-
|
1026
|
+
|
904
1027
|
```javascript
|
905
1028
|
triggerEvent('#some-elem-id', 'blur');
|
906
1029
|
```
|
907
|
-
|
1030
|
+
|
908
1031
|
This is actually used internally by the `keyEvent` helper like so:
|
909
|
-
|
1032
|
+
|
910
1033
|
```javascript
|
911
1034
|
triggerEvent('#some-elem-id', 'keypress', { keyCode: 13 });
|
912
1035
|
```
|
913
|
-
|
1036
|
+
|
914
1037
|
@method triggerEvent
|
915
1038
|
@param {String} selector jQuery selector for finding element on the DOM
|
916
1039
|
@param {String} [context] jQuery selector that will limit the selector
|
@@ -919,17 +1042,15 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
919
1042
|
@param {Object} [options] The options to be passed to jQuery.Event.
|
920
1043
|
@return {RSVP.Promise}
|
921
1044
|
@since 1.5.0
|
1045
|
+
@public
|
922
1046
|
*/
|
923
1047
|
asyncHelper("triggerEvent", triggerEvent);
|
924
|
-
|
925
1048
|
});
|
926
|
-
enifed('ember-testing/initializers', ['ember-runtime/system/lazy_load'], function (
|
927
|
-
|
928
|
-
'use strict';
|
1049
|
+
enifed('ember-testing/initializers', ['exports', 'ember-runtime/system/lazy_load'], function (exports, _emberRuntimeSystemLazy_load) {
|
929
1050
|
|
930
1051
|
var name = 'deferReadiness in `testing` mode';
|
931
1052
|
|
932
|
-
|
1053
|
+
(0, _emberRuntimeSystemLazy_load.onLoad)('Ember.Application', function (Application) {
|
933
1054
|
if (!Application.initializers[name]) {
|
934
1055
|
Application.initializer({
|
935
1056
|
name: name,
|
@@ -942,14 +1063,10 @@ enifed('ember-testing/initializers', ['ember-runtime/system/lazy_load'], functio
|
|
942
1063
|
});
|
943
1064
|
}
|
944
1065
|
});
|
945
|
-
|
946
1066
|
});
|
947
|
-
enifed(
|
948
|
-
|
949
|
-
'use strict';
|
1067
|
+
enifed("ember-testing/setup_for_testing", ["exports", "ember-metal/core", "ember-testing/adapters/qunit", "ember-views/system/jquery"], function (exports, _emberMetalCore, _emberTestingAdaptersQunit, _emberViewsSystemJquery) {
|
1068
|
+
exports.default = setupForTesting;
|
950
1069
|
|
951
|
-
|
952
|
-
exports['default'] = setupForTesting;
|
953
1070
|
var Test, requests;
|
954
1071
|
|
955
1072
|
function incrementAjaxPendingRequests(_, xhr) {
|
@@ -969,47 +1086,53 @@ enifed('ember-testing/setup_for_testing', ['exports', 'ember-metal/core', 'ember
|
|
969
1086
|
/**
|
970
1087
|
Sets Ember up for testing. This is useful to perform
|
971
1088
|
basic setup steps in order to unit test.
|
972
|
-
|
1089
|
+
|
973
1090
|
Use `App.setupForTesting` to perform integration tests (full
|
974
1091
|
application testing).
|
975
|
-
|
1092
|
+
|
976
1093
|
@method setupForTesting
|
977
1094
|
@namespace Ember
|
978
1095
|
@since 1.5.0
|
1096
|
+
@private
|
979
1097
|
*/
|
1098
|
+
|
980
1099
|
function setupForTesting() {
|
981
1100
|
if (!Test) {
|
982
1101
|
Test = requireModule("ember-testing/test")["default"];
|
983
1102
|
}
|
984
1103
|
|
985
|
-
|
1104
|
+
_emberMetalCore.default.testing = true;
|
986
1105
|
|
987
1106
|
// if adapter is not manually set default to QUnit
|
988
1107
|
if (!Test.adapter) {
|
989
|
-
Test.adapter =
|
1108
|
+
Test.adapter = _emberTestingAdaptersQunit.default.create();
|
990
1109
|
}
|
991
1110
|
|
992
1111
|
requests = [];
|
993
1112
|
Test.pendingAjaxRequests = requests.length;
|
994
1113
|
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
1114
|
+
(0, _emberViewsSystemJquery.default)(document).off("ajaxSend", incrementAjaxPendingRequests);
|
1115
|
+
(0, _emberViewsSystemJquery.default)(document).off("ajaxComplete", decrementAjaxPendingRequests);
|
1116
|
+
(0, _emberViewsSystemJquery.default)(document).on("ajaxSend", incrementAjaxPendingRequests);
|
1117
|
+
(0, _emberViewsSystemJquery.default)(document).on("ajaxComplete", decrementAjaxPendingRequests);
|
999
1118
|
}
|
1000
|
-
|
1001
1119
|
});
|
1002
|
-
enifed('ember-testing/support', ['ember-metal/core', 'ember-views/system/jquery', 'ember-metal/environment'], function (Ember, jQuery, environment) {
|
1003
1120
|
|
1004
|
-
|
1121
|
+
// import Test from "ember-testing/test"; // ES6TODO: fix when cycles are supported
|
1122
|
+
enifed("ember-testing/support", ["exports", "ember-metal/core", "ember-views/system/jquery", "ember-metal/environment"], function (exports, _emberMetalCore, _emberViewsSystemJquery, _emberMetalEnvironment) {
|
1123
|
+
|
1124
|
+
/**
|
1125
|
+
@module ember
|
1126
|
+
@submodule ember-testing
|
1127
|
+
*/
|
1005
1128
|
|
1006
|
-
var $ =
|
1129
|
+
var $ = _emberViewsSystemJquery.default;
|
1007
1130
|
|
1008
1131
|
/**
|
1009
1132
|
This method creates a checkbox and triggers the click event to fire the
|
1010
1133
|
passed in handler. It is used to correct for a bug in older versions
|
1011
1134
|
of jQuery (e.g 1.8.3).
|
1012
|
-
|
1135
|
+
|
1013
1136
|
@private
|
1014
1137
|
@method testCheckboxClick
|
1015
1138
|
*/
|
@@ -1017,7 +1140,7 @@ enifed('ember-testing/support', ['ember-metal/core', 'ember-views/system/jquery'
|
|
1017
1140
|
$("<input type=\"checkbox\">").css({ position: "absolute", left: "-1000px", top: "-1000px" }).appendTo("body").on("click", handler).trigger("click").remove();
|
1018
1141
|
}
|
1019
1142
|
|
1020
|
-
if (
|
1143
|
+
if (_emberMetalEnvironment.default.hasDOM) {
|
1021
1144
|
$(function () {
|
1022
1145
|
/*
|
1023
1146
|
Determine whether a checkbox checked using jQuery's "click" method will have
|
@@ -1042,29 +1165,31 @@ enifed('ember-testing/support', ['ember-metal/core', 'ember-views/system/jquery'
|
|
1042
1165
|
|
1043
1166
|
// Try again to verify that the patch took effect or blow up.
|
1044
1167
|
testCheckboxClick(function () {
|
1045
|
-
|
1168
|
+
_emberMetalCore.default.warn("clicked checkboxes should be checked! the jQuery patch didn't work", this.checked);
|
1046
1169
|
});
|
1047
1170
|
});
|
1048
1171
|
}
|
1049
|
-
|
1050
1172
|
});
|
1051
|
-
enifed(
|
1052
|
-
|
1053
|
-
'use strict';
|
1173
|
+
enifed("ember-testing/test", ["exports", "ember-metal/core", "ember-metal/run_loop", "ember-metal/platform/create", "ember-runtime/ext/rsvp", "ember-testing/setup_for_testing", "ember-application/system/application"], function (exports, _emberMetalCore, _emberMetalRun_loop, _emberMetalPlatformCreate, _emberRuntimeExtRsvp, _emberTestingSetup_for_testing, _emberApplicationSystemApplication) {
|
1054
1174
|
|
1175
|
+
/**
|
1176
|
+
@module ember
|
1177
|
+
@submodule ember-testing
|
1178
|
+
*/
|
1055
1179
|
var helpers = {};
|
1056
1180
|
var injectHelpersCallbacks = [];
|
1057
1181
|
|
1058
1182
|
/**
|
1059
1183
|
This is a container for an assortment of testing related functionality:
|
1060
|
-
|
1184
|
+
|
1061
1185
|
* Choose your default test adapter (for your framework of choice).
|
1062
1186
|
* Register/Unregister additional test helpers.
|
1063
1187
|
* Setup callbacks to be fired when the test helpers are injected into
|
1064
1188
|
your application.
|
1065
|
-
|
1189
|
+
|
1066
1190
|
@class Test
|
1067
1191
|
@namespace Ember
|
1192
|
+
@public
|
1068
1193
|
*/
|
1069
1194
|
var Test = {
|
1070
1195
|
/**
|
@@ -1256,7 +1381,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1256
1381
|
context = null;
|
1257
1382
|
}
|
1258
1383
|
if (!this.waiters) {
|
1259
|
-
this.waiters =
|
1384
|
+
this.waiters = _emberMetalCore.default.A();
|
1260
1385
|
}
|
1261
1386
|
this.waiters.push([context, callback]);
|
1262
1387
|
},
|
@@ -1277,7 +1402,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1277
1402
|
callback = context;
|
1278
1403
|
context = null;
|
1279
1404
|
}
|
1280
|
-
this.waiters =
|
1405
|
+
this.waiters = _emberMetalCore.default.A(this.waiters.filter(function (elt) {
|
1281
1406
|
return !(elt[0] === context && elt[1] === callback);
|
1282
1407
|
}));
|
1283
1408
|
}
|
@@ -1314,21 +1439,21 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1314
1439
|
Test.adapter.asyncStart();
|
1315
1440
|
return lastPromise.then(function () {
|
1316
1441
|
return fn.apply(app, args);
|
1317
|
-
})
|
1442
|
+
}).finally(function () {
|
1318
1443
|
Test.adapter.asyncEnd();
|
1319
1444
|
});
|
1320
1445
|
};
|
1321
1446
|
}
|
1322
1447
|
|
1323
1448
|
function run(fn) {
|
1324
|
-
if (!
|
1325
|
-
return
|
1449
|
+
if (!_emberMetalRun_loop.default.currentRunLoop) {
|
1450
|
+
return (0, _emberMetalRun_loop.default)(fn);
|
1326
1451
|
} else {
|
1327
1452
|
return fn();
|
1328
1453
|
}
|
1329
1454
|
}
|
1330
1455
|
|
1331
|
-
|
1456
|
+
_emberApplicationSystemApplication.default.reopen({
|
1332
1457
|
/**
|
1333
1458
|
This property contains the testing helpers for the current application. These
|
1334
1459
|
are created once you call `injectTestHelpers` on your `Ember.Application`
|
@@ -1337,6 +1462,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1337
1462
|
@property testHelpers
|
1338
1463
|
@type {Object}
|
1339
1464
|
@default {}
|
1465
|
+
@public
|
1340
1466
|
*/
|
1341
1467
|
testHelpers: {},
|
1342
1468
|
|
@@ -1361,23 +1487,25 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1361
1487
|
@type {Boolean}
|
1362
1488
|
@default false
|
1363
1489
|
@since 1.3.0
|
1490
|
+
@public
|
1364
1491
|
*/
|
1365
1492
|
testing: false,
|
1366
1493
|
|
1367
1494
|
/**
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1495
|
+
This hook defers the readiness of the application, so that you can start
|
1496
|
+
the app when your tests are ready to run. It also sets the router's
|
1497
|
+
location to 'none', so that the window's location will not be modified
|
1498
|
+
(preventing both accidental leaking of state between tests and interference
|
1499
|
+
with your testing framework).
|
1500
|
+
Example:
|
1501
|
+
```
|
1502
|
+
App.setupForTesting();
|
1503
|
+
```
|
1377
1504
|
@method setupForTesting
|
1505
|
+
@public
|
1378
1506
|
*/
|
1379
1507
|
setupForTesting: function () {
|
1380
|
-
|
1508
|
+
(0, _emberTestingSetup_for_testing.default)();
|
1381
1509
|
|
1382
1510
|
this.testing = true;
|
1383
1511
|
|
@@ -1393,6 +1521,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1393
1521
|
@type {Object} The object to be used for test helpers.
|
1394
1522
|
@default window
|
1395
1523
|
@since 1.2.0
|
1524
|
+
@private
|
1396
1525
|
*/
|
1397
1526
|
helperContainer: null,
|
1398
1527
|
|
@@ -1402,13 +1531,14 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1402
1531
|
to `window`. If a function of the same name has already been defined it will be cached
|
1403
1532
|
(so that it can be reset if the helper is removed with `unregisterHelper` or
|
1404
1533
|
`removeTestHelpers`).
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
1534
|
+
Any callbacks registered with `onInjectHelpers` will be called once the
|
1535
|
+
helpers have been injected.
|
1536
|
+
Example:
|
1537
|
+
```
|
1538
|
+
App.injectTestHelpers();
|
1539
|
+
```
|
1411
1540
|
@method injectTestHelpers
|
1541
|
+
@public
|
1412
1542
|
*/
|
1413
1543
|
injectTestHelpers: function (helperContainer) {
|
1414
1544
|
if (helperContainer) {
|
@@ -1472,17 +1602,17 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1472
1602
|
}
|
1473
1603
|
|
1474
1604
|
Test.Promise = function () {
|
1475
|
-
|
1605
|
+
_emberRuntimeExtRsvp.default.Promise.apply(this, arguments);
|
1476
1606
|
Test.lastPromise = this;
|
1477
1607
|
};
|
1478
1608
|
|
1479
|
-
Test.Promise.prototype =
|
1609
|
+
Test.Promise.prototype = (0, _emberMetalPlatformCreate.default)(_emberRuntimeExtRsvp.default.Promise.prototype);
|
1480
1610
|
Test.Promise.prototype.constructor = Test.Promise;
|
1481
1611
|
Test.Promise.resolve = Test.resolve;
|
1482
1612
|
|
1483
1613
|
// Patch `then` to isolate async methods
|
1484
1614
|
// specifically `Ember.Test.lastPromise`
|
1485
|
-
var originalThen =
|
1615
|
+
var originalThen = _emberRuntimeExtRsvp.default.Promise.prototype.then;
|
1486
1616
|
Test.Promise.prototype.then = function (onSuccess, onFailure) {
|
1487
1617
|
return originalThen.call(this, function (val) {
|
1488
1618
|
return isolate(onSuccess, val);
|
@@ -1520,8 +1650,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1520
1650
|
}
|
1521
1651
|
}
|
1522
1652
|
|
1523
|
-
exports
|
1524
|
-
|
1653
|
+
exports.default = Test;
|
1525
1654
|
});
|
1526
1655
|
requireModule("ember-testing");
|
1527
1656
|
|