diff --git a/packages/activemodel-adapter/lib/system/active-model-serializer.js b/packages/activemodel-adapter/lib/system/active-model-serializer.js index 1ff98c56f96..b8d933d9e29 100644 --- a/packages/activemodel-adapter/lib/system/active-model-serializer.js +++ b/packages/activemodel-adapter/lib/system/active-model-serializer.js @@ -290,9 +290,10 @@ var ActiveModelSerializer = RESTSerializer.extend({ } }, typeForRoot: function(key) { - return camelize(singularize(key)).replace(/(^|\:)([A-Z])/g, function(match, separator, chr) { + var normalized = camelize(singularize(key)).replace(/(^|\:)([A-Z])/g, function(match, separator, chr) { return match.toLowerCase(); }).replace('::', '/'); + return this._super(normalized); } }); diff --git a/packages/activemodel-adapter/tests/integration/active-model-serializer-namespaced-modelname-test.js b/packages/activemodel-adapter/tests/integration/active-model-serializer-namespaced-modelname-test.js index e90491f84c5..b79b1bca675 100644 --- a/packages/activemodel-adapter/tests/integration/active-model-serializer-namespaced-modelname-test.js +++ b/packages/activemodel-adapter/tests/integration/active-model-serializer-namespaced-modelname-test.js @@ -90,7 +90,7 @@ test("extractPolymorphic hasMany", function() { "id": 1, "name": "Dr Horrible", "evilMinions": [{ - type: "evilMinions/yellowMinion", + type: "evil-minions/yellow-minion", id: 12 }] }); @@ -111,7 +111,7 @@ test("extractPolymorphic", function() { "id": 1, "name": "DeathRay", "evilMinion": { - type: "evilMinions/yellowMinion", + type: "evil-minions/yellow-minion", id: 12 } }); diff --git a/packages/activemodel-adapter/tests/integration/active-model-serializer-test.js b/packages/activemodel-adapter/tests/integration/active-model-serializer-test.js index 53b48bb0718..da326d493f1 100644 --- a/packages/activemodel-adapter/tests/integration/active-model-serializer-test.js +++ b/packages/activemodel-adapter/tests/integration/active-model-serializer-test.js @@ -246,7 +246,7 @@ test("extractPolymorphic hasMany", function() { "id": 1, "name": "Dr Horrible", "evilMinions": [{ - type: "yellowMinion", + type: "yellow-minion", id: 12 }] }); @@ -271,7 +271,7 @@ test("extractPolymorphic", function() { "id": 1, "name": "DeathRay", "evilMinion": { - type: "yellowMinion", + type: "yellow-minion", id: 12 } }); diff --git a/packages/ember-data/lib/serializers/rest-serializer.js b/packages/ember-data/lib/serializers/rest-serializer.js index 4921c8e654f..8c4e6f1c826 100644 --- a/packages/ember-data/lib/serializers/rest-serializer.js +++ b/packages/ember-data/lib/serializers/rest-serializer.js @@ -3,13 +3,12 @@ */ import JSONSerializer from "ember-data/serializers/json-serializer"; +import normalizeTypeKey from "ember-data/system/normalize-type-key"; var forEach = Ember.ArrayPolyfills.forEach; var map = Ember.ArrayPolyfills.map; var camelize = Ember.String.camelize; -import { singularize } from "ember-inflector/lib/system/string"; - function coerceId(id) { return id == null ? null : id + ''; } @@ -509,8 +508,8 @@ var RESTSerializer = JSONSerializer.extend({ This method is used to convert each JSON root key in the payload into a typeKey that it can use to look up the appropriate model for that part of the payload. By default the typeKey for a model is its - name in camelCase, so if your JSON root key is 'fast-car' you would - use typeForRoot to convert it to 'fastCar' so that Ember Data finds + name in camelCase, so if your JSON root key is 'fast_car' you would + use typeForRoot to convert it to 'fast-car' so that Ember Data finds the `FastCar` model. If you diverge from this norm you should also consider changes to @@ -549,7 +548,7 @@ var RESTSerializer = JSONSerializer.extend({ @return {String} the model's typeKey */ typeForRoot: function(key) { - return camelize(singularize(key)); + return normalizeTypeKey(key); }, // SERIALIZE @@ -724,7 +723,8 @@ var RESTSerializer = JSONSerializer.extend({ @param {Object} options */ serializeIntoHash: function(hash, typeClass, snapshot, options) { - hash[typeClass.typeKey] = this.serialize(snapshot, options); + var rootTypeKey = camelize(typeClass.typeKey); + hash[rootTypeKey] = this.serialize(snapshot, options); }, /** diff --git a/packages/ember-data/lib/system/normalize-type-key.js b/packages/ember-data/lib/system/normalize-type-key.js new file mode 100644 index 00000000000..fa4d519bc91 --- /dev/null +++ b/packages/ember-data/lib/system/normalize-type-key.js @@ -0,0 +1,16 @@ +import {singularize} from 'ember-inflector/lib/system/string'; + +var dasherize = Ember.String.dasherize; +var camelize = Ember.String.camelize; + +/** + All typeKeys are camelCase internally. Changing this function may + require changes to other normalization hooks (such as typeForRoot). + @method normalizeTypeKey + @private + @param {String} type + @return {String} if the adapter can generate one, an ID +*/ +export default function normalizeTypeKey(typeKey) { + return singularize(dasherize(camelize(typeKey))); +} diff --git a/packages/ember-data/lib/system/relationship-meta.js b/packages/ember-data/lib/system/relationship-meta.js index 5ac36647069..3c2a613007a 100644 --- a/packages/ember-data/lib/system/relationship-meta.js +++ b/packages/ember-data/lib/system/relationship-meta.js @@ -1,4 +1,4 @@ -import { singularize } from "ember-inflector/lib/system"; +import normalizeTypeKey from "ember-data/system/normalize-type-key"; export function typeForRelationshipMeta(store, meta) { var typeKey, typeClass; @@ -6,7 +6,7 @@ export function typeForRelationshipMeta(store, meta) { typeKey = meta.type || meta.key; if (typeof typeKey === 'string') { if (meta.kind === 'hasMany') { - typeKey = singularize(typeKey); + typeKey = normalizeTypeKey(typeKey); } typeClass = store.modelFor(typeKey); } else { diff --git a/packages/ember-data/lib/system/relationships/belongs-to.js b/packages/ember-data/lib/system/relationships/belongs-to.js index 3a7c681f790..df4d4870276 100644 --- a/packages/ember-data/lib/system/relationships/belongs-to.js +++ b/packages/ember-data/lib/system/relationships/belongs-to.js @@ -1,6 +1,7 @@ import Model from 'ember-data/system/model'; import computedPolyfill from "ember-data/utils/computed-polyfill"; +import normalizeTypeKey from "ember-data/system/normalize-type-key"; /** `DS.belongsTo` is used to define One-To-One and One-To-Many @@ -56,24 +57,32 @@ import computedPolyfill from "ember-data/utils/computed-polyfill"; @namespace @method belongsTo @for DS - @param {String} type (optional) type of the relationship + @param {String} modelTypeKey (optional) type of the relationship @param {Object} options (optional) a hash of options @return {Ember.computed} relationship */ -function belongsTo(type, options) { - if (typeof type === 'object') { - options = type; - type = undefined; +function belongsTo(modelTypeKey, options) { + var opts, typeKey; + if (typeof modelTypeKey === 'object') { + opts = modelTypeKey; + typeKey = undefined; + } else { + opts = options; + typeKey = modelTypeKey; } - Ember.assert("The first argument to DS.belongsTo must be a string representing a model type key, not an instance of " + Ember.inspect(type) + ". E.g., to define a relation to the Person model, use DS.belongsTo('person')", typeof type === 'string' || typeof type === 'undefined'); + if (typeof typeKey === 'string') { + typeKey = normalizeTypeKey(typeKey); + } + + Ember.assert("The first argument to DS.belongsTo must be a string representing a model type key, not an instance of " + Ember.inspect(typeKey) + ". E.g., to define a relation to the Person model, use DS.belongsTo('person')", typeof typeKey === 'string' || typeof typeKey === 'undefined'); - options = options || {}; + opts = opts || {}; var meta = { - type: type, + type: typeKey, isRelationship: true, - options: options, + options: opts, kind: 'belongsTo', key: null }; diff --git a/packages/ember-data/lib/system/relationships/has-many.js b/packages/ember-data/lib/system/relationships/has-many.js index 70decb4b03c..09c0715e59b 100644 --- a/packages/ember-data/lib/system/relationships/has-many.js +++ b/packages/ember-data/lib/system/relationships/has-many.js @@ -3,6 +3,7 @@ */ import Model from "ember-data/system/model"; +import normalizeTypeKey from "ember-data/system/normalize-type-key"; /** `DS.hasMany` is used to define One-To-Many and Many-To-Many @@ -103,6 +104,10 @@ function hasMany(type, options) { options = options || {}; + if (typeof type === 'string') { + type = normalizeTypeKey(type); + } + // Metadata about relationships is stored on the meta of // the relationship. This is used for introspection and // serialization. Note that `key` is populated lazily diff --git a/packages/ember-data/lib/system/store.js b/packages/ember-data/lib/system/store.js index f89895d8fec..7c24658b1c2 100644 --- a/packages/ember-data/lib/system/store.js +++ b/packages/ember-data/lib/system/store.js @@ -5,11 +5,11 @@ @module ember-data */ +import normalizeTypeKey from "ember-data/system/normalize-type-key"; import { InvalidError, Adapter } from "ember-data/system/adapter"; -import { singularize } from "ember-inflector/lib/system/string"; import { Map } from "ember-data/system/map"; @@ -96,8 +96,6 @@ var Promise = Ember.RSVP.Promise; var copy = Ember.copy; var Store; -var camelize = Ember.String.camelize; - var Service = Ember.Service; if (!Service) { Service = Ember.Object; @@ -1429,14 +1427,15 @@ Store = Service.extend({ in this case */ - _modelForMixin: function(key) { + _modelForMixin: function(typeKey) { + var normalizedTypeKey = this._normalizeTypeKey(typeKey); var registry = this.container._registry ? this.container._registry : this.container; - var mixin = registry.resolve('mixin:' + key); + var mixin = registry.resolve('mixin:' + normalizedTypeKey); if (mixin) { //Cache the class as a model - registry.register('model:' + key, DS.Model.extend(mixin)); + registry.register('model:' + normalizedTypeKey, DS.Model.extend(mixin)); } - var factory = this.modelFactoryFor(key); + var factory = this.modelFactoryFor(normalizedTypeKey); if (factory) { factory.__isMixin = true; factory.__mixin = mixin; @@ -1480,7 +1479,8 @@ Store = Service.extend({ }, modelFactoryFor: function(key) { - return this.container.lookupFactory('model:' + key); + var normalizedKey = this._normalizeTypeKey(key); + return this.container.lookupFactory('model:' + normalizedKey); }, /** @@ -1545,16 +1545,16 @@ Store = Service.extend({ records, as well as to update existing records. @method push - @param {String or subclass of DS.Model} type + @param {String or subclass of DS.Model} typeKey @param {Object} data @return {DS.Model} the record that was created or updated. */ - push: function(typeName, data) { - Ember.assert("Expected an object as `data` in a call to `push` for " + typeName + " , but was " + data, Ember.typeOf(data) === 'object'); - Ember.assert("You must include an `id` for " + typeName + " in an object passed to `push`", data.id != null && data.id !== ''); + push: function(typeKey, data) { + Ember.assert("Expected an object as `data` in a call to `push` for " + typeKey + " , but was " + data, Ember.typeOf(data) === 'object'); + Ember.assert("You must include an `id` for " + typeKey + " in an object passed to `push`", data.id != null && data.id !== ''); - var type = this.modelFor(typeName); + var type = this.modelFor(typeKey); var filter = Ember.EnumerableUtils.filter; // If Ember.ENV.DS_WARN_ON_UNKNOWN_KEYS is set to true and the payload @@ -1902,12 +1902,13 @@ Store = Service.extend({ @method retrieveManagedInstance @private - @param {String} type the object type + @param {String} type the object typeKey @param {String} type the object name @return {Ember.Object} */ - retrieveManagedInstance: function(type, name) { - var key = type+":"+name; + retrieveManagedInstance: function(typeKey, name) { + var normalizedTypeKey = this._normalizeTypeKey(typeKey); + var key = normalizedTypeKey + ":" +name; if (!this._containerCache[key]) { var instance = this.container.lookup(key); @@ -1952,7 +1953,7 @@ Store = Service.extend({ @return {String} if the adapter can generate one, an ID */ _normalizeTypeKey: function(key) { - return camelize(singularize(key)); + return normalizeTypeKey(key); } }); diff --git a/packages/ember-data/tests/integration/adapter/build-url-mixin-test.js b/packages/ember-data/tests/integration/adapter/build-url-mixin-test.js index 53053784d2f..7fcc08726b2 100644 --- a/packages/ember-data/tests/integration/adapter/build-url-mixin-test.js +++ b/packages/ember-data/tests/integration/adapter/build-url-mixin-test.js @@ -147,7 +147,7 @@ test('buildURL - with camelized names', function() { adapter.setProperties({ pathForType: function(type) { var decamelized = Ember.String.decamelize(type); - return Ember.String.pluralize(decamelized); + return Ember.String.underscore(Ember.String.pluralize(decamelized)); } }); diff --git a/packages/ember-data/tests/integration/multiple_stores_test.js b/packages/ember-data/tests/integration/multiple_stores_test.js index c1ea91daf1c..09210a6db6b 100644 --- a/packages/ember-data/tests/integration/multiple_stores_test.js +++ b/packages/ember-data/tests/integration/multiple_stores_test.js @@ -42,8 +42,8 @@ module("integration/multiple_stores - Multiple Stores Tests", { }); test("should be able to push into multiple stores", function() { - env.registry.register('adapter:homePlanet', DS.ActiveModelAdapter); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer); + env.registry.register('adapter:home-planet', DS.ActiveModelAdapter); + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer); var home_planet_main = { id: '1', name: 'Earth' }; var home_planet_a = { id: '1', name: 'Mars' }; @@ -68,10 +68,10 @@ test("should be able to push into multiple stores", function() { }); test("embedded records should be created in multiple stores", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('adapter:homePlanet', DS.ActiveModelAdapter); + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('adapter:home-planet', DS.ActiveModelAdapter); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' } } diff --git a/packages/ember-data/tests/integration/relationships/polymorphic-mixins-has-many-test.js b/packages/ember-data/tests/integration/relationships/polymorphic-mixins-has-many-test.js index 4dc31e4a954..3d84bb2f642 100644 --- a/packages/ember-data/tests/integration/relationships/polymorphic-mixins-has-many-test.js +++ b/packages/ember-data/tests/integration/relationships/polymorphic-mixins-has-many-test.js @@ -100,7 +100,7 @@ test("Pushing a an object that does not implement the mixin to the mixin accepti user.get('messages').then(function(fetchedMessages) { expectAssertion(function() { fetchedMessages.pushObject(notMessage); - }, /You cannot add 'notMessage' records to the user\.messages relationship \(only 'message' allowed\)/); + }, /You cannot add 'not-message' records to the user\.messages relationship \(only 'message' allowed\)/); }); }); }); @@ -147,7 +147,7 @@ test("Pushing a an object that does not implement the mixin to the mixin accepti user.get('messages').then(function(fetchedMessages) { expectAssertion(function() { fetchedMessages.pushObject(notMessage); - }, /You cannot add 'notMessage' records to the user\.messages relationship \(only 'message' allowed\)/); + }, /You cannot add 'not-message' records to the user\.messages relationship \(only 'message' allowed\)/); }); }); } finally { diff --git a/packages/ember-data/tests/integration/serializers/embedded-records-mixin-test.js b/packages/ember-data/tests/integration/serializers/embedded-records-mixin-test.js index 70d90ab191c..8606df6b8a8 100644 --- a/packages/ember-data/tests/integration/serializers/embedded-records-mixin-test.js +++ b/packages/ember-data/tests/integration/serializers/embedded-records-mixin-test.js @@ -74,14 +74,14 @@ module("integration/embedded_records_mixin - EmbeddedRecordsMixin", { }); test("extractSingle with embedded objects", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:homePlanet"); + var serializer = env.container.lookup("serializer:home-planet"); var json_hash = { home_planet: { id: "1", @@ -112,19 +112,19 @@ test("extractSingle with embedded objects", function() { }); test("extractSingle with embedded objects inside embedded objects", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' } } })); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { evilMinions: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:homePlanet"); + var serializer = env.container.lookup("serializer:home-planet"); var json_hash = { home_planet: { id: "1", @@ -152,14 +152,14 @@ test("extractSingle with embedded objects inside embedded objects", function() { villains: ["1"] }); run(function() { - env.store.find("superVillain", 1).then(function(villain) { + env.store.find("superVillain", 1).then(async(function(villain) { equal(villain.get('firstName'), "Tom"); equal(villain.get('evilMinions.length'), 1, "Should load the embedded child"); equal(villain.get('evilMinions.firstObject.name'), "Alex", "Should load the embedded child"); - }); - env.store.find("evilMinion", 1).then(function(minion) { + })); + env.store.find("evilMinion", 1).then(async(function(minion) { equal(minion.get('name'), "Alex"); - }); + })); }); }); @@ -258,15 +258,15 @@ test("extractSingle with embedded objects of same type, but from separate attrib reformedVillains: DS.hasMany('superVillain', { inverse: null }) }); - env.registry.register('adapter:home_planet', DS.ActiveModelAdapter); - env.registry.register('serializer:home_planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:home-planet', DS.ActiveModelAdapter); + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' }, reformedVillains: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:home_planet"); + var serializer = env.container.lookup("serializer:home-planet"); var json_hash = { home_planet: { id: "1", @@ -306,14 +306,14 @@ test("extractSingle with embedded objects of same type, but from separate attrib }); test("extractArray with embedded objects", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:homePlanet"); + var serializer = env.container.lookup("serializer:home-planet"); var json_hash = { home_planets: [{ @@ -347,17 +347,17 @@ test("extractArray with embedded objects", function() { test("extractArray with embedded objects with custom primary key", function() { expect(2); - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend({ + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend({ primaryKey: 'villain_id' })); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:homePlanet"); + var serializer = env.container.lookup("serializer:home-planet"); var json_hash = { home_planets: [{ @@ -384,15 +384,15 @@ test("extractArray with embedded objects with custom primary key", function() { run(function() { return env.store.find("superVillain", 1).then(function(minion) { - env.registry.unregister('serializer:superVillain'); + env.registry.unregister('serializer:super-villain'); equal(minion.get('firstName'), "Alex"); }); }); }); test("extractArray with embedded objects with identical relationship and attribute key ", function() { expect(2); - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' } }, @@ -402,7 +402,7 @@ test("extractArray with embedded objects with identical relationship and attribu } })); - var serializer = env.container.lookup("serializer:homePlanet"); + var serializer = env.container.lookup("serializer:home-planet"); var json_hash = { home_planets: [{ @@ -482,15 +482,15 @@ test("extractArray with embedded objects of same type, but from separate attribu reformedVillains: DS.hasMany('superVillain') }); - env.registry.register('adapter:homePlanet', DS.ActiveModelAdapter); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:home-planet', DS.ActiveModelAdapter); + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' }, reformedVillains: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:homePlanet"); + var serializer = env.container.lookup("serializer:home-planet"); var json_hash = { home_planets: [{ id: "1", @@ -559,14 +559,14 @@ test("serialize supports serialize:false on non-relationship properties", functi tom = env.store.createRecord(SuperVillain, { firstName: "Tom", lastName: "Dale", id: '1' }); }); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { firstName: { serialize: false } } })); var serializer, json; run(function() { - serializer = env.container.lookup("serializer:superVillain"); + serializer = env.container.lookup("serializer:super-villain"); json = serializer.serialize(tom._createSnapshot()); }); @@ -584,7 +584,7 @@ test("serialize with embedded objects (hasMany relationship)", function() { tom = env.store.createRecord(SuperVillain, { firstName: "Tom", lastName: "Dale", homePlanet: league, id: '1' }); }); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' } } @@ -592,7 +592,7 @@ test("serialize with embedded objects (hasMany relationship)", function() { var serializer, json; run(function() { - serializer = env.container.lookup("serializer:homePlanet"); + serializer = env.container.lookup("serializer:home-planet"); json = serializer.serialize(league._createSnapshot()); }); @@ -615,14 +615,14 @@ test("serialize with embedded objects (hasMany relationship) supports serialize: env.store.createRecord(SuperVillain, { firstName: "Tom", lastName: "Dale", homePlanet: league, id: '1' }); }); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { serialize: false } } })); var serializer, json; run(function() { - serializer = env.container.lookup("serializer:homePlanet"); + serializer = env.container.lookup("serializer:home-planet"); json = serializer.serialize(league._createSnapshot()); }); @@ -638,14 +638,14 @@ test("serialize with (new) embedded objects (hasMany relationship)", function() env.store.createRecord(SuperVillain, { firstName: "Tom", lastName: "Dale", homePlanet: league }); }); - env.registry.register('serializer:homePlanet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:home-planet', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { villains: { embedded: 'always' } } })); var serializer, json; run(function() { - serializer = env.container.lookup("serializer:homePlanet"); + serializer = env.container.lookup("serializer:home-planet"); json = serializer.serialize(league._createSnapshot()); }); @@ -669,7 +669,7 @@ test("serialize with embedded objects (hasMany relationships, including related superVillain.get('secretWeapons').pushObject(secretWeapon); }); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { evilMinions: { serialize: 'records', deserialize: 'records' }, secretWeapons: { serialize: 'ids' } @@ -677,7 +677,7 @@ test("serialize with embedded objects (hasMany relationships, including related })); var serializer, json; run(function() { - serializer = env.container.lookup("serializer:superVillain"); + serializer = env.container.lookup("serializer:super-villain"); json = serializer.serialize(superVillain._createSnapshot()); }); @@ -697,14 +697,14 @@ test("serialize with embedded objects (hasMany relationships, including related test("extractSingle with embedded object (belongsTo relationship)", function() { expect(4); - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretLab: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); var json_hash = { super_villain: { @@ -747,15 +747,15 @@ test("extractSingle with embedded object (belongsTo relationship)", function() { }); test("serialize with embedded object (belongsTo relationship)", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretLab: { embedded: 'always' } } })); var serializer, json, tom; run(function() { - serializer = env.container.lookup("serializer:superVillain"); + serializer = env.container.lookup("serializer:super-villain"); // records with an id, persisted @@ -785,18 +785,18 @@ test("serialize with embedded object (belongsTo relationship)", function() { }); test("serialize with embedded object (belongsTo relationship) works with different primaryKeys", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { primaryKey: '_id', attrs: { secretLab: { embedded: 'always' } } })); - env.registry.register('serializer:secretLab', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:secret-lab', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { primaryKey: 'crazy_id' })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); // records with an id, persisted var tom, json; @@ -805,8 +805,8 @@ test("serialize with embedded object (belongsTo relationship) works with differe tom = env.store.createRecord( SuperVillain, { firstName: "Tom", lastName: "Dale", id: "1", - secretLab: env.store.createRecord(SecretLab, { minionCapacity: 5000, vicinity: "California, USA", id: "101" }), - homePlanet: env.store.createRecord(HomePlanet, { name: "Villain League", id: "123" }) + secretLab: env.store.createRecord('secret-lab', { minionCapacity: 5000, vicinity: "California, USA", id: "101" }), + homePlanet: env.store.createRecord('home-planet', { name: "Villain League", id: "123" }) } ); }); @@ -828,14 +828,14 @@ test("serialize with embedded object (belongsTo relationship) works with differe }); test("serialize with embedded object (belongsTo relationship, new no id)", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretLab: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); // records without ids, new var tom, json; @@ -866,13 +866,13 @@ test("serialize with embedded object (belongsTo relationship, new no id)", funct }); test("serialize with embedded object (belongsTo relationship) supports serialize:ids", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretLab: { serialize: 'ids' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); // records with an id, persisted var tom, json; @@ -900,14 +900,14 @@ test("serialize with embedded object (belongsTo relationship) supports serialize }); test("serialize with embedded object (belongsTo relationship) supports serialize:id", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretLab: { serialize: 'id' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); // records with an id, persisted var tom, json; @@ -935,14 +935,14 @@ test("serialize with embedded object (belongsTo relationship) supports serialize }); test("serialize with embedded object (belongsTo relationship) supports serialize:id in conjunction with deserialize:records", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretLab: { serialize: 'id', deserialize: 'records' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); // records with an id, persisted var tom, json; @@ -951,8 +951,8 @@ test("serialize with embedded object (belongsTo relationship) supports serialize tom = env.store.createRecord( SuperVillain, { firstName: "Tom", lastName: "Dale", id: "1", - secretLab: env.store.createRecord(SecretLab, { minionCapacity: 5000, vicinity: "California, USA", id: "101" }), - homePlanet: env.store.createRecord(HomePlanet, { name: "Villain League", id: "123" }) + secretLab: env.store.createRecord('secretLab', { minionCapacity: 5000, vicinity: "California, USA", id: "101" }), + homePlanet: env.store.createRecord('homePlanet', { name: "Villain League", id: "123" }) } ); }); @@ -970,13 +970,13 @@ test("serialize with embedded object (belongsTo relationship) supports serialize }); test("serialize with embedded object (belongsTo relationship) supports serialize:false", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretLab: { serialize: false } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); // records with an id, persisted var tom, json; @@ -1002,9 +1002,9 @@ test("serialize with embedded object (belongsTo relationship) supports serialize }); test("serialize with embedded object (belongsTo relationship) serializes the id by default if no option specified", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin)); - var serializer = env.container.lookup("serializer:superVillain"); + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin)); + var serializer = env.container.lookup("serializer:super-villain"); // records with an id, persisted @@ -1033,13 +1033,13 @@ test("serialize with embedded object (belongsTo relationship) serializes the id }); test("when related record is not present, serialize embedded record (with a belongsTo relationship) as null", function() { - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretLab: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); var tom, json; run(function() { @@ -1064,19 +1064,19 @@ test("when related record is not present, serialize embedded record (with a belo }); test("extractSingle with multiply-nested belongsTo", function() { - env.registry.register('adapter:evilMinion', DS.ActiveModelAdapter); - env.registry.register('serializer:evilMinion', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:evil-minion', DS.ActiveModelAdapter); + env.registry.register('serializer:evil-minion', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { superVillain: { embedded: 'always' } } })); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { homePlanet: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:evilMinion"); + var serializer = env.container.lookup("serializer:evil-minion"); var json_hash = { evil_minion: { id: "1", @@ -1115,13 +1115,13 @@ test("extractSingle with polymorphic hasMany", function() { secretWeapons: DS.hasMany("secretWeapon", { polymorphic: true }) }); - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretWeapons: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); var json_hash = { super_villain: { @@ -1154,8 +1154,8 @@ test("extractSingle with polymorphic hasMany", function() { firstName: "Tom", lastName: "Dale", secretWeapons: [ - { id: "1", type: "lightSaber" }, - { id: "1", type: "secretWeapon" } + { id: "1", type: "light-saber" }, + { id: "1", type: "secret-weapon" } ] }, "Primary hash was correct"); @@ -1172,13 +1172,13 @@ test("extractSingle with polymorphic belongsTo", function() { secretLab: DS.belongsTo("secretLab", { polymorphic: true }) }); - env.registry.register('adapter:superVillain', DS.ActiveModelAdapter); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:super-villain', DS.ActiveModelAdapter); + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { secretLab: { embedded: 'always' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); var json_hash = { super_villain: { @@ -1187,7 +1187,7 @@ test("extractSingle with polymorphic belongsTo", function() { last_name: "Dale", secret_lab: { id: "1", - type: "BatCave", + type: "bat-cave", infiltrated: true } } @@ -1204,7 +1204,7 @@ test("extractSingle with polymorphic belongsTo", function() { firstName: "Tom", lastName: "Dale", secretLab: "1", - secretLabType: "batCave" + secretLabType: "bat-cave" }, "Primary has was correct"); equal(env.store.recordForId("batCave", "1").get("infiltrated"), true, "Embedded polymorphic BatCave was found"); @@ -1224,14 +1224,14 @@ test("Mixin can be used with RESTSerializer which does not define keyForAttribut superVillain.get('evilMinions').pushObject(evilMinion); }); - env.registry.register('serializer:evilMinion', DS.RESTSerializer); - env.registry.register('serializer:secretWeapon', DS.RESTSerializer); - env.registry.register('serializer:superVillain', DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:evil-minion', DS.RESTSerializer); + env.registry.register('serializer:secret-weapon', DS.RESTSerializer); + env.registry.register('serializer:super-villain', DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { evilMinions: { serialize: 'records', deserialize: 'records' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); var json; run(function() { @@ -1254,17 +1254,17 @@ test("Mixin can be used with RESTSerializer which does not define keyForAttribut }); test("normalize with custom belongsTo primary key", function() { - env.registry.register('adapter:evilMinion', DS.ActiveModelAdapter); - env.registry.register('serializer:evilMinion', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('adapter:evil-minion', DS.ActiveModelAdapter); + env.registry.register('serializer:evil-minion', DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { attrs: { superVillain: { embedded: 'always' } } })); - env.registry.register('serializer:superVillain', DS.ActiveModelSerializer.extend({ + env.registry.register('serializer:super-villain', DS.ActiveModelSerializer.extend({ primaryKey: 'custom' })); - var serializer = env.container.lookup("serializer:evilMinion"); + var serializer = env.container.lookup("serializer:evil-minion"); var json_hash = { evil_minion: { id: "1", @@ -1324,16 +1324,16 @@ test("serializing relationships with an embedded and without calls super when no } } }); - env.registry.register('serializer:evilMinion', Serializer); - env.registry.register('serializer:secretWeapon', Serializer); - env.registry.register('serializer:superVillain', Serializer.extend(DS.EmbeddedRecordsMixin, { + env.registry.register('serializer:evil-minion', Serializer); + env.registry.register('serializer:secret-weapon', Serializer); + env.registry.register('serializer:super-villain', Serializer.extend(DS.EmbeddedRecordsMixin, { attrs: { evilMinions: { serialize: 'records', deserialize: 'records' } // some relationships are not listed here, so super should be called on those // e.g. secretWeapons: { serialize: 'ids' } } })); - var serializer = env.container.lookup("serializer:superVillain"); + var serializer = env.container.lookup("serializer:super-villain"); var json; run(function() { diff --git a/packages/ember-data/tests/integration/serializers/rest-serializer-test.js b/packages/ember-data/tests/integration/serializers/rest-serializer-test.js index ed3b5ec8013..173407ab869 100644 --- a/packages/ember-data/tests/integration/serializers/rest-serializer-test.js +++ b/packages/ember-data/tests/integration/serializers/rest-serializer-test.js @@ -52,7 +52,7 @@ module("integration/serializer/rest - RESTSerializer", { test("typeForRoot returns always same typeKey even for uncountable multi words keys", function() { expect(2); Ember.Inflector.inflector.uncountable('words'); - var expectedTypeKey = 'multiWords'; + var expectedTypeKey = 'multi-words'; equal(env.restSerializer.typeForRoot('multi_words'), expectedTypeKey); equal(env.restSerializer.typeForRoot('multiWords'), expectedTypeKey); }); @@ -170,7 +170,7 @@ test("pushPayload - single record payload - warning with custom typeForRoot", fu } }); - env.registry.register("serializer:homePlanet", HomePlanetRestSerializer); + env.registry.register("serializer:home-planet", HomePlanetRestSerializer); var jsonHash = { home_planet: { id: "1", name: "Umber", superVillains: [1] }, @@ -226,7 +226,7 @@ test("pushPayload - multiple record payload (extractArray) - warning with custom } }); - env.registry.register("serializer:homePlanet", HomePlanetRestSerializer); + env.registry.register("serializer:home-planet", HomePlanetRestSerializer); var jsonHash = { home_planets: [{ id: "1", name: "Umber", superVillains: [1] }], @@ -362,7 +362,7 @@ test("extractArray can load secondary records of the same type without affecting test("extractSingle loads secondary records with correct serializer", function() { var superVillainNormalizeCount = 0; - env.registry.register('serializer:superVillain', DS.RESTSerializer.extend({ + env.registry.register('serializer:super-villain', DS.RESTSerializer.extend({ normalize: function() { superVillainNormalizeCount++; return this._super.apply(this, arguments); @@ -399,7 +399,7 @@ test("extractSingle returns null if payload contains null", function() { test("extractArray loads secondary records with correct serializer", function() { var superVillainNormalizeCount = 0; - env.registry.register('serializer:superVillain', DS.RESTSerializer.extend({ + env.registry.register('serializer:super-villain', DS.RESTSerializer.extend({ normalize: function() { superVillainNormalizeCount++; return this._super.apply(this, arguments); diff --git a/packages/ember-data/tests/unit/store/create-record-test.js b/packages/ember-data/tests/unit/store/create-record-test.js index 0141f561e73..a4d7ca12040 100644 --- a/packages/ember-data/tests/unit/store/create-record-test.js +++ b/packages/ember-data/tests/unit/store/create-record-test.js @@ -24,13 +24,10 @@ test("doesn't modify passed in properties hash", function() { module("unit/store/createRecord - Store with models by dash", { setup: function() { var env = setupStore({ - 'some-thing': DS.Model.extend({ foo: DS.attr('string') }) + someThing: DS.Model.extend({ foo: DS.attr('string') }) }); store = env.store; container = env.container; - env.replaceContainerNormalize(function(key) { - return Ember.String.dasherize(key); - }); } }); test("creating a record by camel-case string finds the model", function() { @@ -42,7 +39,7 @@ test("creating a record by camel-case string finds the model", function() { }); equal(record.get('foo'), attributes.foo, "The record is created"); - equal(store.modelFor('someThing').typeKey, 'someThing'); + equal(store.modelFor('someThing').typeKey, 'some-thing'); }); test("creating a record by dasherize string finds the model", function() { @@ -54,7 +51,7 @@ test("creating a record by dasherize string finds the model", function() { }); equal(record.get('foo'), attributes.foo, "The record is created"); - equal(store.modelFor('some-thing').typeKey, 'someThing'); + equal(store.modelFor('some-thing').typeKey, 'some-thing'); }); module("unit/store/createRecord - Store with models by camelCase", { @@ -64,7 +61,6 @@ module("unit/store/createRecord - Store with models by camelCase", { }); store = env.store; container = env.container; - env.replaceContainerNormalize(Ember.String.camelize); } }); @@ -77,7 +73,7 @@ test("creating a record by camel-case string finds the model", function() { }); equal(record.get('foo'), attributes.foo, "The record is created"); - equal(store.modelFor('someThing').typeKey, 'someThing'); + equal(store.modelFor('someThing').typeKey, 'some-thing'); }); test("creating a record by dasherize string finds the model", function() { @@ -89,5 +85,5 @@ test("creating a record by dasherize string finds the model", function() { }); equal(record.get('foo'), attributes.foo, "The record is created"); - equal(store.modelFor('some-thing').typeKey, 'someThing'); + equal(store.modelFor('some-thing').typeKey, 'some-thing'); }); diff --git a/packages/ember-data/tests/unit/store/model-for-test.js b/packages/ember-data/tests/unit/store/model-for-test.js index a74e8406f1b..8e458d76e3b 100644 --- a/packages/ember-data/tests/unit/store/model-for-test.js +++ b/packages/ember-data/tests/unit/store/model-for-test.js @@ -26,24 +26,25 @@ module("unit/store/model_for - DS.Store#modelFor", { }); test("when fetching factory from string, sets a normalized key as typeKey", function() { - env.replaceContainerNormalize(camelize); + env.replaceContainerNormalize(function(key) { + return dasherize(camelize(key)); + }); - equal(registry.normalize('some.post'), 'somePost', 'precond - container camelizes'); - equal(store.modelFor("blog.post").typeKey, "blogPost", "typeKey is normalized to camelCase"); + equal(registry.normalize('some.post'), 'some-post', 'precond - container camelizes'); + equal(store.modelFor("blog.post").typeKey, "blog-post", "typeKey is normalized to camelCase"); }); test("when fetching factory from string and dashing normalizer, sets a normalized key as typeKey", function() { - env.replaceContainerNormalize(function(fullName) { - return dasherize(camelize(fullName)); + env.replaceContainerNormalize(function(key) { + return dasherize(camelize(key)); }); - equal(registry.normalize('some.post'), 'some-post', 'precond - container dasherizes'); - equal(store.modelFor("blog.post").typeKey, "blogPost", "typeKey is normalized to camelCase"); + equal(store.modelFor("blog.post").typeKey, "blog-post", "typeKey is normalized to camelCase"); }); test("when returning passed factory, sets a normalized key as typeKey", function() { var factory = { typeKey: 'some-thing' }; - equal(store.modelFor(factory).typeKey, "someThing", "typeKey is normalized to camelCase"); + equal(store.modelFor(factory).typeKey, "some-thing", "typeKey is normalized to camelCase"); }); test("when returning passed factory without typeKey, allows it", function() { diff --git a/tests/ember-configuration.js b/tests/ember-configuration.js index bda654b8593..9c9faf4eb29 100644 --- a/tests/ember-configuration.js +++ b/tests/ember-configuration.js @@ -71,7 +71,7 @@ delete options.adapter; for (var prop in options) { - registry.register('model:' + prop, options[prop]); + registry.register('model:' + Ember.String.dasherize(prop), options[prop]); } registry.register('store:main', DS.Store.extend({