Created
October 31, 2014 21:21
-
-
Save amercier/1bdf8475193691193b37 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.emq=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ | |
"use strict"; | |
var testResolver = _dereq_("./test-resolver")["default"] || _dereq_("./test-resolver"); | |
var Ember = window.Ember["default"] || window.Ember; | |
exports["default"] = function isolatedContainer(fullNames) { | |
var resolver = testResolver.get(); | |
var container = new Ember.Container(); | |
container.optionsForType('component', { singleton: false }); | |
container.optionsForType('view', { singleton: false }); | |
container.optionsForType('template', { instantiate: false }); | |
container.optionsForType('helper', { instantiate: false }); | |
container.register('component-lookup:main', Ember.ComponentLookup); | |
for (var i = fullNames.length; i > 0; i--) { | |
var fullName = fullNames[i - 1]; | |
container.register(fullName, resolver.resolve(fullName)); | |
} | |
return container; | |
} | |
},{"./test-resolver":7}],2:[function(_dereq_,module,exports){ | |
"use strict"; | |
var Ember = window.Ember["default"] || window.Ember; | |
var isolatedContainer = _dereq_("./isolated-container")["default"] || _dereq_("./isolated-container"); | |
var moduleFor = _dereq_("./module-for")["default"] || _dereq_("./module-for"); | |
var moduleForComponent = _dereq_("./module-for-component")["default"] || _dereq_("./module-for-component"); | |
var moduleForModel = _dereq_("./module-for-model")["default"] || _dereq_("./module-for-model"); | |
var test = _dereq_("./test")["default"] || _dereq_("./test"); | |
var testResolver = _dereq_("./test-resolver")["default"] || _dereq_("./test-resolver"); | |
Ember.testing = true; | |
function setResolver(resolver) { | |
testResolver.set(resolver); | |
} | |
function globalize() { | |
window.moduleFor = moduleFor; | |
window.moduleForComponent = moduleForComponent; | |
window.moduleForModel = moduleForModel; | |
window.test = test; | |
window.setResolver = setResolver; | |
} | |
exports.globalize = globalize; | |
exports.moduleFor = moduleFor; | |
exports.moduleForComponent = moduleForComponent; | |
exports.moduleForModel = moduleForModel; | |
exports.test = test; | |
exports.setResolver = setResolver; | |
},{"./isolated-container":1,"./module-for":5,"./module-for-component":3,"./module-for-model":4,"./test":8,"./test-resolver":7}],3:[function(_dereq_,module,exports){ | |
"use strict"; | |
var testResolver = _dereq_("./test-resolver")["default"] || _dereq_("./test-resolver"); | |
var moduleFor = _dereq_("./module-for")["default"] || _dereq_("./module-for"); | |
var Ember = window.Ember["default"] || window.Ember; | |
exports["default"] = function moduleForComponent(name, description, callbacks) { | |
var resolver = testResolver.get(); | |
moduleFor('component:' + name, description, callbacks, function(container, context, defaultSubject) { | |
var layoutName = 'template:components/' + name; | |
var layout = resolver.resolve(layoutName); | |
if (layout) { | |
container.register(layoutName, layout); | |
container.injection('component:' + name, 'layout', layoutName); | |
} | |
context.dispatcher = Ember.EventDispatcher.create(); | |
context.dispatcher.setup({}, '#ember-testing'); | |
context.__setup_properties__.append = function(selector) { | |
var containerView = Ember.ContainerView.create({container: container}); | |
var view = Ember.run(function(){ | |
var subject = context.subject(); | |
containerView.pushObject(subject); | |
// TODO: destory this somewhere | |
containerView.appendTo('#ember-testing'); | |
return subject; | |
}); | |
return view.$(); | |
}; | |
context.__setup_properties__.$ = context.__setup_properties__.append; | |
}); | |
} | |
},{"./module-for":5,"./test-resolver":7}],4:[function(_dereq_,module,exports){ | |
"use strict"; | |
var moduleFor = _dereq_("./module-for")["default"] || _dereq_("./module-for"); | |
var Ember = window.Ember["default"] || window.Ember; | |
exports["default"] = function moduleForModel(name, description, callbacks) { | |
moduleFor('model:' + name, description, callbacks, function(container, context, defaultSubject) { | |
if (DS._setupContainer) { | |
DS._setupContainer(container); | |
} else { | |
container.register('store:main', DS.Store); | |
} | |
var adapterFactory = container.lookupFactory('adapter:application'); | |
if (!adapterFactory) { | |
container.register('adapter:application', DS.FixtureAdapter); | |
} | |
context.__setup_properties__.store = function(){ | |
return container.lookup('store:main'); | |
}; | |
if (context.__setup_properties__.subject === defaultSubject) { | |
context.__setup_properties__.subject = function(options) { | |
return Ember.run(function() { | |
return container.lookup('store:main').createRecord(name, options); | |
}); | |
}; | |
} | |
}); | |
} | |
},{"./module-for":5}],5:[function(_dereq_,module,exports){ | |
"use strict"; | |
var Ember = window.Ember["default"] || window.Ember; | |
//import QUnit from 'qunit'; // Assumed global in runner | |
var testContext = _dereq_("./test-context")["default"] || _dereq_("./test-context"); | |
var isolatedContainer = _dereq_("./isolated-container")["default"] || _dereq_("./isolated-container"); | |
exports["default"] = function moduleFor(fullName, description, callbacks, delegate) { | |
var container; | |
var context; | |
var _callbacks = { | |
setup: function(){ | |
callbacks = callbacks || { }; | |
var needs = [fullName].concat(callbacks.needs || []); | |
container = isolatedContainer(needs); | |
callbacks.subject = callbacks.subject || defaultSubject; | |
callbacks.setup = callbacks.setup || function() { }; | |
callbacks.teardown = callbacks.teardown || function() { }; | |
function factory() { | |
return container.lookupFactory(fullName); | |
} | |
testContext.set({ | |
container: container, | |
factory: factory, | |
dispatcher: null, | |
__setup_properties__: callbacks | |
}); | |
context = testContext.get(); | |
if (delegate) { | |
delegate(container, context, defaultSubject); | |
} | |
if (Ember.$('#ember-testing').length === 0) { | |
Ember.$('<div id="ember-testing"/>').appendTo(document.body); | |
} | |
buildContextVariables(context); | |
callbacks.setup.call(context, container); | |
}, | |
teardown: function(){ | |
Ember.run(function(){ | |
container.destroy(); | |
if (context.dispatcher) { | |
context.dispatcher.destroy(); | |
} | |
}); | |
callbacks.teardown(container); | |
Ember.$('#ember-testing').empty(); | |
} | |
}; | |
QUnit.module(description || fullName, _callbacks); | |
} | |
function defaultSubject(options, factory) { | |
return factory.create(options); | |
} | |
// allow arbitrary named factories, like rspec let | |
function buildContextVariables(context) { | |
var cache = { }; | |
var callbacks = context.__setup_properties__; | |
var container = context.container; | |
var factory = context.factory; | |
Ember.keys(callbacks).filter(function(key){ | |
// ignore the default setup/teardown keys | |
return key !== 'setup' && key !== 'teardown'; | |
}).forEach(function(key){ | |
context[key] = function(options) { | |
if (cache[key]) { return cache[key]; } | |
var result = callbacks[key](options, factory(), container); | |
cache[key] = result; | |
return result; | |
}; | |
}); | |
} | |
},{"./isolated-container":1,"./test-context":6}],6:[function(_dereq_,module,exports){ | |
"use strict"; | |
var __test_context__; | |
function set(context) { | |
__test_context__ = context; | |
} | |
exports.set = set;function get() { | |
return __test_context__; | |
} | |
exports.get = get; | |
},{}],7:[function(_dereq_,module,exports){ | |
"use strict"; | |
var __resolver__; | |
function set(resolver) { | |
__resolver__ = resolver; | |
} | |
exports.set = set;function get() { | |
if (__resolver__ == null) throw new Error('you must set a resolver with `testResolver.set(resolver)`'); | |
return __resolver__; | |
} | |
exports.get = get; | |
},{}],8:[function(_dereq_,module,exports){ | |
"use strict"; | |
var Ember = window.Ember["default"] || window.Ember; | |
//import QUnit from 'qunit'; // Assumed global in runner | |
var testContext = _dereq_("./test-context")["default"] || _dereq_("./test-context"); | |
function resetViews() { | |
Ember.View.views = {}; | |
} | |
exports["default"] = function test(testName, callback) { | |
function wrapper() { | |
var context = testContext.get(); | |
resetViews(); | |
var result = callback.call(context); | |
function failTestOnPromiseRejection(reason) { | |
ok(false, reason); | |
} | |
Ember.run(function(){ | |
stop(); | |
Ember.RSVP.Promise.cast(result)['catch'](failTestOnPromiseRejection)['finally'](start); | |
}); | |
} | |
QUnit.test(testName, wrapper); | |
} | |
},{"./test-context":6}]},{},[2]) | |
(2) | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment