diff --git a/spec/store/core/add-spec.js b/spec/store/core/add-spec.js index a67d863..5591f54 100644 --- a/spec/store/core/add-spec.js +++ b/spec/store/core/add-spec.js @@ -398,6 +398,28 @@ describe("add", function() { expect(store.find("products", "45").category).toBe(null); }); + it("must use the type's name as a fallback for relationship names when adding resources", function () { + store.define("categories", { + products: Store.hasMany() + }); + store.define("products", { + categories: Store.hasMany() + }); + store.add({ + "type": "categories", + "id": "37", + "relationships": { + "products": { + "data": [ + { "type": "products", "id": "23" } + ] + } + } + }); + expect(store.find("categories", "37").products).toHaveIds([ "23" ]); + expect(store.find("products", "23").categories).toHaveIds([ "37" ]); + }); + }); }); diff --git a/src/store.js b/src/store.js index 6ac0e4a..6ca1000 100644 --- a/src/store.js +++ b/src/store.js @@ -244,7 +244,7 @@ export default class Store { _addInverseRelationship(sourceResource, sourceFieldName, targetResource, sourceField) { var targetDefinition = this._types[targetResource.type]; - var targetFieldName = sourceField.inverse || targetResource.type; + var targetFieldName = sourceField.inverse || sourceResource.type; var targetField = targetDefinition && targetDefinition[targetFieldName]; targetResource._dependents.push({ type: sourceResource.type, id: sourceResource.id, fieldName: sourceFieldName }); if (targetField) { @@ -293,7 +293,7 @@ export default class Store { _removeInverseRelationship(sourceResource, sourceFieldName, targetResource, sourceField) { var targetDefinition = this._types[targetResource.type]; - var targetFieldName = sourceField.inverse || targetResource.type; + var targetFieldName = sourceField.inverse || sourceResource.type; var targetField = targetDefinition && targetDefinition[targetFieldName]; targetResource._dependents = targetResource._dependents.filter(r => { return !(r.type === sourceResource.type && r.id === sourceResource.id && r.fieldName === sourceFieldName);