Skip to content

Commit

Permalink
Merge pull request #155 from alphasights/ksm/object-arrays
Browse files Browse the repository at this point in the history
Generate correct string for object arrays
  • Loading branch information
TerminalStar authored Sep 11, 2017
2 parents 51670d2 + d6cdc00 commit 55bb7f8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
16 changes: 14 additions & 2 deletions addon/generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,20 @@ export default {
},

wrapArrayInStringTokens(array) {
return array.map((ele) => {
return this.wrapInStringTokens(ele);
return array.map(ele => {
if (typeof ele === 'object') {
let generatedElements = [];
let eleKeys = Object.keys(ele);

eleKeys.forEach(key => {
let generatedValue = this.generateArgument({ name: key, value: ele[key] });
generatedElements.push(generatedValue);
});

return this.argumentObjectOpeningToken + generatedElements.join(', ') + this.argumentObjectClosingToken;
} else {
return this.wrapInStringTokens(ele);
}
}).join();
},

Expand Down
8 changes: 6 additions & 2 deletions tests/unit/generator-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,17 @@ test('all the things', function(assert) {
new Type.Argument('status', 'active'),
new Type.Argument('embedded', new Type.ArgumentSet(new Type.Argument('id', 1))),
new Type.Argument('limit', 10),
new Type.Argument('offset', 0)
new Type.Argument('offset', 0),
new Type.Argument('objectArray', [{ foo: 'bar', bar: 'foo' }])
);
let post = new Type.Field('post', 'postAlias', postArgumentSet, postSelectionSet);

let operationSelectionSet = new Type.SelectionSet(post);
let operationArgumentSet = new Type.ArgumentSet();
let operation = new Type.Operation('query', 'postsQuery', operationArgumentSet, operationSelectionSet);

assert.equal(Generator.generate(operation), `query postsQuery { postAlias: post(ids: ["1","2","3"], status: "active", embedded: { id: 1 }, limit: 10, offset: 0) { id status author { id username } } }`);
assert.equal(
Generator.generate(operation),
`query postsQuery { postAlias: post(ids: ["1","2","3"], status: "active", embedded: { id: 1 }, limit: 10, offset: 0, objectArray: [{ foo: "bar", bar: "foo" }]) { id status author { id username } } }`
);
});

0 comments on commit 55bb7f8

Please sign in to comment.