diff --git a/package.json b/package.json index 49804505c40..1a85a8ecc93 100644 --- a/package.json +++ b/package.json @@ -81,18 +81,19 @@ "ember-resolver": "^2.0.3", "ember-watson": "^0.7.0", "express": "^4.14.0", + "faker": "^3.1.0", "github": "^0.2.4", "glob": "5.0.13", "heimdall-query": "^0.0.5", - "json-api-mock-server": "0.0.2", + "json-api-mock-server": "0.1.1", + "loader.js": "^4.0.1", "mocha": "2.4.5", "mocha-only-detector": "0.0.2", - "phantomjs-prebuilt": "^2.1.12", "morgan": "^1.7.0", + "phantomjs-prebuilt": "^2.1.12", "pretender": "1.0.0", "rimraf": "2.5.2", - "rsvp": "3.2.1", - "loader.js": "^4.0.1" + "rsvp": "3.2.1" }, "peerDependencies": { "ember-inflector": "^1.9.4" diff --git a/server/models/baz.js b/server/models/baz.js new file mode 100644 index 00000000000..66435e61a3d --- /dev/null +++ b/server/models/baz.js @@ -0,0 +1,12 @@ +var faker = require('faker'); +var props = require('../store/props'); +var attr = props.attr; +var one = props.one; +var between = require('../utils/between'); + +module.exports = { + name: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 7)); }}), + description: attr('string', { defaultValue: function() { return faker.lorem.sentences(between(3, 7)); }}), + complex: one('complex', { inverse: 'baz', defaultValue: false }), + heavyBaz: one('heavy-baz', { inverse: 'bazs', defaultValue: false }) +}; diff --git a/server/models/complex.js b/server/models/complex.js new file mode 100644 index 00000000000..1a7d238c531 --- /dev/null +++ b/server/models/complex.js @@ -0,0 +1,13 @@ +var faker = require('faker'); +var props = require('../store/props'); +var attr = props.attr; +var many = props.many; +var one = props.one; +var between = require('../utils/between'); + +module.exports = { + name: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 7)); }}), + description: attr('string', { defaultValue: function() { return faker.lorem.sentences(between(3, 7)); }}), + baz: one('baz', { inverse: 'complex', defaultValue: true }), + foos: many('foo', { inverse: 'complex', defaultValue: 5 }) +}; diff --git a/server/models/foo.js b/server/models/foo.js new file mode 100644 index 00000000000..b358ca037b2 --- /dev/null +++ b/server/models/foo.js @@ -0,0 +1,12 @@ +var faker = require('faker'); +var props = require('../store/props'); +var attr = props.attr; +var one = props.one; +var between = require('../utils/between'); + +module.exports = { + name: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 7)); }}), + description: attr('string', { defaultValue: function() { return faker.lorem.sentences(between(3, 7)); }}), + complex: one('complex', { inverse: 'foos', defaultValue: false }), + heavyFoo: one('heavy-foo', { inverse: 'foo', defaultValue: false }) +}; diff --git a/server/models/heavy-baz.js b/server/models/heavy-baz.js new file mode 100644 index 00000000000..5fe43bde274 --- /dev/null +++ b/server/models/heavy-baz.js @@ -0,0 +1,13 @@ +var faker = require('faker'); +var props = require('../store/props'); +var attr = props.attr; +var one = props.one; +var many = props.many; +var between = require('../utils/between'); + +module.exports = { + name: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 7)); }}), + description: attr('string', { defaultValue: function() { return faker.lorem.sentences(between(3, 7)); }}), + heavy: one('heavy', { inverse: 'heavyBaz', defaultValue: false }), + bazs: many('baz', { inverse: 'heavyBaz', defaultValue: 5 }) +}; diff --git a/server/models/heavy-foo.js b/server/models/heavy-foo.js new file mode 100644 index 00000000000..24e3e285438 --- /dev/null +++ b/server/models/heavy-foo.js @@ -0,0 +1,12 @@ +var faker = require('faker'); +var props = require('../store/props'); +var attr = props.attr; +var one = props.one; +var between = require('../utils/between'); + +module.exports = { + name: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 7)); }}), + description: attr('string', { defaultValue: function() { return faker.lorem.sentences(between(3, 7)); }}), + heavy: one('heavy', { inverse: 'heavyFoos', defaultValue: false }), + foo: one('foo', { inverse: 'heavyFoo', defaultValue: true }) +}; diff --git a/server/models/heavy.js b/server/models/heavy.js new file mode 100644 index 00000000000..8ce6bb52b4b --- /dev/null +++ b/server/models/heavy.js @@ -0,0 +1,13 @@ +var faker = require('faker'); +var props = require('../store/props'); +var attr = props.attr; +var many = props.many; +var one = props.one; +var between = require('../utils/between'); + +module.exports = { + name: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 7)); }}), + description: attr('string', { defaultValue: function() { return faker.lorem.sentences(between(3, 7)); }}), + heavyBaz: one('heavy-baz', { inverse: 'heavy', defaultValue: true }), + heavyFoos: many('heavy-foo', { inverse: 'heavy', defaultValue: 5 }) +}; diff --git a/server/models/simple.js b/server/models/simple.js new file mode 100644 index 00000000000..689e0690ff0 --- /dev/null +++ b/server/models/simple.js @@ -0,0 +1,9 @@ +var faker = require('faker'); +var props = require('../store/props'); +var attr = props.attr; +var between = require('../utils/between'); + +module.exports = { + title: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 7)); }}), + description: attr('string', { defaultValue: function() { return faker.lorem.sentences(between(3, 7)); }}) +}; diff --git a/server/scenarios/default.js b/server/scenarios/default.js new file mode 100644 index 00000000000..954423e0102 --- /dev/null +++ b/server/scenarios/default.js @@ -0,0 +1,6 @@ +module.exports = function(store) { + store.seed('simple', 240); + store.seed('complex', 35); + store.seed('heavy', 14); +}; + diff --git a/tests/dummy/app/helpers/reopen-instrumentation.js b/tests/dummy/app/helpers/reopen-instrumentation.js deleted file mode 100644 index f037e5b0e9a..00000000000 --- a/tests/dummy/app/helpers/reopen-instrumentation.js +++ /dev/null @@ -1,51 +0,0 @@ -/* global heimdall */ -import Ember from 'ember'; -import DS from "ember-data"; - -const { - Model -} = DS; - -const { - Object: Obj -} = Ember; - -export default function instrumentBaseObjects(owner) { - const [__a, __b] = heimdall.registerMonitor('owner', 'lookup', '_lookupFactory'); - let originalLookup = owner.lookup; - let originalLookupFactory = owner._lookupFactory; - - owner.lookup = function lookup() { - heimdall.increment(__a); - return originalLookup.apply(this, arguments); - }; - - owner._lookupFactory = function _lookupFactory() { - heimdall.increment(__b); - return originalLookupFactory.apply(this, arguments); - }; - - const [__c] = heimdall.registerMonitor('reopened-model', '_create'); - const [__d, __e] = heimdall.registerMonitor('reopened-object', 'create', 'extend'); - let originalModelCreate = Model._create; - let originalCreate = Obj.create; - let originalExtend = Obj.extend; - - Model.reopenClass({ - _create() { - heimdall.increment(__c); - return originalModelCreate.apply(this, arguments); - } - }); - - Obj.reopenClass({ - create() { - heimdall.increment(__d); - return originalCreate.apply(this, arguments); - }, - extend() { - heimdall.increment(__e); - return originalExtend.apply(this, arguments); - } - }); -} diff --git a/tests/dummy/app/routes/query/route.js b/tests/dummy/app/routes/query/route.js index 7e035ba2542..f64fd666cd3 100644 --- a/tests/dummy/app/routes/query/route.js +++ b/tests/dummy/app/routes/query/route.js @@ -1,15 +1,10 @@ /* global window, heimdall, console */ import Ember from 'ember'; -import instrumentBaseObjects from '../../helpers/reopen-instrumentation'; -import config from 'dummy/config/environment'; const { - getOwner, Route } = Ember; -let HAS_INSTRUMENTED = false; - export default Route.extend({ queryParams: { @@ -23,11 +18,6 @@ export default Route.extend({ model(params) { // switch this to 'production' when generating production build baselines - if (config.environment === 'development' && !HAS_INSTRUMENTED) { - instrumentBaseObjects(getOwner(this)); - HAS_INSTRUMENTED = true; - } - let modelName = params.modelName; delete params.modelName;