Skip to content

Commit

Permalink
Improve error handling for poorly formed relationships
Browse files Browse the repository at this point in the history
Tells the user what they did wrong when they forget to wrap their
relationship changes in a `{ data: ... }` object
  • Loading branch information
carlbennettnz committed Sep 7, 2015
1 parent 60e6931 commit 84efa0e
Showing 1 changed file with 22 additions and 5 deletions.
27 changes: 22 additions & 5 deletions src/steps/pre-query/parse-request-primary.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,24 @@ export default function(data, parseAsLinkage) {
}

catch (error) {
const title = "The resources you provided could not be parsed.";
const details = `The precise error was: "${error.message}".`;
reject(new APIError(400, undefined, title, details));
if (error instanceof APIError) {
reject(error);
}

else {
const title = "The resources you provided could not be parsed.";
const details = `The precise error was: "${error.message}".`;
reject(new APIError(400, undefined, title, details));
}
}
});
}

function relationshipObjectFromJSON(json) {
if (typeof json.data === "undefined") {
throw new APIError(400, undefined, `Missing relationship linkage.`);
}

return new RelationshipObject(linkageFromJSON(json.data));
}

Expand All @@ -41,8 +51,15 @@ function resourceFromJSON(json) {
let relationships = json.relationships || {};

//build RelationshipObjects
for(let key in relationships) {
relationships[key] = relationshipObjectFromJSON(relationships[key]);
let key;
try {
for(key in relationships) {
relationships[key] = relationshipObjectFromJSON(relationships[key], key);
}
}
catch (e) {
e.details = `No data was found for the ${key} relationship.`;
throw e;
}

return new Resource(json.type, json.id, json.attributes, relationships, json.meta);
Expand Down

0 comments on commit 84efa0e

Please sign in to comment.