diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index 959e169..0000000 --- a/.bowerrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "directory": "bower_components", - "analytics": false -} diff --git a/.editorconfig b/.editorconfig index 47c5438..219985c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,22 +13,8 @@ insert_final_newline = true indent_style = space indent_size = 2 -[*.js] -indent_style = space -indent_size = 2 - [*.hbs] insert_final_newline = false -indent_style = space -indent_size = 2 - -[*.css] -indent_style = space -indent_size = 2 - -[*.html] -indent_style = space -indent_size = 2 [*.{diff,md}] trim_trailing_whitespace = false diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..72df373 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,20 @@ +# unconventional js +/blueprints/*/files/ +/vendor/ + +# compiled output +/dist/ +/tmp/ + +# dependencies +/bower_components/ +/node_modules/ + +# misc +/coverage/ +!.* + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..ec0142c --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,52 @@ +module.exports = { + root: true, + parserOptions: { + ecmaVersion: 2017, + sourceType: 'module' + }, + plugins: [ + 'ember' + ], + extends: [ + 'eslint:recommended', + 'plugin:ember/recommended' + ], + env: { + browser: true + }, + rules: { + }, + overrides: [ + // node files + { + files: [ + '.eslintrc.js', + '.template-lintrc.js', + 'ember-cli-build.js', + 'index.js', + 'testem.js', + 'blueprints/*/index.js', + 'config/**/*.js', + 'tests/dummy/config/**/*.js' + ], + excludedFiles: [ + 'addon/**', + 'addon-test-support/**', + 'app/**', + 'tests/dummy/app/**' + ], + parserOptions: { + sourceType: 'script', + ecmaVersion: 2015 + }, + env: { + browser: false, + node: true + }, + plugins: ['node'], + rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { + // add your custom rules and overrides for node files here + }) + } + ] +}; diff --git a/.gitignore b/.gitignore index 86fceae..29c9bc6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,23 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. +# See https://help.github.com/ignore-files/ for more about ignoring files. # compiled output -/dist -/tmp +/dist/ +/tmp/ # dependencies -/node_modules -/bower_components +/bower_components/ +/node_modules/ # misc /.sass-cache /connect.lock -/coverage/* +/coverage/ /libpeerconnection.log -npm-debug.log -testem.log +/npm-debug.log* +/testem.log +/yarn-error.log + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 08096ef..0000000 --- a/.jshintrc +++ /dev/null @@ -1,32 +0,0 @@ -{ - "predef": [ - "document", - "window", - "-Promise" - ], - "browser": true, - "boss": true, - "curly": true, - "debug": false, - "devel": true, - "eqeqeq": true, - "evil": true, - "forin": false, - "immed": false, - "laxbreak": false, - "newcap": true, - "noarg": true, - "noempty": false, - "nonew": false, - "nomen": false, - "onevar": false, - "plusplus": false, - "regexp": false, - "undef": true, - "sub": true, - "strict": false, - "white": false, - "eqnull": true, - "esnext": true, - "unused": true -} diff --git a/.npmignore b/.npmignore index fa8b147..6032b25 100644 --- a/.npmignore +++ b/.npmignore @@ -1,16 +1,29 @@ -/bower_components +# compiled output +/dist/ +/tmp/ + +# dependencies +/bower_components/ + +# misc +/.bowerrc +/.editorconfig +/.ember-cli +/.eslintignore +/.eslintrc.js +/.gitignore +/.template-lintrc.js +/.travis.yml +/.watchmanconfig +/bower.json /config/ember-try.js -/dist -/tests -/tmp -**/.gitkeep -.bowerrc -.editorconfig -.ember-cli -.gitignore -.jshintrc -.watchmanconfig -.travis.yml -bower.json -ember-cli-build.js -testem.js +/ember-cli-build.js +/testem.js +/tests/ +/yarn.lock +.gitkeep + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try diff --git a/.template-lintrc.js b/.template-lintrc.js new file mode 100644 index 0000000..b45e96f --- /dev/null +++ b/.template-lintrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + extends: 'recommended' +}; diff --git a/.travis.yml b/.travis.yml index caf4b7c..f904298 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,35 +1,54 @@ --- language: node_js node_js: - - "0.12" + # we recommend testing addons with the same minimum supported node version as Ember CLI + # so that your addon works for all apps + - "6" sudo: false +dist: trusty + +addons: + chrome: stable cache: directories: - - node_modules + - $HOME/.npm env: - - EMBER_TRY_SCENARIO=default - - EMBER_TRY_SCENARIO=ember-1-13 - - EMBER_TRY_SCENARIO=ember-release - - EMBER_TRY_SCENARIO=ember-beta - - EMBER_TRY_SCENARIO=ember-canary - -matrix: - fast_finish: true + global: + # See https://git.io/vdao3 for details. + - JOBS=1 + +jobs: + fail_fast: true allow_failures: - env: EMBER_TRY_SCENARIO=ember-canary -before_install: - - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH - - "npm config set spin false" - - "npm install -g npm@^2" + include: + # runs linting and tests with current locked deps + + - stage: "Tests" + name: "Tests" + script: + - npm run lint:hbs + - npm run lint:js + - npm test -install: - - npm install -g bower - - npm install - - bower install + # we recommend new addons test the current and previous LTS + # as well as latest stable release (bonus points to beta/canary) + - stage: "Additional Tests" + env: EMBER_TRY_SCENARIO=ember-lts-2.16 + - env: EMBER_TRY_SCENARIO=ember-lts-2.18 + - env: EMBER_TRY_SCENARIO=ember-release + - env: EMBER_TRY_SCENARIO=ember-beta + - env: EMBER_TRY_SCENARIO=ember-canary + - env: EMBER_TRY_SCENARIO=ember-default-with-jquery + +before_install: + - npm config set spin false + - npm install -g npm@4 + - npm --version script: - - ember try $EMBER_TRY_SCENARIO test + - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO diff --git a/LICENSE.md b/LICENSE.md index 02000b5..198f6da 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 +Copyright (c) 2018 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index e6ecec8..6169827 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,8 @@ See the [demo](http://suven.github.io/ember-cli-visjs/) for examples and usage-i A big _thank you_ to [ember-leaflet](https://github.com/miguelcobain/ember-leaflet) for their container/child-mixins. -## Installation +Installation +------------------------------------------------------------------------------ Make sure you are using a somewhat recent version of nodejs when installing. Everything > 4 should be fine. diff --git a/addon/components/visjs-child.js b/addon/components/visjs-child.js index 2d89a0b..75294b9 100644 --- a/addon/components/visjs-child.js +++ b/addon/components/visjs-child.js @@ -1,9 +1,10 @@ -import Ember from 'ember'; +import Component from '@ember/component'; import ChildMixin from 'ember-cli-visjs/mixins/child'; -export default Ember.Component.extend(ChildMixin, { - didCreateLayer: Ember.K, - willDestroyLayer: Ember.K, +export default Component.extend(ChildMixin, { + didCreateLayer() {}, + willDestroyLayer() {}, + select() {}, layerSetup() { if (this.get('containerLayer')) { diff --git a/addon/components/visjs-edge.js b/addon/components/visjs-edge.js index 144c93d..2d3c168 100644 --- a/addon/components/visjs-edge.js +++ b/addon/components/visjs-edge.js @@ -1,5 +1,5 @@ -import Ember from 'ember'; import VisJsChild from 'ember-cli-visjs/components/visjs-child'; +import { computed, observer } from '@ember/object'; export default VisJsChild.extend({ type: 'edge', @@ -20,13 +20,25 @@ export default VisJsChild.extend({ */ to: '', - eId: Ember.computed('from', 'to', function() { + eId: computed('from', 'to', function() { return `${this.get('from')}-${this.get('to')}`; }), - arrowChanged: Ember.observer('arrows', function() { + arrowChanged: observer('arrows', function() { let container = this.get('containerLayer'); container.updateEdgeArrow(this.get('eId'), this.get('arrows')); - }) + }), + /** + * @public + * + * If set this displays a label on the edge + * @type {String} + */ + label: undefined, + + labelChanged: observer('label', function() { + let container = this.get('containerLayer'); + container.updateNodeLabel(this.get('eId'), this.get('label')); + }), }); diff --git a/addon/components/visjs-network.js b/addon/components/visjs-network.js index 61c1b6c..f297145 100644 --- a/addon/components/visjs-network.js +++ b/addon/components/visjs-network.js @@ -1,12 +1,12 @@ /* globals vis */ -import Ember from 'ember'; +import Component from '@ember/component'; import ContainerMixin from 'ember-cli-visjs/mixins/container'; import layout from '../templates/components/visjs-network'; +import { A } from '@ember/array'; +import { assert, debug } from '@ember/debug'; -const { A, assert, debug } = Ember; - -export default Ember.Component.extend(ContainerMixin, { +export default Component.extend(ContainerMixin, { layout, classNames: ['ember-cli-visjs ember-cli-visjs-network'], @@ -44,7 +44,7 @@ export default Ember.Component.extend(ContainerMixin, { matchingChildNode.get('select')(selectedNode, e); } }); - + network.on('selectEdge', (e) => { let [ selectedEdge ] = e.edges; let matchingChildEdge = _this.get('_childLayers').find((c) => { @@ -73,18 +73,24 @@ export default Ember.Component.extend(ContainerMixin, { this.setupBackgroundImage(); }, - didUpdateAttrs(changes) { + didUpdateAttrs() { this._super(...arguments); - if (changes.newAttrs.backgroundImage) { + let oldBackgroundImage = this.get('_oldBackgroundImage') + let newBackgroundImage = this.get('backgroundImage') + if (oldBackgroundImage !== newBackgroundImage) { this.setupBackgroundImage(); } - if (changes.newAttrs.addEdges) { + let oldAddEdges = this.get('_oldAddEdges') + let newAddEdges = this.get('addEdges') + if (oldAddEdges !== newAddEdges) { this.setupAddEdges(); } - if (changes.newAttrs.options) { + let oldOptions = this.get('_oldOptions') + let newOptions = this.get('options') + if (oldOptions !== newOptions) { this.setupAddEdges(); } }, @@ -160,7 +166,9 @@ export default Ember.Component.extend(ContainerMixin, { if (type === 'node') { this.get('nodes').remove(child.get('nId')); - } else if (type !== 'edge') { + } else if (type === 'edge') { + this.get('edges').remove(child.get('eId')); + } else { debug(`Child of type ${type} not supported by ember-cli-visjs`); } }, @@ -195,7 +203,7 @@ export default Ember.Component.extend(ContainerMixin, { addEdge(edge) { let edges = this.get('edges'); - let simplifiedEdge = { id: edge.get('eId'), from: edge.get('from'), to: edge.get('to') }; + let simplifiedEdge = { id: edge.get('eId'), from: edge.get('from'), to: edge.get('to'), label: edge.get('label') }; if (edge.get('arrows')) { simplifiedEdge.arrows = edge.get('arrows'); @@ -231,7 +239,11 @@ export default Ember.Component.extend(ContainerMixin, { this.get('nodes').update({ id: nId, label }); }, - updateNodeLevel(nId, label) { + updateEdgeLabel(eId, label) { + this.get('edges').update({ id: eId, label }); + }, + + updateNodeLevel(nId, level) { this.get('nodes').update({ id: nId, level }); }, diff --git a/addon/components/visjs-node.js b/addon/components/visjs-node.js index f41de82..32c89c3 100644 --- a/addon/components/visjs-node.js +++ b/addon/components/visjs-node.js @@ -1,4 +1,4 @@ -import Ember from 'ember'; +import { observer } from '@ember/object'; import VisJsChild from 'ember-cli-visjs/components/visjs-child'; export default VisJsChild.extend({ @@ -22,7 +22,7 @@ export default VisJsChild.extend({ */ color: false, - colorChanged: Ember.observer('color', function() { + colorChanged: observer('color', function() { let container = this.get('containerLayer'); container.updateNodeColor(this.get('nId'), this.get('color')); }), @@ -36,7 +36,7 @@ export default VisJsChild.extend({ */ label: undefined, - labelChanged: Ember.observer('label', function() { + labelChanged: observer('label', function() { let container = this.get('containerLayer'); container.updateNodeLabel(this.get('nId'), this.get('label')); }), @@ -49,7 +49,7 @@ export default VisJsChild.extend({ */ level: undefined, - levelChanged: Ember.observer('level', function() { + levelChanged: observer('level', function() { let container = this.get('containerLayer'); container.updateNodeLevel(this.get('nId'), this.get('level')); }), @@ -62,7 +62,7 @@ export default VisJsChild.extend({ */ image: false, - imageChanged: Ember.observer('image', function() { + imageChanged: observer('image', function() { let container = this.get('containerLayer'); container.updateNodeImage(this.get('nId'), this.get('image')); }) diff --git a/addon/mixins/child.js b/addon/mixins/child.js index 1c6194c..cdbd7e4 100644 --- a/addon/mixins/child.js +++ b/addon/mixins/child.js @@ -1,9 +1,10 @@ -import Ember from 'ember'; +import Mixin from '@ember/object/mixin'; import ContainerMixin from 'ember-cli-visjs/mixins/container'; -const { computed, assert } = Ember; +import { computed } from '@ember/object'; +import { assert } from '@ember/debug'; // From https://github.com/miguelcobain/ember-leaflet/blob/master/addon/mixins/child.js -export default Ember.Mixin.create({ +export default Mixin.create({ containerLayer: computed(function() { return this.nearestOfType(ContainerMixin); diff --git a/addon/mixins/container.js b/addon/mixins/container.js index 85017ce..b85954f 100644 --- a/addon/mixins/container.js +++ b/addon/mixins/container.js @@ -1,9 +1,8 @@ -import Ember from 'ember'; - -const { A } = Ember; +import Mixin from '@ember/object/mixin'; +import { A } from '@ember/array'; // From https://github.com/miguelcobain/ember-leaflet/blob/master/addon/mixins/container.js -export default Ember.Mixin.create({ +export default Mixin.create({ _childLayers: null, init() { diff --git a/config/ember-try.js b/config/ember-try.js index 7ded6fc..56e8d36 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -1,55 +1,83 @@ -/*jshint node:true*/ -module.exports = { - scenarios: [ - { - name: 'default', - bower: { - dependencies: { } - } - }, - { - name: 'ember-1-13', - bower: { - dependencies: { - 'ember': '~1.13.0' +'use strict'; + +const getChannelURL = require('ember-source-channel-url'); + +module.exports = function() { + return Promise.all([ + getChannelURL('release'), + getChannelURL('beta'), + getChannelURL('canary') + ]).then((urls) => { + return { + scenarios: [ + { + name: 'ember-lts-2.16', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ 'jquery-integration': true }) + }, + npm: { + devDependencies: { + '@ember/jquery': '^0.5.1', + 'ember-source': '~2.16.0' + } + } }, - resolutions: { - 'ember': '~1.13.0' - } - } - }, - { - name: 'ember-release', - bower: { - dependencies: { - 'ember': 'components/ember#release' + { + name: 'ember-lts-2.18', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ 'jquery-integration': true }) + }, + npm: { + devDependencies: { + '@ember/jquery': '^0.5.1', + 'ember-source': '~2.18.0' + } + } }, - resolutions: { - 'ember': 'release' - } - } - }, - { - name: 'ember-beta', - bower: { - dependencies: { - 'ember': 'components/ember#beta' + { + name: 'ember-release', + npm: { + devDependencies: { + 'ember-source': urls[0] + } + } }, - resolutions: { - 'ember': 'beta' - } - } - }, - { - name: 'ember-canary', - bower: { - dependencies: { - 'ember': 'components/ember#canary' + { + name: 'ember-beta', + npm: { + devDependencies: { + 'ember-source': urls[1] + } + } + }, + { + name: 'ember-canary', + npm: { + devDependencies: { + 'ember-source': urls[2] + } + } + }, + { + name: 'ember-default', + npm: { + devDependencies: {} + } }, - resolutions: { - 'ember': 'canary' + { + name: 'ember-default-with-jquery', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ + 'jquery-integration': true + }) + }, + npm: { + devDependencies: { + '@ember/jquery': '^0.5.1' + } + } } - } - } - ] + ] + }; + }); }; diff --git a/config/environment.js b/config/environment.js index 28a787b..0dfaed4 100644 --- a/config/environment.js +++ b/config/environment.js @@ -1,4 +1,3 @@ -/*jshint node:true*/ 'use strict'; module.exports = function(/* environment, appConfig */) { diff --git a/ember-cli-build.js b/ember-cli-build.js index 8cc3037..39a0be1 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -1,9 +1,10 @@ -/*jshint node:true*/ -/* global require, module */ -var EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); +'use strict'; + +const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function(defaults) { - var app = new EmberAddon(defaults, { + let app = new EmberAddon(defaults, { + // Add options here fingerprint: { exclude: ['wp.png'] } diff --git a/index.js b/index.js index 8fa4e32..818c8a6 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,7 @@ -/* jshint node: true */ 'use strict'; module.exports = { - name: 'ember-cli-visjs', + name: require('./package').name, included: function(app) { app.import(app.bowerDirectory + '/vis/dist/vis.js'); diff --git a/package.json b/package.json index b818807..9e6519e 100644 --- a/package.json +++ b/package.json @@ -2,58 +2,66 @@ "name": "ember-cli-visjs", "version": "0.1.3", "description": "Create touch, scroll and zoomable graphs with nodes and edges via vis.js", + "keywords": [ + "graph", + "nodes", + "edges", + "visjs", + "ember-addon" + ], + "repository": { + "type": "git", + "url": "https://github.com/Suven/ember-cli-visjs" + }, + "license": "MIT", + "author": "", "directories": { "doc": "doc", "test": "tests" }, "scripts": { "build": "ember build", - "start": "ember server", - "test": "ember try:testall" - }, - "repository": { - "type": "git", - "url": "https://github.com/Suven/ember-cli-visjs" + "lint:hbs": "ember-template-lint .", + "lint:js": "eslint .", + "start": "ember serve", + "test": "ember test", + "test:all": "ember try:each" }, - "engines": { - "node": ">= 0.10.0" + "dependencies": { + "ember-cli-babel": "^6.16.0", + "ember-cli-htmlbars": "^3.0.0" }, - "author": "", - "license": "MIT", "devDependencies": { - "broccoli-asset-rev": "^2.2.0", - "ember-ajax": "0.7.1", - "ember-cli": "2.4.0", - "ember-cli-app-version": "^1.0.0", - "ember-cli-dependency-checker": "^1.2.0", + "@ember/optional-features": "^0.6.3", + "broccoli-asset-rev": "^2.7.0", + "ember-ajax": "^3.1.0", + "ember-cli": "~3.5.1", + "ember-cli-dependency-checker": "^3.0.0", + "ember-cli-eslint": "^4.2.3", "ember-cli-github-pages": "0.0.8", - "ember-cli-htmlbars-inline-precompile": "^0.3.1", - "ember-cli-inject-live-reload": "^1.3.1", - "ember-cli-qunit": "^1.2.1", - "ember-cli-release": "0.2.8", - "ember-cli-sri": "^2.0.0", - "ember-cli-uglify": "^1.2.0", - "ember-data": "^2.4.0", - "ember-disable-prototype-extensions": "^1.1.0", - "ember-disable-proxy-controllers": "^1.0.1", - "ember-export-application-global": "^1.0.4", - "ember-load-initializers": "^0.5.0", + "ember-cli-htmlbars-inline-precompile": "^1.0.3", + "ember-cli-inject-live-reload": "^1.8.2", + "ember-cli-sri": "^2.1.1", + "ember-cli-template-lint": "^1.0.0-beta.1", + "ember-cli-uglify": "^2.1.0", + "ember-disable-prototype-extensions": "^1.1.3", + "ember-export-application-global": "^2.0.0", + "ember-load-initializers": "^1.1.0", + "ember-maybe-import-regenerator": "^0.1.6", "ember-notify": "5.0.4", - "ember-resolver": "^2.0.3", + "ember-qunit": "^3.4.1", + "ember-resolver": "^5.0.1", + "ember-source": "~3.5.1", + "ember-source-channel-url": "^1.1.0", "ember-suave": "2.0.1", - "ember-try": "^0.1.2", - "loader.js": "^4.0.0" + "ember-try": "^1.0.0", + "eslint-plugin-ember": "^5.2.0", + "eslint-plugin-node": "^7.0.1", + "loader.js": "^4.7.0", + "qunit-dom": "^0.8.0" }, - "keywords": [ - "graph", - "nodes", - "edges", - "visjs", - "ember-addon" - ], - "dependencies": { - "ember-cli-babel": "^5.1.5", - "ember-cli-htmlbars": "^1.0.1" + "engines": { + "node": "6.* || 8.* || >= 10.*" }, "ember-addon": { "configPath": "tests/dummy/config", diff --git a/testem.js b/testem.js index 26044b2..726d187 100644 --- a/testem.js +++ b/testem.js @@ -1,13 +1,25 @@ -/*jshint node:true*/ module.exports = { - "framework": "qunit", - "test_page": "tests/index.html?hidepassed", - "disable_watching": true, - "launch_in_ci": [ - "PhantomJS" + test_page: 'tests/index.html?hidepassed', + disable_watching: true, + launch_in_ci: [ + 'Chrome' ], - "launch_in_dev": [ - "PhantomJS", - "Chrome" - ] + launch_in_dev: [ + 'Chrome' + ], + browser_args: { + Chrome: { + ci: [ + // --no-sandbox is needed when running Chrome inside a container + process.env.CI ? '--no-sandbox' : null, + '--headless', + '--disable-gpu', + '--disable-dev-shm-usage', + '--disable-software-rasterizer', + '--mute-audio', + '--remote-debugging-port=0', + '--window-size=1440,900' + ].filter(Boolean) + } + } }; diff --git a/tests/.jshintrc b/tests/.jshintrc deleted file mode 100644 index 6ec0b7c..0000000 --- a/tests/.jshintrc +++ /dev/null @@ -1,52 +0,0 @@ -{ - "predef": [ - "document", - "window", - "location", - "setTimeout", - "$", - "-Promise", - "define", - "console", - "visit", - "exists", - "fillIn", - "click", - "keyEvent", - "triggerEvent", - "find", - "findWithAssert", - "wait", - "DS", - "andThen", - "currentURL", - "currentPath", - "currentRouteName" - ], - "node": false, - "browser": false, - "boss": true, - "curly": true, - "debug": false, - "devel": false, - "eqeqeq": true, - "evil": true, - "forin": false, - "immed": false, - "laxbreak": false, - "newcap": true, - "noarg": true, - "noempty": false, - "nonew": false, - "nomen": false, - "onevar": false, - "plusplus": false, - "regexp": false, - "undef": true, - "sub": true, - "strict": false, - "white": false, - "eqnull": true, - "esnext": true, - "unused": true -} diff --git a/tests/dummy/app/app.js b/tests/dummy/app/app.js index 831ad61..b3b2bd6 100644 --- a/tests/dummy/app/app.js +++ b/tests/dummy/app/app.js @@ -1,13 +1,9 @@ -import Ember from 'ember'; +import Application from '@ember/application'; import Resolver from './resolver'; import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -let App; - -Ember.MODEL_FACTORY_INJECTIONS = true; - -App = Ember.Application.extend({ +const App = Application.extend({ modulePrefix: config.modulePrefix, podModulePrefix: config.podModulePrefix, Resolver diff --git a/tests/dummy/app/controllers/index.js b/tests/dummy/app/controllers/index.js index 3b360a3..c839abd 100644 --- a/tests/dummy/app/controllers/index.js +++ b/tests/dummy/app/controllers/index.js @@ -1,9 +1,10 @@ -import Ember from 'ember'; +import Controller from '@ember/controller'; +import { inject as injectService } from '@ember/service'; +import { observer } from '@ember/object'; +import { A } from '@ember/array'; -const { A } = Ember; - -export default Ember.Controller.extend({ - notify: Ember.inject.service('notify'), +export default = Controller.extend({ + notify: injectService('notify'), network: false, icon: 'fire.png', @@ -44,7 +45,7 @@ export default Ember.Controller.extend({ bX: 50, bY: 50, - posOfBChanged: Ember.observer('bX', 'bY', function() { + posOfBChanged: observer('bX', 'bY', function() { this.get('notify').info(`B was moved to ${this.get('bX')}/${this.get('bY')}`); }), diff --git a/tests/dummy/app/index.html b/tests/dummy/app/index.html index 1aa6455..2f4ba58 100644 --- a/tests/dummy/app/index.html +++ b/tests/dummy/app/index.html @@ -9,8 +9,8 @@ {{content-for "head"}} - - + + {{content-for "head-footer"}} @@ -18,8 +18,8 @@ {{content-for "body"}} - - + + {{content-for "body-footer"}} diff --git a/tests/dummy/app/router.js b/tests/dummy/app/router.js index 3bba78e..ae8842e 100644 --- a/tests/dummy/app/router.js +++ b/tests/dummy/app/router.js @@ -1,8 +1,9 @@ -import Ember from 'ember'; +import EmberRouter from '@ember/routing/router'; import config from './config/environment'; -const Router = Ember.Router.extend({ - location: config.locationType +const Router = EmberRouter.extend({ + location: config.locationType, + rootURL: config.rootURL, }); Router.map(function() { diff --git a/tests/dummy/app/routes/index.js b/tests/dummy/app/routes/index.js index 26d9f31..d8b1774 100644 --- a/tests/dummy/app/routes/index.js +++ b/tests/dummy/app/routes/index.js @@ -1,4 +1,4 @@ -import Ember from 'ember'; +import Route from '@ember/route'; -export default Ember.Route.extend({ +export default Route.extend({ }); diff --git a/tests/dummy/app/templates/index.hbs b/tests/dummy/app/templates/index.hbs index 084326b..6d84119 100644 --- a/tests/dummy/app/templates/index.hbs +++ b/tests/dummy/app/templates/index.hbs @@ -161,7 +161,7 @@ bX: 50, bY: 50, - posOfBChanged: Ember.observer('bX', 'bY', function() { + posOfBChanged: observer('bX', 'bY', function() { console.log(`B was moved to ${this.get('bX')}/${this.get('bY')}`); }), diff --git a/tests/dummy/config/environment.js b/tests/dummy/config/environment.js index 6c86c92..d387af5 100644 --- a/tests/dummy/config/environment.js +++ b/tests/dummy/config/environment.js @@ -1,15 +1,19 @@ -/* jshint node: true */ +'use strict'; module.exports = function(environment) { - var ENV = { + let ENV = { modulePrefix: 'dummy', - environment: environment, - baseURL: '/', + environment, + rootURL: '/', locationType: 'auto', EmberENV: { FEATURES: { // Here you can enable experimental features on an ember canary build // e.g. 'with-controller': true + }, + EXTEND_PROTOTYPES: { + // Prevent Ember Data from overriding Date.parse. + Date: false } }, @@ -29,7 +33,6 @@ module.exports = function(environment) { if (environment === 'test') { // Testem prefers this... - ENV.baseURL = '/'; ENV.locationType = 'none'; // keep test console output quieter @@ -37,6 +40,7 @@ module.exports = function(environment) { ENV.APP.LOG_VIEW_LOOKUPS = false; ENV.APP.rootElement = '#ember-testing'; + ENV.APP.autoboot = false; } if (environment === 'production') { diff --git a/tests/dummy/config/optional-features.json b/tests/dummy/config/optional-features.json new file mode 100644 index 0000000..b190262 --- /dev/null +++ b/tests/dummy/config/optional-features.json @@ -0,0 +1,3 @@ +{ + "jquery-integration": false +} diff --git a/tests/dummy/config/targets.js b/tests/dummy/config/targets.js new file mode 100644 index 0000000..8ffae36 --- /dev/null +++ b/tests/dummy/config/targets.js @@ -0,0 +1,18 @@ +'use strict'; + +const browsers = [ + 'last 1 Chrome versions', + 'last 1 Firefox versions', + 'last 1 Safari versions' +]; + +const isCI = !!process.env.CI; +const isProduction = process.env.EMBER_ENV === 'production'; + +if (isCI || isProduction) { + browsers.push('ie 11'); +} + +module.exports = { + browsers +}; diff --git a/tests/dummy/public/crossdomain.xml b/tests/dummy/public/crossdomain.xml deleted file mode 100644 index 0c16a7a..0000000 --- a/tests/dummy/public/crossdomain.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/tests/helpers/.gitkeep b/tests/helpers/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/helpers/destroy-app.js b/tests/helpers/destroy-app.js deleted file mode 100644 index c3d4d1a..0000000 --- a/tests/helpers/destroy-app.js +++ /dev/null @@ -1,5 +0,0 @@ -import Ember from 'ember'; - -export default function destroyApp(application) { - Ember.run(application, 'destroy'); -} diff --git a/tests/helpers/module-for-acceptance.js b/tests/helpers/module-for-acceptance.js deleted file mode 100644 index 8c8b74e..0000000 --- a/tests/helpers/module-for-acceptance.js +++ /dev/null @@ -1,23 +0,0 @@ -import { module } from 'qunit'; -import startApp from '../helpers/start-app'; -import destroyApp from '../helpers/destroy-app'; - -export default function(name, options = {}) { - module(name, { - beforeEach() { - this.application = startApp(); - - if (options.beforeEach) { - options.beforeEach.apply(this, arguments); - } - }, - - afterEach() { - if (options.afterEach) { - options.afterEach.apply(this, arguments); - } - - destroyApp(this.application); - } - }); -} diff --git a/tests/helpers/resolver.js b/tests/helpers/resolver.js deleted file mode 100644 index b208d38..0000000 --- a/tests/helpers/resolver.js +++ /dev/null @@ -1,11 +0,0 @@ -import Resolver from '../../resolver'; -import config from '../../config/environment'; - -const resolver = Resolver.create(); - -resolver.namespace = { - modulePrefix: config.modulePrefix, - podModulePrefix: config.podModulePrefix -}; - -export default resolver; diff --git a/tests/helpers/start-app.js b/tests/helpers/start-app.js deleted file mode 100644 index e098f1d..0000000 --- a/tests/helpers/start-app.js +++ /dev/null @@ -1,18 +0,0 @@ -import Ember from 'ember'; -import Application from '../../app'; -import config from '../../config/environment'; - -export default function startApp(attrs) { - let application; - - let attributes = Ember.merge({}, config.APP); - attributes = Ember.merge(attributes, attrs); // use defaults, but you can override; - - Ember.run(() => { - application = Application.create(attributes); - application.setupForTesting(); - application.injectTestHelpers(); - }); - - return application; -} diff --git a/tests/index.html b/tests/index.html index 64cb47e..5209b85 100644 --- a/tests/index.html +++ b/tests/index.html @@ -10,9 +10,9 @@ {{content-for "head"}} {{content-for "test-head"}} - - - + + + {{content-for "head-footer"}} {{content-for "test-head-footer"}} @@ -21,12 +21,11 @@ {{content-for "body"}} {{content-for "test-body"}} - - - - - - + + + + + {{content-for "body-footer"}} {{content-for "test-body-footer"}} diff --git a/tests/test-helper.js b/tests/test-helper.js index e6cfb70..0382a84 100644 --- a/tests/test-helper.js +++ b/tests/test-helper.js @@ -1,6 +1,8 @@ -import resolver from './helpers/resolver'; -import { - setResolver -} from 'ember-qunit'; +import Application from '../app'; +import config from '../config/environment'; +import { setApplication } from '@ember/test-helpers'; +import { start } from 'ember-qunit'; -setResolver(resolver); +setApplication(Application.create(config.APP)); + +start(); diff --git a/tests/unit/mixins/child-test.js b/tests/unit/mixins/child-test.js index af99ab9..613ce94 100644 --- a/tests/unit/mixins/child-test.js +++ b/tests/unit/mixins/child-test.js @@ -1,4 +1,4 @@ -import Ember from 'ember'; +import Object from '@ember/object'; import ChildMixin from 'ember-cli-visjs/mixins/child'; import { module, test } from 'qunit'; @@ -6,7 +6,7 @@ module('Unit | Mixin | child'); // Replace this with your real tests. test('it works', function(assert) { - let ChildObject = Ember.Object.extend(ChildMixin); + let ChildObject = Object.extend(ChildMixin); let subject = ChildObject.create(); assert.ok(subject); }); diff --git a/tests/unit/mixins/container-test.js b/tests/unit/mixins/container-test.js index 786c188..1a39b34 100644 --- a/tests/unit/mixins/container-test.js +++ b/tests/unit/mixins/container-test.js @@ -1,4 +1,4 @@ -import Ember from 'ember'; +import Object from '@ember/object'; import ContainerMixin from 'ember-cli-visjs/mixins/container'; import { module, test } from 'qunit'; @@ -6,7 +6,7 @@ module('Unit | Mixin | container'); // Replace this with your real tests. test('it works', function(assert) { - let ContainerObject = Ember.Object.extend(ContainerMixin); + let ContainerObject = Object.extend(ContainerMixin); let subject = ContainerObject.create(); assert.ok(subject); });