Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions addon/fields/info/create.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import FieldInfo from './model';
import { getArgsForField } from '../args';
import { getIsRelayConnection } from '../../relay/connection';
import { getSelectedFields } from '../selections';
import { unwrapNonNull } from '../../utils';

const composeGetFieldInfo = (getArgsForField, getSelectedFields, getIsRelayConnection) =>
(field, type, fragments, getType) => {
Expand All @@ -19,6 +20,7 @@ const getFieldInfo = composeGetFieldInfo(getArgsForField, getSelectedFields,

export const composeCreateFieldInfo = (getFieldInfo) =>
(field, fieldName, type, fragments, getType) => {
type = unwrapNonNull(type);
let { args, fields, isList, isRelayConnection, recordType } =
getFieldInfo(field, type, fragments, getType);

Expand Down
17 changes: 17 additions & 0 deletions tests/acceptance/non-null-list-of-people-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { module, test } from 'qunit';
import { setupApplicationTest } from 'ember-qunit';
import { visit } from '@ember/test-helpers';

module('Acceptance | non null list of people', function(hooks) {
setupApplicationTest(hooks);

test('it correctly unwraps non null list of non null items', async function(assert) {
server.createList('person', 2);

await visit('/people/non-null-list-of-people');

let people = this.element.querySelectorAll('h2');

assert.equal(people.length, 2, 'There are 2 people displayed');
});
});
7 changes: 7 additions & 0 deletions tests/dummy/app/gql/queries/non-null-list-of-people.graphql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
query nonNullListOfPeople {
nonNullListOfPeople {
id
firstName
lastName
}
}
2 changes: 2 additions & 0 deletions tests/dummy/app/gql/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,6 @@ type Query {
people(firstName: String, lastName: String, pageSize: Int): [Person]

peopleSameAgeAsDogYears: [Person]

nonNullListOfPeople: [Person!]!
}
1 change: 1 addition & 0 deletions tests/dummy/app/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const Router = EmberRouter.extend({
Router.map(function() {
this.route('customer', { path: '/customer/:customer_id' });
this.route('people', function() {
this.route('non-null-list-of-people');
this.route('same-age-as-dog-years');
this.route('same-name-as-pets');
});
Expand Down
13 changes: 13 additions & 0 deletions tests/dummy/app/routes/people/non-null-list-of-people.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import Route from '@ember/routing/route';
import query from 'dummy/gql/queries/non-null-list-of-people';
import { inject as service } from '@ember/service';

export default Route.extend({
apollo: service(),

async model() {
let model = await this.get('apollo').watchQuery({ query });

return model;
}
});
3 changes: 3 additions & 0 deletions tests/dummy/app/templates/people/non-null-list-of-people.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{{#each this.model.nonNullListOfPeople as |person|}}
<h2>{{person.firstName}} {{person.lastName}}</h2>
{{/each}}