ember-data-factory-guy 0.7.6 → 0.7.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 09d4fe99fe9f0b792f14f6b17f0866cfbaa46eca
4
- data.tar.gz: 3c2a64a11020f01ed1941f6c4b7ddaf73318ca3c
3
+ metadata.gz: e238e5cf4064bd0dd733b9fc92f22da5aff02ca8
4
+ data.tar.gz: 30ea3a12d04a29a01491eb44f52ced5a93d79651
5
5
  SHA512:
6
- metadata.gz: d1dd36da1d32a68d2aec68b51351c1f1f1300326c0a762f8b15652b0fb4defc74316f5827b81839eb28662492ace9dad67092e6e834065c799e1132435ff147f
7
- data.tar.gz: c0600ebf435a98e8cea2f1bee7991d3e6a480dfd7c46928387e71ab6cf2fa490c4d18d6016212a369791d5a99cdc16c4c2bbab1f7100b27636a954118dc19d6c
6
+ metadata.gz: 676a240b1682294ab76c6f7d5d82813f4854114412a92beb8f150ee8eb80a90caecafec82724711a9684638d05921edb9eefd1ebb34c37d701f9c8224508f45f
7
+ data.tar.gz: 4a7bcc64a22421fc9805d10a5279c6bbae551fd44fa60c49d9ce178a501e6fd8eb5cd3a98abb010689b09839571c9d8184352c2973dadcb0e281c5305af4e4cf
data/bower.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-data-factory-guy",
3
- "version": "0.7.6",
3
+ "version": "0.7.7",
4
4
  "authors": [
5
5
  "Daniel Sudol <dansudol@yahoo.com>",
6
6
  "Opak Alex <opak.alexandr@gmail.com>"
@@ -822,12 +822,13 @@ FactoryGuyTestMixin = Em.Mixin.create({
822
822
  /**
823
823
  Build url for the mockjax call. Proxy to the adapters buildURL method.
824
824
 
825
- @param {String} type model type name like 'user' for User model
825
+ @param {String} typeName model type name like 'user' for User model
826
826
  @param {String} id
827
827
  @return {String} url
828
828
  */
829
- buildURL: function (type, id) {
830
- return this.getStore().adapterFor('application').buildURL(type, id);
829
+ buildURL: function (typeName, id) {
830
+ var type = this.getStore().modelFor(typeName);
831
+ return this.getStore().adapterFor(type).buildURL(type.typeKey, id);
831
832
  },
832
833
 
833
834
 
@@ -851,7 +852,7 @@ FactoryGuyTestMixin = Em.Mixin.create({
851
852
  responseJson[modelName]=[];
852
853
  var url = this.buildURL(modelName);
853
854
  // mock the ajax call, but return nothing, since the records will be
854
- // retrieved since they are already in the store
855
+ // retrieved from the store where they were just loaded above
855
856
  this.stubEndpointForHttpRequest(url, responseJson, {type: 'GET'})
856
857
  },
857
858
 
@@ -1 +1 @@
1
- Sequence=function(fn){var index=1;this.next=function(){return fn.call(this,index++)};this.reset=function(){index=1}};function MissingSequenceError(message){this.toString=function(){return message}}ModelDefinition=function(model,config){var sequences={};var traits={};var defaultAttributes={};var namedModels={};var modelId=1;this.model=model;this.matchesName=function(name){return model==name||namedModels[name]};this.merge=function(config){};this.generate=function(name,sequenceFn){if(sequenceFn){if(!sequences[name]){sequences[name]=new Sequence(sequenceFn)}}var sequence=sequences[name];if(!sequence){throw new MissingSequenceError("Can not find that sequence named ["+sequenceName+"] in '"+model+"' definition")}return sequence.next()};this.build=function(name,opts,traitArgs){var traitsObj={};traitArgs.forEach(function(trait){$.extend(traitsObj,traits[trait])});var modelAttributes=namedModels[name]||{};var fixture=$.extend({},defaultAttributes,modelAttributes,traitsObj,opts);for(attribute in fixture){if(Ember.typeOf(fixture[attribute])=="function"){fixture[attribute]=fixture[attribute].call(this,fixture)}else if(Ember.typeOf(fixture[attribute])=="object"){fixture[attribute]=FactoryGuy.build(attribute,fixture[attribute])}}if(!fixture.id){fixture.id=modelId++}return fixture};this.buildList=function(name,number,traits,opts){var arr=[];for(var i=0;i<number;i++){arr.push(this.build(name,opts,traits))}return arr};this.reset=function(){modelId=1;for(name in sequences){sequences[name].reset()}};var parseDefault=function(object){if(!object){return}defaultAttributes=object};var parseTraits=function(object){if(!object){return}traits=object};var parseSequences=function(object){if(!object){return}for(sequenceName in object){var sequenceFn=object[sequenceName];if(Ember.typeOf(sequenceFn)!="function"){throw new Error("Problem with ["+sequenceName+"] sequence definition. Sequences must be functions")}object[sequenceName]=new Sequence(sequenceFn)}sequences=object};var parseConfig=function(config){parseSequences(config.sequences);delete config.sequences;parseTraits(config.traits);delete config.traits;parseDefault(config.default);delete config.default;namedModels=config};parseConfig(config)};FactoryGuy={modelDefinitions:{},define:function(model,config){if(this.modelDefinitions[model]){this.modelDefinitions[model].merge(config)}else{this.modelDefinitions[model]=new ModelDefinition(model,config)}},generate:function(nameOrFunction){var sortaRandomName=Math.floor((1+Math.random())*65536).toString(16)+Date.now();return function(){if(Em.typeOf(nameOrFunction)=="function"){return this.generate(sortaRandomName,nameOrFunction)}else{return this.generate(nameOrFunction)}}},belongsTo:function(fixtureName,opts){return function(){return FactoryGuy.build(fixtureName,opts)}},association:function(fixtureName,opts){console.log("DEPRECATION Warning: use FactoryGuy.belongsTo instead");return this.belongsTo(fixtureName,opts)},hasMany:function(fixtureName,number,opts){return function(){return FactoryGuy.buildList(fixtureName,number,opts)}},lookupModelForFixtureName:function(name){var definition=this.lookupDefinitionForFixtureName(name);if(definition){return definition.model}},lookupDefinitionForFixtureName:function(name){for(model in this.modelDefinitions){var definition=this.modelDefinitions[model];if(definition.matchesName(name)){return definition}}},build:function(){var args=Array.prototype.slice.call(arguments);var opts={};var name=args.shift();if(!name){throw new Error("Build needs a factory name to build")}if(Ember.typeOf(args[args.length-1])=="object"){opts=args.pop()}var traits=args;var definition=this.lookupDefinitionForFixtureName(name);if(!definition){throw new Error("Can't find that factory named ["+name+"]")}return definition.build(name,opts,traits)},buildList:function(){var args=Array.prototype.slice.call(arguments);var name=args.shift();var number=args.shift();if(!name||!number){throw new Error("buildList needs a name and a number ( at least ) to build with")}var opts={};if(Ember.typeOf(args[args.length-1])=="object"){opts=args.pop()}var traits=args;var definition=this.lookupDefinitionForFixtureName(name);if(!definition){throw new Error("Can't find that factory named ["+name+"]")}return definition.buildList(name,number,traits,opts)},resetModels:function(store){for(model in this.modelDefinitions){var definition=this.modelDefinitions[model];definition.reset();try{var modelType=store.modelFor(definition.model);if(store.usingFixtureAdapter()){modelType.FIXTURES=[]}Ember.run(function(){store.unloadAll(modelType)})}catch(e){}}},pushFixture:function(modelClass,fixture){if(!modelClass["FIXTURES"]){modelClass["FIXTURES"]=[]}modelClass["FIXTURES"].push(fixture);return fixture},clear:function(opts){if(!opts){this.modelDefinitions={}}}};DS.Store.reopen({usingFixtureAdapter:function(){var adapter=this.adapterFor("application");return adapter instanceof DS.FixtureAdapter},makeFixture:function(){var store=this;var fixture=FactoryGuy.build.apply(FactoryGuy,arguments);var name=arguments[0];var modelName=FactoryGuy.lookupModelForFixtureName(name);var modelType=store.modelFor(modelName);if(this.usingFixtureAdapter()){this.setAssociationsForFixtureAdapter(modelType,modelName,fixture);return FactoryGuy.pushFixture(modelType,fixture)}else{return store.makeModel(modelType,fixture)}},makeModel:function(modelType,fixture){var store=this,modelName=store.modelFor(modelType).typeKey,model;Em.run(function(){store.findEmbeddedAssociationsForRESTAdapter(modelType,fixture);if(fixture.type){modelName=fixture.type.underscore();modelType=store.modelFor(modelName)}model=store.push(modelName,fixture);store.setAssociationsForRESTAdapter(modelType,modelName,model)});return model},makeList:function(){var arr=[];var number=arguments[1];for(var i=0;i<number;i++){arr.push(this.makeFixture.apply(this,arguments))}return arr},setAssociationsForFixtureAdapter:function(modelType,modelName,fixture){var self=this;var adapter=this.adapterFor("application");Ember.get(modelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind=="hasMany"){var hasManyRelation=fixture[relationship.key];if(hasManyRelation){$.each(fixture[relationship.key],function(index,object){var id=object;if(Ember.typeOf(object)=="object"){id=object.id;hasManyRelation[index]=id}var hasManyfixtures=adapter.fixturesForType(relationship.type);var fixture=adapter.findFixtureById(hasManyfixtures,id);fixture[modelName]=fixture.id})}}if(relationship.kind=="belongsTo"){var belongsToRecord=fixture[relationship.key];if(belongsToRecord){if(typeof belongsToRecord=="object"){FactoryGuy.pushFixture(relationship.type,belongsToRecord);fixture[relationship.key]=belongsToRecord.id}var hasManyName=self.findHasManyRelationshipNameForFixtureAdapter(relationship.type,relationship.parentType);var belongsToFixtures=adapter.fixturesForType(relationship.type);var belongsTofixture=adapter.findFixtureById(belongsToFixtures,fixture[relationship.key]);if(!belongsTofixture[hasManyName]){belongsTofixture[hasManyName]=[]}belongsTofixture[hasManyName].push(fixture.id)}}})},findEmbeddedAssociationsForRESTAdapter:function(modelType,fixture){var store=this;Ember.get(modelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind=="belongsTo"){var belongsToRecord=fixture[relationship.key];if(Ember.typeOf(belongsToRecord)=="object"){store.findEmbeddedAssociationsForRESTAdapter(relationship.type,belongsToRecord);belongsToRecord=store.push(relationship.type,belongsToRecord);fixture[relationship.key]=belongsToRecord}}if(relationship.kind=="hasMany"){var hasManyRecords=fixture[relationship.key];if(Ember.typeOf(hasManyRecords)=="array"){if(Ember.typeOf(hasManyRecords[0])=="object"){var records=Em.A();hasManyRecords.map(function(object){store.findEmbeddedAssociationsForRESTAdapter(relationship.type,object);var record=store.push(relationship.type,object);records.push(record);return record});fixture[relationship.key]=records}}}})},setAssociationsForRESTAdapter:function(modelType,modelName,model){var self=this;Ember.get(modelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind=="hasMany"){var children=model.get(name)||[];children.forEach(function(child){var belongsToName=self.findRelationshipName("belongsTo",child.constructor,model);if(belongsToName){child.set(belongsToName,model)}})}})},findRelationshipName:function(kind,belongToModelType,childModel){var relationshipName;Ember.get(belongToModelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind==kind&&childModel instanceof relationship.type){relationshipName=relationship.key}});return relationshipName},findHasManyRelationshipNameForFixtureAdapter:function(belongToModelType,childModelType){var relationshipName;Ember.get(belongToModelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind=="hasMany"&&childModelType==relationship.type){relationshipName=relationship.key}});return relationshipName},pushPayload:function(type,payload){if(this.usingFixtureAdapter()){var model=this.modelFor(modelName);FactoryGuy.pushFixture(model,payload)}else{this._super(type,payload)}}});FactoryGuyTestMixin=Em.Mixin.create({setup:function(app){this.set("container",app.__container__);return this},useFixtureAdapter:function(app){app.ApplicationAdapter=DS.FixtureAdapter;this.getStore().adapterFor("application").simulateRemoteResponse=false},usingActiveModelSerializer:function(type){var store=this.getStore();var type=store.modelFor(type);var serializer=store.serializerFor(type.typeKey);return serializer instanceof DS.ActiveModelSerializer},find:function(type,id){return this.getStore().find(type,id)},make:function(){var store=this.getStore();return store.makeFixture.apply(store,arguments)},getStore:function(){return this.get("container").lookup("store:main")},pushPayload:function(type,hash){return this.getStore().pushPayload(type,hash)},pushRecord:function(type,hash){return this.getStore().push(type,hash)},stubEndpointForHttpRequest:function(url,json,options){options=options||{};var request={url:url,dataType:"json",responseText:json,type:options.type||"GET",status:options.status||200};if(options.data){request.data=options.data}$.mockjax(request)},buildURL:function(type,id){return this.getStore().adapterFor("application").buildURL(type,id)},handleFindMany:function(){var store=this.getStore();store.makeList.apply(store,arguments);var name=arguments[0];var modelName=FactoryGuy.lookupModelForFixtureName(name);var responseJson={};responseJson[modelName]=[];var url=this.buildURL(modelName);this.stubEndpointForHttpRequest(url,responseJson,{type:"GET"})},handleCreate:function(){var args=Array.prototype.slice.call(arguments);var succeed=true;if(Ember.typeOf(args[args.length-1])=="boolean"){succeed=args.pop()}var name=args[0];var modelName=FactoryGuy.lookupModelForFixtureName(name);var url=this.buildURL(modelName);var responseJson={};var httpOptions={type:"POST"};if(succeed){var store=this.getStore();var model=store.makeFixture.apply(store,args);responseJson[modelName]=model}else{httpOptions.status=500}this.stubEndpointForHttpRequest(url,responseJson,httpOptions)},handleUpdate:function(type,id,succeed){succeed=succeed===undefined?true:succeed;this.stubEndpointForHttpRequest(this.buildURL(type,id),{},{type:"PUT",status:succeed?200:500})},handleDelete:function(type,id,succeed){succeed=succeed===undefined?true:succeed;this.stubEndpointForHttpRequest(this.buildURL(type,id),{},{type:"DELETE",status:succeed?200:500})},teardown:function(){FactoryGuy.resetModels(this.getStore());$.mockjax.clear()}});(function($){var _ajax=$.ajax,mockHandlers=[],mockedAjaxCalls=[],unmockedAjaxCalls=[],CALLBACK_REGEX=/=\?(&|$)/,jsc=(new Date).getTime();function parseXML(xml){if(window.DOMParser==undefined&&window.ActiveXObject){DOMParser=function(){};DOMParser.prototype.parseFromString=function(xmlString){var doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";doc.loadXML(xmlString);return doc}}try{var xmlDoc=(new DOMParser).parseFromString(xml,"text/xml");if($.isXMLDoc(xmlDoc)){var err=$("parsererror",xmlDoc);if(err.length==1){throw new Error("Error: "+$(xmlDoc).text())}}else{throw new Error("Unable to parse XML")}return xmlDoc}catch(e){var msg=e.name==undefined?e:e.name+": "+e.message;$(document).trigger("xmlParseError",[msg]);return undefined}}function isMockDataEqual(mock,live){var identical=true;if(typeof live==="string"){return $.isFunction(mock.test)?mock.test(live):mock==live}$.each(mock,function(k){if(live[k]===undefined){identical=false;return identical}else{if(typeof live[k]==="object"&&live[k]!==null){if(identical&&$.isArray(live[k])){identical=$.isArray(mock[k])&&live[k].length===mock[k].length}identical=identical&&isMockDataEqual(mock[k],live[k])}else{if(mock[k]&&$.isFunction(mock[k].test)){identical=identical&&mock[k].test(live[k])}else{identical=identical&&mock[k]==live[k]}}}});return identical}function isDefaultSetting(handler,property){return handler[property]===$.mockjaxSettings[property]}function getMockForRequest(handler,requestSettings){if($.isFunction(handler)){return handler(requestSettings)}if($.isFunction(handler.url.test)){if(!handler.url.test(requestSettings.url)){return null}}else{var star=handler.url.indexOf("*");if(handler.url!==requestSettings.url&&star===-1||!new RegExp(handler.url.replace(/[-[\]{}()+?.,\\^$|#\s]/g,"\\$&").replace(/\*/g,".+")).test(requestSettings.url)){return null}}if(handler.data){if(!requestSettings.data||!isMockDataEqual(handler.data,requestSettings.data)){return null}}if(handler&&handler.type&&handler.type.toLowerCase()!=requestSettings.type.toLowerCase()){return null}return handler}function parseResponseTimeOpt(responseTime){if($.isArray(responseTime)){var min=responseTime[0];var max=responseTime[1];return typeof min==="number"&&typeof max==="number"?Math.floor(Math.random()*(max-min))+min:null}else{return typeof responseTime==="number"?responseTime:null}}function _xhrSend(mockHandler,requestSettings,origSettings){var process=function(that){return function(){return function(){this.status=mockHandler.status;this.statusText=mockHandler.statusText;this.readyState=1;var finishRequest=function(){this.readyState=4;var onReady;if(requestSettings.dataType=="json"&&typeof mockHandler.responseText=="object"){this.responseText=JSON.stringify(mockHandler.responseText)}else if(requestSettings.dataType=="xml"){if(typeof mockHandler.responseXML=="string"){this.responseXML=parseXML(mockHandler.responseXML);this.responseText=mockHandler.responseXML}else{this.responseXML=mockHandler.responseXML}}else if(typeof mockHandler.responseText==="object"&&mockHandler.responseText!==null){mockHandler.contentType="application/json";this.responseText=JSON.stringify(mockHandler.responseText)}else{this.responseText=mockHandler.responseText}if(typeof mockHandler.status=="number"||typeof mockHandler.status=="string"){this.status=mockHandler.status}if(typeof mockHandler.statusText==="string"){this.statusText=mockHandler.statusText}onReady=this.onreadystatechange||this.onload;if($.isFunction(onReady)){if(mockHandler.isTimeout){this.status=-1}onReady.call(this,mockHandler.isTimeout?"timeout":undefined)}else if(mockHandler.isTimeout){this.status=-1}};if($.isFunction(mockHandler.response)){if(mockHandler.response.length===2){mockHandler.response(origSettings,function(){finishRequest.call(that)});return}else{mockHandler.response(origSettings)}}finishRequest.call(that)}.apply(that)}}(this);if(mockHandler.proxy){_ajax({global:false,url:mockHandler.proxy,type:mockHandler.proxyType,data:mockHandler.data,dataType:requestSettings.dataType==="script"?"text/plain":requestSettings.dataType,complete:function(xhr){mockHandler.responseXML=xhr.responseXML;mockHandler.responseText=xhr.responseText;if(isDefaultSetting(mockHandler,"status")){mockHandler.status=xhr.status}if(isDefaultSetting(mockHandler,"statusText")){mockHandler.statusText=xhr.statusText}this.responseTimer=setTimeout(process,parseResponseTimeOpt(mockHandler.responseTime)||0)}})}else{if(requestSettings.async===false){process()}else{this.responseTimer=setTimeout(process,parseResponseTimeOpt(mockHandler.responseTime)||50)}}}function xhr(mockHandler,requestSettings,origSettings,origHandler){mockHandler=$.extend(true,{},$.mockjaxSettings,mockHandler);if(typeof mockHandler.headers==="undefined"){mockHandler.headers={}}if(typeof requestSettings.headers==="undefined"){requestSettings.headers={}}if(mockHandler.contentType){mockHandler.headers["content-type"]=mockHandler.contentType}return{status:mockHandler.status,statusText:mockHandler.statusText,readyState:1,open:function(){},send:function(){origHandler.fired=true;_xhrSend.call(this,mockHandler,requestSettings,origSettings)},abort:function(){clearTimeout(this.responseTimer)},setRequestHeader:function(header,value){requestSettings.headers[header]=value},getResponseHeader:function(header){if(mockHandler.headers&&mockHandler.headers[header]){return mockHandler.headers[header]}else if(header.toLowerCase()=="last-modified"){return mockHandler.lastModified||(new Date).toString()}else if(header.toLowerCase()=="etag"){return mockHandler.etag||""}else if(header.toLowerCase()=="content-type"){return mockHandler.contentType||"text/plain"}},getAllResponseHeaders:function(){var headers="";if(mockHandler.contentType){mockHandler.headers["Content-Type"]=mockHandler.contentType}$.each(mockHandler.headers,function(k,v){headers+=k+": "+v+"\n"});return headers}}}function processJsonpMock(requestSettings,mockHandler,origSettings){processJsonpUrl(requestSettings);requestSettings.dataType="json";if(requestSettings.data&&CALLBACK_REGEX.test(requestSettings.data)||CALLBACK_REGEX.test(requestSettings.url)){createJsonpCallback(requestSettings,mockHandler,origSettings);var rurl=/^(\w+:)?\/\/([^\/?#]+)/,parts=rurl.exec(requestSettings.url),remote=parts&&(parts[1]&&parts[1]!==location.protocol||parts[2]!==location.host);requestSettings.dataType="script";if(requestSettings.type.toUpperCase()==="GET"&&remote){var newMockReturn=processJsonpRequest(requestSettings,mockHandler,origSettings);if(newMockReturn){return newMockReturn}else{return true}}}return null}function processJsonpUrl(requestSettings){if(requestSettings.type.toUpperCase()==="GET"){if(!CALLBACK_REGEX.test(requestSettings.url)){requestSettings.url+=(/\?/.test(requestSettings.url)?"&":"?")+(requestSettings.jsonp||"callback")+"=?"}}else if(!requestSettings.data||!CALLBACK_REGEX.test(requestSettings.data)){requestSettings.data=(requestSettings.data?requestSettings.data+"&":"")+(requestSettings.jsonp||"callback")+"=?"}}function processJsonpRequest(requestSettings,mockHandler,origSettings){var callbackContext=origSettings&&origSettings.context||requestSettings,newMock=null;if(mockHandler.response&&$.isFunction(mockHandler.response)){mockHandler.response(origSettings)}else{if(typeof mockHandler.responseText==="object"){$.globalEval("("+JSON.stringify(mockHandler.responseText)+")")}else{$.globalEval("("+mockHandler.responseText+")")}}setTimeout(function(){jsonpSuccess(requestSettings,callbackContext,mockHandler);jsonpComplete(requestSettings,callbackContext,mockHandler)},parseResponseTimeOpt(mockHandler.responseTime)||0);if($.Deferred){newMock=new $.Deferred;if(typeof mockHandler.responseText=="object"){newMock.resolveWith(callbackContext,[mockHandler.responseText])}else{newMock.resolveWith(callbackContext,[$.parseJSON(mockHandler.responseText)])}}return newMock}function createJsonpCallback(requestSettings,mockHandler,origSettings){var callbackContext=origSettings&&origSettings.context||requestSettings;var jsonp=requestSettings.jsonpCallback||"jsonp"+jsc++;if(requestSettings.data){requestSettings.data=(requestSettings.data+"").replace(CALLBACK_REGEX,"="+jsonp+"$1")}requestSettings.url=requestSettings.url.replace(CALLBACK_REGEX,"="+jsonp+"$1");window[jsonp]=window[jsonp]||function(tmp){data=tmp;jsonpSuccess(requestSettings,callbackContext,mockHandler);jsonpComplete(requestSettings,callbackContext,mockHandler);window[jsonp]=undefined;try{delete window[jsonp]}catch(e){}if(head){head.removeChild(script)}}}function jsonpSuccess(requestSettings,callbackContext,mockHandler){if(requestSettings.success){requestSettings.success.call(callbackContext,mockHandler.responseText||"",status,{})}if(requestSettings.global){(requestSettings.context?$(requestSettings.context):$.event).trigger("ajaxSuccess",[{},requestSettings])}}function jsonpComplete(requestSettings,callbackContext){if(requestSettings.complete){requestSettings.complete.call(callbackContext,{},status)}if(requestSettings.global){(requestSettings.context?$(requestSettings.context):$.event).trigger("ajaxComplete",[{},requestSettings])}if(requestSettings.global&&!--$.active){$.event.trigger("ajaxStop")}}function handleAjax(url,origSettings){var mockRequest,requestSettings,mockHandler,overrideCallback;if(typeof url==="object"){origSettings=url;url=undefined}else{origSettings=origSettings||{};origSettings.url=url}requestSettings=$.extend(true,{},$.ajaxSettings,origSettings);overrideCallback=function(action,mockHandler){var origHandler=origSettings[action.toLowerCase()];return function(){if($.isFunction(origHandler)){origHandler.apply(this,[].slice.call(arguments))}mockHandler["onAfter"+action]()}};for(var k=0;k<mockHandlers.length;k++){if(!mockHandlers[k]){continue}mockHandler=getMockForRequest(mockHandlers[k],requestSettings);if(!mockHandler){continue}mockedAjaxCalls.push(requestSettings);$.mockjaxSettings.log(mockHandler,requestSettings);if(requestSettings.dataType&&requestSettings.dataType.toUpperCase()==="JSONP"){if(mockRequest=processJsonpMock(requestSettings,mockHandler,origSettings)){return mockRequest}}mockHandler.cache=requestSettings.cache;mockHandler.timeout=requestSettings.timeout;mockHandler.global=requestSettings.global;if(mockHandler.isTimeout){if(mockHandler.responseTime>1){origSettings.timeout=mockHandler.responseTime-1}else{mockHandler.responseTime=2;origSettings.timeout=1}mockHandler.isTimeout=false}if($.isFunction(mockHandler.onAfterSuccess)){origSettings.success=overrideCallback("Success",mockHandler)}if($.isFunction(mockHandler.onAfterError)){origSettings.error=overrideCallback("Error",mockHandler)}if($.isFunction(mockHandler.onAfterComplete)){origSettings.complete=overrideCallback("Complete",mockHandler)}copyUrlParameters(mockHandler,origSettings);(function(mockHandler,requestSettings,origSettings,origHandler){mockRequest=_ajax.call($,$.extend(true,{},origSettings,{xhr:function(){return xhr(mockHandler,requestSettings,origSettings,origHandler)}}))})(mockHandler,requestSettings,origSettings,mockHandlers[k]);return mockRequest}unmockedAjaxCalls.push(origSettings);if($.mockjaxSettings.throwUnmocked===true){throw new Error("AJAX not mocked: "+origSettings.url)}else{return _ajax.apply($,[origSettings])}}function copyUrlParameters(mockHandler,origSettings){if(!(mockHandler.url instanceof RegExp)){return}if(!mockHandler.hasOwnProperty("urlParams")){return}var captures=mockHandler.url.exec(origSettings.url);if(captures.length===1){return}captures.shift();var i=0,capturesLength=captures.length,paramsLength=mockHandler.urlParams.length,maxIterations=Math.min(capturesLength,paramsLength),paramValues={};for(i;i<maxIterations;i++){var key=mockHandler.urlParams[i];paramValues[key]=captures[i]}origSettings.urlParams=paramValues}$.extend({ajax:handleAjax});$.mockjaxSettings={log:function(mockHandler,requestSettings){if(mockHandler.logging===false||typeof mockHandler.logging==="undefined"&&$.mockjaxSettings.logging===false){return}if(window.console&&console.log){var message="MOCK "+requestSettings.type.toUpperCase()+": "+requestSettings.url;var request=$.extend({},requestSettings);if(typeof console.log==="function"){console.log(message,request)}else{try{console.log(message+" "+JSON.stringify(request))}catch(e){console.log(message)}}}},logging:true,status:200,statusText:"OK",responseTime:500,isTimeout:false,throwUnmocked:false,contentType:"text/plain",response:"",responseText:"",responseXML:"",proxy:"",proxyType:"GET",lastModified:null,etag:"",headers:{etag:"IJF@H#@923uf8023hFO@I#H#","content-type":"text/plain"}};$.mockjax=function(settings){var i=mockHandlers.length;mockHandlers[i]=settings;return i};$.mockjax.clear=function(i){if(arguments.length==1){mockHandlers[i]=null}else{mockHandlers=[]}mockedAjaxCalls=[];unmockedAjaxCalls=[]};$.mockjaxClear=function(i){window.console&&window.console.warn&&window.console.warn("DEPRECATED: The $.mockjaxClear() method has been deprecated in 1.6.0. Please use $.mockjax.clear() as the older function will be removed soon!");$.mockjax.clear()};$.mockjax.handler=function(i){if(arguments.length==1){return mockHandlers[i]}};$.mockjax.mockedAjaxCalls=function(){return mockedAjaxCalls};$.mockjax.unfiredHandlers=function(){var results=[];for(var i=0,len=mockHandlers.length;i<len;i++){var handler=mockHandlers[i];if(handler!==null&&!handler.fired){results.push(handler)}}return results};$.mockjax.unmockedAjaxCalls=function(){return unmockedAjaxCalls}})(jQuery);
1
+ Sequence=function(fn){var index=1;this.next=function(){return fn.call(this,index++)};this.reset=function(){index=1}};function MissingSequenceError(message){this.toString=function(){return message}}ModelDefinition=function(model,config){var sequences={};var traits={};var defaultAttributes={};var namedModels={};var modelId=1;this.model=model;this.matchesName=function(name){return model==name||namedModels[name]};this.merge=function(config){};this.generate=function(name,sequenceFn){if(sequenceFn){if(!sequences[name]){sequences[name]=new Sequence(sequenceFn)}}var sequence=sequences[name];if(!sequence){throw new MissingSequenceError("Can not find that sequence named ["+sequenceName+"] in '"+model+"' definition")}return sequence.next()};this.build=function(name,opts,traitArgs){var traitsObj={};traitArgs.forEach(function(trait){$.extend(traitsObj,traits[trait])});var modelAttributes=namedModels[name]||{};var fixture=$.extend({},defaultAttributes,modelAttributes,traitsObj,opts);for(attribute in fixture){if(Ember.typeOf(fixture[attribute])=="function"){fixture[attribute]=fixture[attribute].call(this,fixture)}else if(Ember.typeOf(fixture[attribute])=="object"){fixture[attribute]=FactoryGuy.build(attribute,fixture[attribute])}}if(!fixture.id){fixture.id=modelId++}return fixture};this.buildList=function(name,number,traits,opts){var arr=[];for(var i=0;i<number;i++){arr.push(this.build(name,opts,traits))}return arr};this.reset=function(){modelId=1;for(name in sequences){sequences[name].reset()}};var parseDefault=function(object){if(!object){return}defaultAttributes=object};var parseTraits=function(object){if(!object){return}traits=object};var parseSequences=function(object){if(!object){return}for(sequenceName in object){var sequenceFn=object[sequenceName];if(Ember.typeOf(sequenceFn)!="function"){throw new Error("Problem with ["+sequenceName+"] sequence definition. Sequences must be functions")}object[sequenceName]=new Sequence(sequenceFn)}sequences=object};var parseConfig=function(config){parseSequences(config.sequences);delete config.sequences;parseTraits(config.traits);delete config.traits;parseDefault(config.default);delete config.default;namedModels=config};parseConfig(config)};FactoryGuy={modelDefinitions:{},define:function(model,config){if(this.modelDefinitions[model]){this.modelDefinitions[model].merge(config)}else{this.modelDefinitions[model]=new ModelDefinition(model,config)}},generate:function(nameOrFunction){var sortaRandomName=Math.floor((1+Math.random())*65536).toString(16)+Date.now();return function(){if(Em.typeOf(nameOrFunction)=="function"){return this.generate(sortaRandomName,nameOrFunction)}else{return this.generate(nameOrFunction)}}},belongsTo:function(fixtureName,opts){return function(){return FactoryGuy.build(fixtureName,opts)}},association:function(fixtureName,opts){console.log("DEPRECATION Warning: use FactoryGuy.belongsTo instead");return this.belongsTo(fixtureName,opts)},hasMany:function(fixtureName,number,opts){return function(){return FactoryGuy.buildList(fixtureName,number,opts)}},lookupModelForFixtureName:function(name){var definition=this.lookupDefinitionForFixtureName(name);if(definition){return definition.model}},lookupDefinitionForFixtureName:function(name){for(model in this.modelDefinitions){var definition=this.modelDefinitions[model];if(definition.matchesName(name)){return definition}}},build:function(){var args=Array.prototype.slice.call(arguments);var opts={};var name=args.shift();if(!name){throw new Error("Build needs a factory name to build")}if(Ember.typeOf(args[args.length-1])=="object"){opts=args.pop()}var traits=args;var definition=this.lookupDefinitionForFixtureName(name);if(!definition){throw new Error("Can't find that factory named ["+name+"]")}return definition.build(name,opts,traits)},buildList:function(){var args=Array.prototype.slice.call(arguments);var name=args.shift();var number=args.shift();if(!name||!number){throw new Error("buildList needs a name and a number ( at least ) to build with")}var opts={};if(Ember.typeOf(args[args.length-1])=="object"){opts=args.pop()}var traits=args;var definition=this.lookupDefinitionForFixtureName(name);if(!definition){throw new Error("Can't find that factory named ["+name+"]")}return definition.buildList(name,number,traits,opts)},resetModels:function(store){for(model in this.modelDefinitions){var definition=this.modelDefinitions[model];definition.reset();try{var modelType=store.modelFor(definition.model);if(store.usingFixtureAdapter()){modelType.FIXTURES=[]}Ember.run(function(){store.unloadAll(modelType)})}catch(e){}}},pushFixture:function(modelClass,fixture){if(!modelClass["FIXTURES"]){modelClass["FIXTURES"]=[]}modelClass["FIXTURES"].push(fixture);return fixture},clear:function(opts){if(!opts){this.modelDefinitions={}}}};DS.Store.reopen({usingFixtureAdapter:function(){var adapter=this.adapterFor("application");return adapter instanceof DS.FixtureAdapter},makeFixture:function(){var store=this;var fixture=FactoryGuy.build.apply(FactoryGuy,arguments);var name=arguments[0];var modelName=FactoryGuy.lookupModelForFixtureName(name);var modelType=store.modelFor(modelName);if(this.usingFixtureAdapter()){this.setAssociationsForFixtureAdapter(modelType,modelName,fixture);return FactoryGuy.pushFixture(modelType,fixture)}else{return store.makeModel(modelType,fixture)}},makeModel:function(modelType,fixture){var store=this,modelName=store.modelFor(modelType).typeKey,model;Em.run(function(){store.findEmbeddedAssociationsForRESTAdapter(modelType,fixture);if(fixture.type){modelName=fixture.type.underscore();modelType=store.modelFor(modelName)}model=store.push(modelName,fixture);store.setAssociationsForRESTAdapter(modelType,modelName,model)});return model},makeList:function(){var arr=[];var number=arguments[1];for(var i=0;i<number;i++){arr.push(this.makeFixture.apply(this,arguments))}return arr},setAssociationsForFixtureAdapter:function(modelType,modelName,fixture){var self=this;var adapter=this.adapterFor("application");Ember.get(modelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind=="hasMany"){var hasManyRelation=fixture[relationship.key];if(hasManyRelation){$.each(fixture[relationship.key],function(index,object){var id=object;if(Ember.typeOf(object)=="object"){id=object.id;hasManyRelation[index]=id}var hasManyfixtures=adapter.fixturesForType(relationship.type);var fixture=adapter.findFixtureById(hasManyfixtures,id);fixture[modelName]=fixture.id})}}if(relationship.kind=="belongsTo"){var belongsToRecord=fixture[relationship.key];if(belongsToRecord){if(typeof belongsToRecord=="object"){FactoryGuy.pushFixture(relationship.type,belongsToRecord);fixture[relationship.key]=belongsToRecord.id}var hasManyName=self.findHasManyRelationshipNameForFixtureAdapter(relationship.type,relationship.parentType);var belongsToFixtures=adapter.fixturesForType(relationship.type);var belongsTofixture=adapter.findFixtureById(belongsToFixtures,fixture[relationship.key]);if(!belongsTofixture[hasManyName]){belongsTofixture[hasManyName]=[]}belongsTofixture[hasManyName].push(fixture.id)}}})},findEmbeddedAssociationsForRESTAdapter:function(modelType,fixture){var store=this;Ember.get(modelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind=="belongsTo"){var belongsToRecord=fixture[relationship.key];if(Ember.typeOf(belongsToRecord)=="object"){store.findEmbeddedAssociationsForRESTAdapter(relationship.type,belongsToRecord);belongsToRecord=store.push(relationship.type,belongsToRecord);fixture[relationship.key]=belongsToRecord}}if(relationship.kind=="hasMany"){var hasManyRecords=fixture[relationship.key];if(Ember.typeOf(hasManyRecords)=="array"){if(Ember.typeOf(hasManyRecords[0])=="object"){var records=Em.A();hasManyRecords.map(function(object){store.findEmbeddedAssociationsForRESTAdapter(relationship.type,object);var record=store.push(relationship.type,object);records.push(record);return record});fixture[relationship.key]=records}}}})},setAssociationsForRESTAdapter:function(modelType,modelName,model){var self=this;Ember.get(modelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind=="hasMany"){var children=model.get(name)||[];children.forEach(function(child){var belongsToName=self.findRelationshipName("belongsTo",child.constructor,model);if(belongsToName){child.set(belongsToName,model)}})}})},findRelationshipName:function(kind,belongToModelType,childModel){var relationshipName;Ember.get(belongToModelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind==kind&&childModel instanceof relationship.type){relationshipName=relationship.key}});return relationshipName},findHasManyRelationshipNameForFixtureAdapter:function(belongToModelType,childModelType){var relationshipName;Ember.get(belongToModelType,"relationshipsByName").forEach(function(relationship,name){if(relationship.kind=="hasMany"&&childModelType==relationship.type){relationshipName=relationship.key}});return relationshipName},pushPayload:function(type,payload){if(this.usingFixtureAdapter()){var model=this.modelFor(modelName);FactoryGuy.pushFixture(model,payload)}else{this._super(type,payload)}}});FactoryGuyTestMixin=Em.Mixin.create({setup:function(app){this.set("container",app.__container__);return this},useFixtureAdapter:function(app){app.ApplicationAdapter=DS.FixtureAdapter;this.getStore().adapterFor("application").simulateRemoteResponse=false},usingActiveModelSerializer:function(type){var store=this.getStore();var type=store.modelFor(type);var serializer=store.serializerFor(type.typeKey);return serializer instanceof DS.ActiveModelSerializer},find:function(type,id){return this.getStore().find(type,id)},make:function(){var store=this.getStore();return store.makeFixture.apply(store,arguments)},getStore:function(){return this.get("container").lookup("store:main")},pushPayload:function(type,hash){return this.getStore().pushPayload(type,hash)},pushRecord:function(type,hash){return this.getStore().push(type,hash)},stubEndpointForHttpRequest:function(url,json,options){options=options||{};var request={url:url,dataType:"json",responseText:json,type:options.type||"GET",status:options.status||200};if(options.data){request.data=options.data}$.mockjax(request)},buildURL:function(typeName,id){var type=this.getStore().modelFor(typeName);return this.getStore().adapterFor(type).buildURL(type.typeKey,id)},handleFindMany:function(){var store=this.getStore();store.makeList.apply(store,arguments);var name=arguments[0];var modelName=FactoryGuy.lookupModelForFixtureName(name);var responseJson={};responseJson[modelName]=[];var url=this.buildURL(modelName);this.stubEndpointForHttpRequest(url,responseJson,{type:"GET"})},handleCreate:function(){var args=Array.prototype.slice.call(arguments);var succeed=true;if(Ember.typeOf(args[args.length-1])=="boolean"){succeed=args.pop()}var name=args[0];var modelName=FactoryGuy.lookupModelForFixtureName(name);var url=this.buildURL(modelName);var responseJson={};var httpOptions={type:"POST"};if(succeed){var store=this.getStore();var model=store.makeFixture.apply(store,args);responseJson[modelName]=model}else{httpOptions.status=500}this.stubEndpointForHttpRequest(url,responseJson,httpOptions)},handleUpdate:function(type,id,succeed){succeed=succeed===undefined?true:succeed;this.stubEndpointForHttpRequest(this.buildURL(type,id),{},{type:"PUT",status:succeed?200:500})},handleDelete:function(type,id,succeed){succeed=succeed===undefined?true:succeed;this.stubEndpointForHttpRequest(this.buildURL(type,id),{},{type:"DELETE",status:succeed?200:500})},teardown:function(){FactoryGuy.resetModels(this.getStore());$.mockjax.clear()}});(function($){var _ajax=$.ajax,mockHandlers=[],mockedAjaxCalls=[],unmockedAjaxCalls=[],CALLBACK_REGEX=/=\?(&|$)/,jsc=(new Date).getTime();function parseXML(xml){if(window.DOMParser==undefined&&window.ActiveXObject){DOMParser=function(){};DOMParser.prototype.parseFromString=function(xmlString){var doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";doc.loadXML(xmlString);return doc}}try{var xmlDoc=(new DOMParser).parseFromString(xml,"text/xml");if($.isXMLDoc(xmlDoc)){var err=$("parsererror",xmlDoc);if(err.length==1){throw new Error("Error: "+$(xmlDoc).text())}}else{throw new Error("Unable to parse XML")}return xmlDoc}catch(e){var msg=e.name==undefined?e:e.name+": "+e.message;$(document).trigger("xmlParseError",[msg]);return undefined}}function isMockDataEqual(mock,live){var identical=true;if(typeof live==="string"){return $.isFunction(mock.test)?mock.test(live):mock==live}$.each(mock,function(k){if(live[k]===undefined){identical=false;return identical}else{if(typeof live[k]==="object"&&live[k]!==null){if(identical&&$.isArray(live[k])){identical=$.isArray(mock[k])&&live[k].length===mock[k].length}identical=identical&&isMockDataEqual(mock[k],live[k])}else{if(mock[k]&&$.isFunction(mock[k].test)){identical=identical&&mock[k].test(live[k])}else{identical=identical&&mock[k]==live[k]}}}});return identical}function isDefaultSetting(handler,property){return handler[property]===$.mockjaxSettings[property]}function getMockForRequest(handler,requestSettings){if($.isFunction(handler)){return handler(requestSettings)}if($.isFunction(handler.url.test)){if(!handler.url.test(requestSettings.url)){return null}}else{var star=handler.url.indexOf("*");if(handler.url!==requestSettings.url&&star===-1||!new RegExp(handler.url.replace(/[-[\]{}()+?.,\\^$|#\s]/g,"\\$&").replace(/\*/g,".+")).test(requestSettings.url)){return null}}if(handler.data){if(!requestSettings.data||!isMockDataEqual(handler.data,requestSettings.data)){return null}}if(handler&&handler.type&&handler.type.toLowerCase()!=requestSettings.type.toLowerCase()){return null}return handler}function parseResponseTimeOpt(responseTime){if($.isArray(responseTime)){var min=responseTime[0];var max=responseTime[1];return typeof min==="number"&&typeof max==="number"?Math.floor(Math.random()*(max-min))+min:null}else{return typeof responseTime==="number"?responseTime:null}}function _xhrSend(mockHandler,requestSettings,origSettings){var process=function(that){return function(){return function(){this.status=mockHandler.status;this.statusText=mockHandler.statusText;this.readyState=1;var finishRequest=function(){this.readyState=4;var onReady;if(requestSettings.dataType=="json"&&typeof mockHandler.responseText=="object"){this.responseText=JSON.stringify(mockHandler.responseText)}else if(requestSettings.dataType=="xml"){if(typeof mockHandler.responseXML=="string"){this.responseXML=parseXML(mockHandler.responseXML);this.responseText=mockHandler.responseXML}else{this.responseXML=mockHandler.responseXML}}else if(typeof mockHandler.responseText==="object"&&mockHandler.responseText!==null){mockHandler.contentType="application/json";this.responseText=JSON.stringify(mockHandler.responseText)}else{this.responseText=mockHandler.responseText}if(typeof mockHandler.status=="number"||typeof mockHandler.status=="string"){this.status=mockHandler.status}if(typeof mockHandler.statusText==="string"){this.statusText=mockHandler.statusText}onReady=this.onreadystatechange||this.onload;if($.isFunction(onReady)){if(mockHandler.isTimeout){this.status=-1}onReady.call(this,mockHandler.isTimeout?"timeout":undefined)}else if(mockHandler.isTimeout){this.status=-1}};if($.isFunction(mockHandler.response)){if(mockHandler.response.length===2){mockHandler.response(origSettings,function(){finishRequest.call(that)});return}else{mockHandler.response(origSettings)}}finishRequest.call(that)}.apply(that)}}(this);if(mockHandler.proxy){_ajax({global:false,url:mockHandler.proxy,type:mockHandler.proxyType,data:mockHandler.data,dataType:requestSettings.dataType==="script"?"text/plain":requestSettings.dataType,complete:function(xhr){mockHandler.responseXML=xhr.responseXML;mockHandler.responseText=xhr.responseText;if(isDefaultSetting(mockHandler,"status")){mockHandler.status=xhr.status}if(isDefaultSetting(mockHandler,"statusText")){mockHandler.statusText=xhr.statusText}this.responseTimer=setTimeout(process,parseResponseTimeOpt(mockHandler.responseTime)||0)}})}else{if(requestSettings.async===false){process()}else{this.responseTimer=setTimeout(process,parseResponseTimeOpt(mockHandler.responseTime)||50)}}}function xhr(mockHandler,requestSettings,origSettings,origHandler){mockHandler=$.extend(true,{},$.mockjaxSettings,mockHandler);if(typeof mockHandler.headers==="undefined"){mockHandler.headers={}}if(typeof requestSettings.headers==="undefined"){requestSettings.headers={}}if(mockHandler.contentType){mockHandler.headers["content-type"]=mockHandler.contentType}return{status:mockHandler.status,statusText:mockHandler.statusText,readyState:1,open:function(){},send:function(){origHandler.fired=true;_xhrSend.call(this,mockHandler,requestSettings,origSettings)},abort:function(){clearTimeout(this.responseTimer)},setRequestHeader:function(header,value){requestSettings.headers[header]=value},getResponseHeader:function(header){if(mockHandler.headers&&mockHandler.headers[header]){return mockHandler.headers[header]}else if(header.toLowerCase()=="last-modified"){return mockHandler.lastModified||(new Date).toString()}else if(header.toLowerCase()=="etag"){return mockHandler.etag||""}else if(header.toLowerCase()=="content-type"){return mockHandler.contentType||"text/plain"}},getAllResponseHeaders:function(){var headers="";if(mockHandler.contentType){mockHandler.headers["Content-Type"]=mockHandler.contentType}$.each(mockHandler.headers,function(k,v){headers+=k+": "+v+"\n"});return headers}}}function processJsonpMock(requestSettings,mockHandler,origSettings){processJsonpUrl(requestSettings);requestSettings.dataType="json";if(requestSettings.data&&CALLBACK_REGEX.test(requestSettings.data)||CALLBACK_REGEX.test(requestSettings.url)){createJsonpCallback(requestSettings,mockHandler,origSettings);var rurl=/^(\w+:)?\/\/([^\/?#]+)/,parts=rurl.exec(requestSettings.url),remote=parts&&(parts[1]&&parts[1]!==location.protocol||parts[2]!==location.host);requestSettings.dataType="script";if(requestSettings.type.toUpperCase()==="GET"&&remote){var newMockReturn=processJsonpRequest(requestSettings,mockHandler,origSettings);if(newMockReturn){return newMockReturn}else{return true}}}return null}function processJsonpUrl(requestSettings){if(requestSettings.type.toUpperCase()==="GET"){if(!CALLBACK_REGEX.test(requestSettings.url)){requestSettings.url+=(/\?/.test(requestSettings.url)?"&":"?")+(requestSettings.jsonp||"callback")+"=?"}}else if(!requestSettings.data||!CALLBACK_REGEX.test(requestSettings.data)){requestSettings.data=(requestSettings.data?requestSettings.data+"&":"")+(requestSettings.jsonp||"callback")+"=?"}}function processJsonpRequest(requestSettings,mockHandler,origSettings){var callbackContext=origSettings&&origSettings.context||requestSettings,newMock=null;if(mockHandler.response&&$.isFunction(mockHandler.response)){mockHandler.response(origSettings)}else{if(typeof mockHandler.responseText==="object"){$.globalEval("("+JSON.stringify(mockHandler.responseText)+")")}else{$.globalEval("("+mockHandler.responseText+")")}}setTimeout(function(){jsonpSuccess(requestSettings,callbackContext,mockHandler);jsonpComplete(requestSettings,callbackContext,mockHandler)},parseResponseTimeOpt(mockHandler.responseTime)||0);if($.Deferred){newMock=new $.Deferred;if(typeof mockHandler.responseText=="object"){newMock.resolveWith(callbackContext,[mockHandler.responseText])}else{newMock.resolveWith(callbackContext,[$.parseJSON(mockHandler.responseText)])}}return newMock}function createJsonpCallback(requestSettings,mockHandler,origSettings){var callbackContext=origSettings&&origSettings.context||requestSettings;var jsonp=requestSettings.jsonpCallback||"jsonp"+jsc++;if(requestSettings.data){requestSettings.data=(requestSettings.data+"").replace(CALLBACK_REGEX,"="+jsonp+"$1")}requestSettings.url=requestSettings.url.replace(CALLBACK_REGEX,"="+jsonp+"$1");window[jsonp]=window[jsonp]||function(tmp){data=tmp;jsonpSuccess(requestSettings,callbackContext,mockHandler);jsonpComplete(requestSettings,callbackContext,mockHandler);window[jsonp]=undefined;try{delete window[jsonp]}catch(e){}if(head){head.removeChild(script)}}}function jsonpSuccess(requestSettings,callbackContext,mockHandler){if(requestSettings.success){requestSettings.success.call(callbackContext,mockHandler.responseText||"",status,{})}if(requestSettings.global){(requestSettings.context?$(requestSettings.context):$.event).trigger("ajaxSuccess",[{},requestSettings])}}function jsonpComplete(requestSettings,callbackContext){if(requestSettings.complete){requestSettings.complete.call(callbackContext,{},status)}if(requestSettings.global){(requestSettings.context?$(requestSettings.context):$.event).trigger("ajaxComplete",[{},requestSettings])}if(requestSettings.global&&!--$.active){$.event.trigger("ajaxStop")}}function handleAjax(url,origSettings){var mockRequest,requestSettings,mockHandler,overrideCallback;if(typeof url==="object"){origSettings=url;url=undefined}else{origSettings=origSettings||{};origSettings.url=url}requestSettings=$.extend(true,{},$.ajaxSettings,origSettings);overrideCallback=function(action,mockHandler){var origHandler=origSettings[action.toLowerCase()];return function(){if($.isFunction(origHandler)){origHandler.apply(this,[].slice.call(arguments))}mockHandler["onAfter"+action]()}};for(var k=0;k<mockHandlers.length;k++){if(!mockHandlers[k]){continue}mockHandler=getMockForRequest(mockHandlers[k],requestSettings);if(!mockHandler){continue}mockedAjaxCalls.push(requestSettings);$.mockjaxSettings.log(mockHandler,requestSettings);if(requestSettings.dataType&&requestSettings.dataType.toUpperCase()==="JSONP"){if(mockRequest=processJsonpMock(requestSettings,mockHandler,origSettings)){return mockRequest}}mockHandler.cache=requestSettings.cache;mockHandler.timeout=requestSettings.timeout;mockHandler.global=requestSettings.global;if(mockHandler.isTimeout){if(mockHandler.responseTime>1){origSettings.timeout=mockHandler.responseTime-1}else{mockHandler.responseTime=2;origSettings.timeout=1}mockHandler.isTimeout=false}if($.isFunction(mockHandler.onAfterSuccess)){origSettings.success=overrideCallback("Success",mockHandler)}if($.isFunction(mockHandler.onAfterError)){origSettings.error=overrideCallback("Error",mockHandler)}if($.isFunction(mockHandler.onAfterComplete)){origSettings.complete=overrideCallback("Complete",mockHandler)}copyUrlParameters(mockHandler,origSettings);(function(mockHandler,requestSettings,origSettings,origHandler){mockRequest=_ajax.call($,$.extend(true,{},origSettings,{xhr:function(){return xhr(mockHandler,requestSettings,origSettings,origHandler)}}))})(mockHandler,requestSettings,origSettings,mockHandlers[k]);return mockRequest}unmockedAjaxCalls.push(origSettings);if($.mockjaxSettings.throwUnmocked===true){throw new Error("AJAX not mocked: "+origSettings.url)}else{return _ajax.apply($,[origSettings])}}function copyUrlParameters(mockHandler,origSettings){if(!(mockHandler.url instanceof RegExp)){return}if(!mockHandler.hasOwnProperty("urlParams")){return}var captures=mockHandler.url.exec(origSettings.url);if(captures.length===1){return}captures.shift();var i=0,capturesLength=captures.length,paramsLength=mockHandler.urlParams.length,maxIterations=Math.min(capturesLength,paramsLength),paramValues={};for(i;i<maxIterations;i++){var key=mockHandler.urlParams[i];paramValues[key]=captures[i]}origSettings.urlParams=paramValues}$.extend({ajax:handleAjax});$.mockjaxSettings={log:function(mockHandler,requestSettings){if(mockHandler.logging===false||typeof mockHandler.logging==="undefined"&&$.mockjaxSettings.logging===false){return}if(window.console&&console.log){var message="MOCK "+requestSettings.type.toUpperCase()+": "+requestSettings.url;var request=$.extend({},requestSettings);if(typeof console.log==="function"){console.log(message,request)}else{try{console.log(message+" "+JSON.stringify(request))}catch(e){console.log(message)}}}},logging:true,status:200,statusText:"OK",responseTime:500,isTimeout:false,throwUnmocked:false,contentType:"text/plain",response:"",responseText:"",responseXML:"",proxy:"",proxyType:"GET",lastModified:null,etag:"",headers:{etag:"IJF@H#@923uf8023hFO@I#H#","content-type":"text/plain"}};$.mockjax=function(settings){var i=mockHandlers.length;mockHandlers[i]=settings;return i};$.mockjax.clear=function(i){if(arguments.length==1){mockHandlers[i]=null}else{mockHandlers=[]}mockedAjaxCalls=[];unmockedAjaxCalls=[]};$.mockjaxClear=function(i){window.console&&window.console.warn&&window.console.warn("DEPRECATED: The $.mockjaxClear() method has been deprecated in 1.6.0. Please use $.mockjax.clear() as the older function will be removed soon!");$.mockjax.clear()};$.mockjax.handler=function(i){if(arguments.length==1){return mockHandlers[i]}};$.mockjax.mockedAjaxCalls=function(){return mockedAjaxCalls};$.mockjax.unfiredHandlers=function(){var results=[];for(var i=0,len=mockHandlers.length;i<len;i++){var handler=mockHandlers[i];if(handler!==null&&!handler.fired){results.push(handler)}}return results};$.mockjax.unmockedAjaxCalls=function(){return unmockedAjaxCalls}})(jQuery);
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "ember-data-factory-guy"
4
- s.version = "0.7.6"
4
+ s.version = "0.7.7"
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = ["Daniel Sudol", "Alex Opak"]
7
7
  s.email = ["dansudol@yahoo.com", "opak.alexandr@gmail.com"]
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-data-factory-guy",
3
- "version": "0.7.6",
3
+ "version": "0.7.7",
4
4
  "authors": [
5
5
  "Daniel Sudol <dansudol@yahoo.com>",
6
6
  "Opak Alex <opak.alexandr@gmail.com>"
@@ -82,12 +82,13 @@ FactoryGuyTestMixin = Em.Mixin.create({
82
82
  /**
83
83
  Build url for the mockjax call. Proxy to the adapters buildURL method.
84
84
 
85
- @param {String} type model type name like 'user' for User model
85
+ @param {String} typeName model type name like 'user' for User model
86
86
  @param {String} id
87
87
  @return {String} url
88
88
  */
89
- buildURL: function (type, id) {
90
- return this.getStore().adapterFor('application').buildURL(type, id);
89
+ buildURL: function (typeName, id) {
90
+ var type = this.getStore().modelFor(typeName);
91
+ return this.getStore().adapterFor(type).buildURL(type.typeKey, id);
91
92
  },
92
93
 
93
94
 
@@ -111,7 +112,7 @@ FactoryGuyTestMixin = Em.Mixin.create({
111
112
  responseJson[modelName]=[];
112
113
  var url = this.buildURL(modelName);
113
114
  // mock the ajax call, but return nothing, since the records will be
114
- // retrieved since they are already in the store
115
+ // retrieved from the store where they were just loaded above
115
116
  this.stubEndpointForHttpRequest(url, responseJson, {type: 'GET'})
116
117
  },
117
118
 
@@ -822,12 +822,13 @@ FactoryGuyTestMixin = Em.Mixin.create({
822
822
  /**
823
823
  Build url for the mockjax call. Proxy to the adapters buildURL method.
824
824
 
825
- @param {String} type model type name like 'user' for User model
825
+ @param {String} typeName model type name like 'user' for User model
826
826
  @param {String} id
827
827
  @return {String} url
828
828
  */
829
- buildURL: function (type, id) {
830
- return this.getStore().adapterFor('application').buildURL(type, id);
829
+ buildURL: function (typeName, id) {
830
+ var type = this.getStore().modelFor(typeName);
831
+ return this.getStore().adapterFor(type).buildURL(type.typeKey, id);
831
832
  },
832
833
 
833
834
 
@@ -851,7 +852,7 @@ FactoryGuyTestMixin = Em.Mixin.create({
851
852
  responseJson[modelName]=[];
852
853
  var url = this.buildURL(modelName);
853
854
  // mock the ajax call, but return nothing, since the records will be
854
- // retrieved since they are already in the store
855
+ // retrieved from the store where they were just loaded above
855
856
  this.stubEndpointForHttpRequest(url, responseJson, {type: 'GET'})
856
857
  },
857
858
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ember-data-factory-guy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: 0.7.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Sudol
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-06 00:00:00.000000000 Z
12
+ date: 2014-11-09 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Easily create Fixtures for Ember Data
15
15
  email: