Skip to content

Commit d38b499

Browse files
committed
Run ember-data as addon by default
1 parent cd21a54 commit d38b499

13 files changed

Lines changed: 136 additions & 32 deletions

File tree

app/components/dummy-app.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ export default Ember.Component.extend(ResizeMixin, {
1414
return;
1515
}
1616

17-
if(this.element.firstElementChild) {
18-
this.element.removeChild(this.element.firstElementChild);
19-
}
20-
2117
if (this.get('isBuilding')) {
2218
return;
2319
}
2420

21+
if (this.element.firstElementChild) {
22+
this.element.removeChild(this.element.firstElementChild);
23+
}
24+
2525
let ifrm = document.createElement('iframe');
2626
ifrm.id = this.iframeId;
2727
let supportsSrcDoc = ('srcdoc' in ifrm);

app/services/dependency-resolver.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import Ember from 'ember';
22
import config from '../config/environment';
33
import { task, timeout } from 'ember-concurrency';
44

5-
const EMBER_VERSIONS = ['2.11.0', '2.10.2', '2.9.1', '2.8.2', '2.7.3', '2.6.2', '2.5.1', '2.4.5', '2.3.2', '2.2.2', '2.1.2', '2.0.3', '1.13.13', '1.12.2'];
6-
const EMBER_DATA_VERSIONS = ['2.11.0', '2.10.0', '2.9.0', '2.8.1', '2.7.0', '2.6.2', '2.5.5', '2.4.3', '2.3.3', '2.2.1', '2.1.0', '2.0.1', '1.13.15'];
5+
const { computed, inject, RSVP, testing } = Ember;
6+
7+
const EMBER_VERSIONS = ['2.11.2', '2.10.2', '2.9.1', '2.8.2', '2.7.3', '2.6.2', '2.5.1', '2.4.5', '2.3.2', '2.2.2', '2.1.2', '2.0.3', '1.13.13', '1.12.2'];
8+
const EMBER_DATA_VERSIONS = ['2.11.3', '2.10.0', '2.9.0', '2.8.1', '2.7.0', '2.6.2', '2.5.5', '2.4.3', '2.3.3', '2.2.1', '2.1.0', '2.0.1', '1.13.15'];
79

810
const VERSION_REGEX = /^\d+.\d+.\d+(-beta\.\d+)?$/;
911

@@ -40,8 +42,6 @@ const CHANNELS = ['alpha', 'canary', 'beta', 'release'];
4042

4143
const POLL_INTERVAL = 10000;
4244

43-
const { computed, inject, RSVP } = Ember;
44-
4545
export default Ember.Service.extend({
4646
notify: inject.service(),
4747

@@ -77,9 +77,11 @@ export default Ember.Service.extend({
7777
const name = addonNames[j];
7878
const addon = hash[name];
7979
if (addon.status === 'build_success') {
80-
dependencies[name] = addon.addon_js;
80+
dependencies[name+'_js'] = addon.addon_js;
8181
dependencies[name+'_css'] = addon.addon_css;
82-
console.log(`Addon ${name} is loaded...`);
82+
if (!testing) {
83+
console.log(`Addon ${name} is loaded...`);
84+
}
8385
delete addons[name];
8486
} else if (addon.status === 'building') {
8587
console.log(`Addon ${name} is still building...`);

app/services/twiddle-json.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ export default Ember.Service.extend({
4545

4646
getTwiddleJson(gist) {
4747
return this._getTwiddleJson(gist).then((twiddleJson) => {
48-
4948
// Fill in any missing required dependencies
5049
const dependencies = JSON.parse(blueprints['twiddle.json']).dependencies;
5150
requiredDependencies.forEach(function(dep) {
@@ -58,6 +57,8 @@ export default Ember.Service.extend({
5857
}
5958
});
6059

60+
twiddleJson = this._dedupEmberData(twiddleJson);
61+
6162
const dependencyResolver = this.get('dependencyResolver');
6263
const emberVersion = twiddleJson.dependencies.ember;
6364
dependencyResolver.resolveDependencies(twiddleJson.dependencies);
@@ -95,6 +96,18 @@ export default Ember.Service.extend({
9596

9697
updateDependencyVersion(gist, dependencyName, version) {
9798
return this._updateTwiddleJson(gist, (json) => {
99+
100+
// If Ember Data is brought in as an addon, update addon version,
101+
// else update app version.
102+
if (dependencyName === 'ember-data') {
103+
if (json.addons && json.addons[dependencyName]) {
104+
json.addons[dependencyName] = version;
105+
} else {
106+
json.dependencies[dependencyName] = version;
107+
}
108+
return json;
109+
}
110+
98111
json.dependencies[dependencyName] = version;
99112

100113
// since ember and ember-template-compiler should always have the same
@@ -124,5 +137,14 @@ export default Ember.Service.extend({
124137
json.options["enable-testing"] = enabled;
125138
return json;
126139
});
140+
},
141+
142+
_dedupEmberData(json) {
143+
if (json.addons && json.addons.hasOwnProperty('ember-data')) {
144+
if (json.dependencies && json.dependencies.hasOwnProperty('ember-data')) {
145+
delete json.dependencies['ember-data'];
146+
}
147+
}
148+
return json;
127149
}
128150
});

blueprints/twiddle.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.11.1",
2+
"version": "0.12.0",
33
"EmberENV": {
44
"FEATURES": {}
55
},
@@ -9,10 +9,11 @@
99
},
1010
"dependencies": {
1111
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
12-
"ember": "2.11.0",
13-
"ember-data": "2.11.0",
14-
"ember-template-compiler": "2.11.0",
15-
"ember-testing": "2.11.0"
12+
"ember": "2.11.2",
13+
"ember-template-compiler": "2.11.2",
14+
"ember-testing": "2.11.2"
1615
},
17-
"addons": {}
16+
"addons": {
17+
"ember-data": "2.11.3"
18+
}
1819
}

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ember-twiddle",
3-
"version": "0.11.1",
3+
"version": "0.12.0",
44
"dependencies": {
55
"ember": "~2.10.2",
66
"ember-cli-shims": "0.1.3",

mirage/config.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import AddonFixture from "./fixtures/addon";
2+
import EmberDataFixture from "./fixtures/ember-data";
23
import config from "../config/environment";
34
import Mirage, { faker } from "ember-cli-mirage";
45
import Ember from "ember";
@@ -51,7 +52,10 @@ export function testConfig() {
5152
return schema.db.users.find(1);
5253
});
5354

54-
this.get(config.addonUrl, function() {
55+
this.get(config.addonUrl, function(schema, request) {
56+
if (request.queryParams.addon === 'ember-data') {
57+
return EmberDataFixture;
58+
}
5559
return AddonFixture;
5660
});
5761

mirage/fixtures/addon.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
export default {
22
"status": "build_success",
33
"status_date": "2016-03-21T01:55:42.140Z",
4-
"addon_js": "//s3.amazonaws.com/ember-twiddle-addons-beta/ember-1.13.15/ember-truth-helpers/1.2.0/addon.js",
5-
"addon_css": "//s3.amazonaws.com/ember-twiddle-addons-beta/ember-1.13.15/ember-truth-helpers/1.2.0/addon.css",
4+
"addon_js": "//canary-addons.ember-twiddle.com/ember-2.11.0/ember-truth-helpers/1.2.0/addon.js",
5+
"addon_css": "//canary-addons.ember-twiddle.com/ember-2.11.0/ember-truth-helpers/1.2.0/addon.css",
66
"errors": null,
77
"ember_errors": null
88
};

mirage/fixtures/ember-data.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export default {
2+
"status": "build_success",
3+
"status_date": "2016-03-21T01:55:42.140Z",
4+
"addon_js": "//canary-addons.ember-twiddle.com/ember-2.11.0/ember-data/2.11.3/addon.js",
5+
"addon_css": "//canary-addons.ember-twiddle.com/ember-2.11.0/ember-data/2.11.3/addon.css",
6+
"errors": null,
7+
"ember_errors": null
8+
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ember-twiddle",
3-
"version": "0.11.1",
3+
"version": "0.12.0",
44
"description": "https://ember-twiddle.com",
55
"private": true,
66
"directories": {

tests/acceptance/addons-test.js

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ test('Addons work', function(assert) {
3131
{
3232
filename: "twiddle.json",
3333
content: `{
34-
"version": "0.7.0",
34+
"version": "0.12.0",
3535
"EmberENV": {
3636
"FEATURES": {}
3737
},
@@ -41,8 +41,9 @@ test('Addons work', function(assert) {
4141
},
4242
"dependencies": {
4343
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
44-
"ember": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.4.3/ember.debug.js",
45-
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.4.2/ember-data.js"
44+
"ember": "2.11.2",
45+
"ember-template-compiler": "2.11.2",
46+
"ember-testing": "2.11.2"
4647
},
4748
"addons": {
4849
"ember-truth-helpers": "1.2.0"
@@ -59,3 +60,61 @@ test('Addons work', function(assert) {
5960
assert.equal(outputContents(outputDiv), 'Welcome to Ember Twiddle');
6061
});
6162
});
63+
64+
test('Ember Data works as an addon', function (assert) {
65+
const files = [
66+
{
67+
filename: "templates.application.hbs",
68+
content: `Welcome to {{model.appName}}`
69+
},
70+
{
71+
filename: "routes.application.js",
72+
content: `import Ember from "ember";
73+
export default Ember.Route.extend({
74+
model() {
75+
return this.get('store').createRecord('app', {
76+
appName: 'Ember Twiddle'
77+
});
78+
}
79+
});`
80+
},
81+
{
82+
filename: "models.app.js",
83+
content: `import Ember from "ember";
84+
import DS from "ember-data";
85+
export default DS.Model.extend({
86+
appName: DS.attr('string')
87+
});`
88+
},
89+
{
90+
filename: "twiddle.json",
91+
content: `{
92+
"version": "0.12.0",
93+
"EmberENV": {
94+
"FEATURES": {}
95+
},
96+
"options": {
97+
"use_pods": true,
98+
"enable-testing": false
99+
},
100+
"dependencies": {
101+
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
102+
"ember": "2.11.2",
103+
"ember-template-compiler": "2.11.2",
104+
"ember-testing": "2.11.2"
105+
},
106+
"addons": {
107+
"ember-data": "2.11.3"
108+
}
109+
}`
110+
}
111+
];
112+
113+
runGist(files);
114+
115+
andThen(function() {
116+
const outputDiv = 'div';
117+
118+
assert.equal(outputContents(outputDiv), 'Welcome to Ember Twiddle');
119+
});
120+
});

0 commit comments

Comments
 (0)