Skip to content

Commit

Permalink
Merge pull request #7003 from emberjs/hjdivad/beta-backports
Browse files Browse the repository at this point in the history
beta backports
  • Loading branch information
runspired authored Jan 24, 2020
2 parents b4e8f05 + e2d33ea commit d829559
Show file tree
Hide file tree
Showing 32 changed files with 210 additions and 103 deletions.
2 changes: 2 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

# compiled output
**/dist/
**/dist-control/
**/dist-experiment/
**/tmp/
/packages/-ember-data/docs/

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,6 @@
},
"dependencies": {},
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
}
}
3 changes: 1 addition & 2 deletions packages/-ember-data/addon/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import JSONSerializer from '@ember-data/serializer/json';
import JSONAPISerializer from '@ember-data/serializer/json-api';
import RESTSerializer, { EmbeddedRecordsMixin } from '@ember-data/serializer/rest';
import Transform from '@ember-data/serializer/transform';
import { normalizeModelName } from '@ember-data/store';
import Store, { normalizeModelName } from '@ember-data/store';

import {
AdapterPopulatedRecordArray,
Expand All @@ -45,7 +45,6 @@ import {
} from './-private';
import initializeStoreService from './initialize-store-service';
import setupContainer from './setup-container';
import Store from './store';

if (VERSION.match(/^1\.([0-9]|1[0-2])\./)) {
throw new EmberError(
Expand Down
22 changes: 1 addition & 21 deletions packages/-ember-data/addon/store.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1 @@
import { IDENTIFIERS } from '@ember-data/canary-features';
import { RecordData } from '@ember-data/record-data/-private';
import Store from '@ember-data/store';
import { identifierCacheFor } from '@ember-data/store/-private';

type RecordDataStoreWrapper = import('@ember-data/store/-private/ts-interfaces/record-data-store-wrapper').RecordDataStoreWrapper;

export default class DefaultStore extends Store {
createRecordDataFor(modelName: string, id: string | null, clientId: string, storeWrapper: RecordDataStoreWrapper) {
if (IDENTIFIERS) {
let identifier = identifierCacheFor(this).getOrCreateRecordIdentifier({
type: modelName,
id,
lid: clientId,
});
return new RecordData(identifier, storeWrapper);
} else {
return new RecordData(modelName, id, clientId, storeWrapper);
}
}
}
export { default } from '@ember-data/store';
2 changes: 1 addition & 1 deletion packages/-ember-data/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
"typescript": "~3.7.3"
},
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
},
"keywords": [
"ember-addon"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ import { run } from '@ember/runloop';
import { module, test } from 'qunit';
import { resolve } from 'rsvp';

import { gte } from 'ember-compatibility-helpers';
import { setupTest } from 'ember-qunit';

import Adapter from '@ember-data/adapter';
import Model, { attr, belongsTo, hasMany } from '@ember-data/model';
import JSONAPISerializer from '@ember-data/serializer/json-api';
import todo from '@ember-data/unpublished-test-infra/test-support/todo';

module('integration/relationships/one_to_many_test - OneToMany relationships', function(hooks) {
setupTest(hooks);
Expand Down Expand Up @@ -1566,39 +1568,51 @@ module('integration/relationships/one_to_many_test - OneToMany relationships', f
assert.equal(account.get('user'), null, 'Account does not have the user anymore');
});

test('createRecord updates inverse record array which has observers', function(assert) {
let store = this.owner.lookup('service:store');
let adapter = store.adapterFor('application');

adapter.findAll = () => {
return {
data: [
{
id: '2',
type: 'user',
attributes: {
name: 'Stanley',
// This is the check we actually want, but compatibility-helpers doesn't give correct results for pre-release tags
// see https://github.com/pzuraq/ember-compatibility-helpers/pull/41
// if ((gte('3.16.0') && !gte('3.17.0')) /* 3.16.x */ || (gte('3.17.99') && !gte('3.18.0')) /* 3.18.0-canary */) {
//
if (gte('3.16.0')) {
// known failure in 3.16.x due to upstream glimmer VM issue
// https://github.com/glimmerjs/glimmer-vm/pull/1010
todo('createRecord updates inverse record array which has observers', function(assert) {
assert.todo.ok(false, 'known failure in ember-source@^3.16.0');
});
} else {
test('createRecord updates inverse record array which has observers', function(assert) {
let store = this.owner.lookup('service:store');
let adapter = store.adapterFor('application');

adapter.findAll = () => {
return {
data: [
{
id: '2',
type: 'user',
attributes: {
name: 'Stanley',
},
},
},
],
],
};
};
};

return store.findAll('user').then(users => {
assert.equal(users.get('length'), 1, 'Exactly 1 user');
return store.findAll('user').then(users => {
assert.equal(users.get('length'), 1, 'Exactly 1 user');

let user = users.get('firstObject');
assert.equal(user.get('messages.length'), 0, 'Record array is initially empty');
let user = users.get('firstObject');
assert.equal(user.get('messages.length'), 0, 'Record array is initially empty');

// set up an observer
user.addObserver('messages.@each.title', () => {});
user.get('messages.firstObject');
// set up an observer
user.addObserver('messages.@each.title', () => {});
user.get('messages.firstObject');

let message = store.createRecord('message', { user, title: 'EmberFest was great' });
assert.equal(user.get('messages.length'), 1, 'The message is added to the record array');
let message = store.createRecord('message', { user, title: 'EmberFest was great' });
assert.equal(user.get('messages.length'), 1, 'The message is added to the record array');

let messageFromArray = user.get('messages.firstObject');
assert.ok(message === messageFromArray, 'Only one message record instance should be created');
let messageFromArray = user.get('messages.firstObject');
assert.ok(message === messageFromArray, 'Only one message record instance should be created');
});
});
});
}
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import { get } from '@ember/object';
import { settled } from '@ember/test-helpers';

import { module, test } from 'qunit';

import { setupTest } from 'ember-qunit';

import Model, { attr } from '@ember-data/model';
import Store from '@ember-data/store';

class Person extends Model {
@attr()
name;
}

class CustomStore extends Store {}

module('integration/store/package-import', function(hooks) {
setupTest(hooks);

let store;

hooks.beforeEach(function() {
let { owner } = this;

owner.register('model:person', Person);
owner.unregister('service:store');
owner.register('service:store', CustomStore);
store = owner.lookup('service:store');
});

test('Store push works with an import from @ember-data/store', async function(assert) {
store.push({
data: [
{
type: 'person',
id: '1',
attributes: {
name: 'Scumbag Dale',
},
},
{
type: 'person',
id: '2',
attributes: {
name: 'Scumbag Katz',
},
},
],
});

let all = store.peekAll('person');
assert.equal(get(all, 'length'), 2);

store.push({
data: [
{
type: 'person',
id: '3',
attributes: {
name: 'Scumbag Bryn',
},
},
],
});

await settled();
assert.equal(get(all, 'length'), 3);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.0.0",
"description": "Addon fixture package for ember-cli-blueprint-test-helpers",
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
},
"devDependencies": {
"ember-cli": "*",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "App fixture package for ember-cli-blueprint-test-helpers",
"private": true,
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
},
"devDependencies": {
"ember-cli": "*",
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
},
"ember-addon": {
"configPath": "tests/dummy/config"
Expand Down
2 changes: 1 addition & 1 deletion packages/canary-features/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
}
}
2 changes: 1 addition & 1 deletion packages/debug/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
},
"ember-addon": {
"configPath": "tests/dummy/config"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.0.0",
"description": "Addon fixture package for ember-cli-blueprint-test-helpers",
"engines": {
"node": ">= 0.10.0"
"node": "10.* || >= 12.*"
},
"devDependencies": {
"ember-cli": "*",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "App fixture package for ember-cli-blueprint-test-helpers",
"private": true,
"engines": {
"node": ">= 0.10.0"
"node": "10.* || >= 12.*"
},
"devDependencies": {
"ember-cli": "*",
Expand Down
2 changes: 1 addition & 1 deletion packages/model/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
},
"ember-addon": {
"configPath": "tests/dummy/config"
Expand Down
2 changes: 1 addition & 1 deletion packages/private-build-infra/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,6 @@
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import {
CollectionResourceRelationship,
SingleResourceRelationship,
} from '@ember-data/store/-private/ts-interfaces/ember-data-json-api';
import { RecordData } from '@ember-data/store/-private/ts-interfaces/record-data';

type SingleResourceRelationship = import('@ember-data/store/-private/ts-interfaces/ember-data-json-api').SingleResourceRelationship;
type CollectionResourceRelationship = import('@ember-data/store/-private/ts-interfaces/ember-data-json-api').CollectionResourceRelationship;
type RecordData = import('@ember-data/store/-private/ts-interfaces/record-data').RecordData;
type ConfidentDict<T> = import('@ember-data/store/-private/ts-interfaces/utils').ConfidentDict<T>;
type HasManyRelationship = import('../relationships/state/has-many').default;
type BelongsToRelationship = import('../relationships/state/belongs-to').default;
Expand Down
2 changes: 1 addition & 1 deletion packages/record-data/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
},
"ember-addon": {
"configPath": "tests/dummy/config"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.0.0",
"description": "Addon fixture package for ember-cli-blueprint-test-helpers",
"engines": {
"node": ">= 0.10.0"
"node": "10.* || >= 12.*"
},
"devDependencies": {
"ember-cli": "*",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "App fixture package for ember-cli-blueprint-test-helpers",
"private": true,
"engines": {
"node": ">= 0.10.0"
"node": "10.* || >= 12.*"
},
"devDependencies": {
"ember-cli": "*",
Expand Down
2 changes: 1 addition & 1 deletion packages/serializer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
"node": "10.* || >= 12.*"
},
"ember-addon": {
"configPath": "tests/dummy/config"
Expand Down
Loading

0 comments on commit d829559

Please sign in to comment.