From 15ac27c635fc654b0a9f6e0972adcea9a69d97a5 Mon Sep 17 00:00:00 2001 From: Tobias Bieniek Date: Tue, 14 Nov 2017 12:25:32 +0100 Subject: [PATCH 1/3] Update `ember-cli-qunit` to v4.1.1 --- package.json | 2 +- yarn.lock | 74 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 48 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 6bc0e71..18e57b0 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "ember-cli-htmlbars": "^2.0.1", "ember-cli-htmlbars-inline-precompile": "^1.0.0", "ember-cli-inject-live-reload": "^1.4.1", - "ember-cli-qunit": "^4.0.0", + "ember-cli-qunit": "^4.1.1", "ember-cli-shims": "^1.1.0", "ember-cli-sri": "^2.1.0", "ember-cli-uglify": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 62fc50f..eb7dc44 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@ember/test-helpers@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-0.7.1.tgz#14ba828ebc5b7b0e6eb7889352cb40af0c995349" + dependencies: + broccoli-funnel "^2.0.1" + ember-cli-babel "^6.8.1" + "@glimmer/compiler@^0.25.4": version "0.25.4" resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.25.4.tgz#349791f826de0be271fdfa88e3bac395dcb94ee9" @@ -1115,7 +1122,7 @@ broccoli-funnel@^1.0.0, broccoli-funnel@^1.0.1, broccoli-funnel@^1.1.0, broccoli symlink-or-copy "^1.0.0" walk-sync "^0.3.1" -broccoli-funnel@^2.0.0: +broccoli-funnel@^2.0.0, broccoli-funnel@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-2.0.1.tgz#6823c73b675ef78fffa7ab800f083e768b51d449" dependencies: @@ -1525,6 +1532,12 @@ commander@^2.6.0, commander@~2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +common-tags@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0" + dependencies: + babel-runtime "^6.18.0" + component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -1809,6 +1822,23 @@ ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.6.0, e clone "^2.0.0" ember-cli-version-checker "^2.0.0" +ember-cli-babel@^6.3.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.9.0.tgz#5147391389bdbb7091d15f81ae1dff1eb49d71aa" + dependencies: + amd-name-resolver "0.0.7" + babel-plugin-debug-macros "^0.1.11" + babel-plugin-ember-modules-api-polyfill "^2.0.1" + babel-plugin-transform-es2015-modules-amd "^6.24.0" + babel-polyfill "^6.16.0" + babel-preset-env "^1.5.1" + broccoli-babel-transpiler "^6.1.2" + broccoli-debug "^0.6.2" + broccoli-funnel "^1.0.0" + broccoli-source "^1.1.0" + clone "^2.0.0" + ember-cli-version-checker "^2.1.0" + ember-cli-broccoli-sane-watcher@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/ember-cli-broccoli-sane-watcher/-/ember-cli-broccoli-sane-watcher-2.0.4.tgz#f43f42f75b7509c212fb926cd9aea86ae19264c6" @@ -1924,20 +1954,12 @@ ember-cli-preprocess-registry@^3.1.0: process-relative-require "^1.0.0" silent-error "^1.0.0" -ember-cli-qunit@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/ember-cli-qunit/-/ember-cli-qunit-4.0.1.tgz#905aa07620ae9fdb417c7e48d45bd2277b62f864" +ember-cli-qunit@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ember-cli-qunit/-/ember-cli-qunit-4.1.1.tgz#307a157e9f36a0d32621ae247effb891ff951fc7" dependencies: - broccoli-funnel "^2.0.0" - broccoli-merge-trees "^2.0.0" ember-cli-babel "^6.8.1" - ember-cli-test-loader "^2.2.0" - ember-cli-version-checker "^2.0.0" - ember-qunit "^2.2.0" - qunit-notifications "^0.1.1" - qunitjs "^2.4.0" - resolve "^1.4.0" - silent-error "^1.1.0" + ember-qunit "^3.1.0" ember-cli-shims@^1.1.0: version "1.1.0" @@ -2100,11 +2122,17 @@ ember-load-initializers@^1.0.0: dependencies: ember-cli-babel "^6.0.0-beta.7" -ember-qunit@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-2.2.0.tgz#3cdf400031c93a38de781a7304819738753b7f99" +ember-qunit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.1.0.tgz#4995a6207ab66b5d0cf807d0459d48f55f9eee5f" dependencies: - ember-test-helpers "^0.6.3" + "@ember/test-helpers" "^0.7.1" + broccoli-funnel "^2.0.1" + broccoli-merge-trees "^2.0.0" + common-tags "^1.4.0" + ember-cli-babel "^6.3.0" + ember-cli-test-loader "^2.2.0" + qunit "^2.4.1" ember-resolver@^4.0.0: version "4.5.0" @@ -2155,10 +2183,6 @@ ember-source@~2.16.0: simple-dom "^0.3.0" simple-html-tokenizer "^0.4.1" -ember-test-helpers@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/ember-test-helpers/-/ember-test-helpers-0.6.3.tgz#f864cdf6f4e75f3f8768d6537785b5ab6e82d907" - ember-try-config@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/ember-try-config/-/ember-try-config-2.1.0.tgz#e0e156229a542346a58ee6f6ad605104c98edfe0" @@ -4314,13 +4338,9 @@ quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8: rimraf "^2.5.4" underscore.string "~3.3.4" -qunit-notifications@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/qunit-notifications/-/qunit-notifications-0.1.1.tgz#3001afc6a6a77dfbd962ccbcddde12dec5286c09" - -qunitjs@^2.4.0: +qunit@^2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/qunitjs/-/qunitjs-2.4.1.tgz#88aba055a9e2ec3dbebfaad02471b2cb002c530b" + resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.4.1.tgz#373c826b3b91795f3e5479cc94f0f6fa14dedc47" dependencies: chokidar "1.6.1" commander "2.9.0" From 35a5140c9342f12a9c3431969f156a99f33d796b Mon Sep 17 00:00:00 2001 From: Tobias Bieniek Date: Tue, 14 Nov 2017 12:27:36 +0100 Subject: [PATCH 2/3] Add `ember-maybe-import-regenerator-for-testing` dev dependency --- package.json | 1 + yarn.lock | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/package.json b/package.json index 18e57b0..781d157 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "ember-disable-prototype-extensions": "^1.1.2", "ember-export-application-global": "^2.0.0", "ember-load-initializers": "^1.0.0", + "ember-maybe-import-regenerator-for-testing": "^1.0.0", "ember-resolver": "^4.0.0", "ember-source": "~2.16.0", "loader.js": "^4.2.3" diff --git a/yarn.lock b/yarn.lock index eb7dc44..bfb3dfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2122,6 +2122,14 @@ ember-load-initializers@^1.0.0: dependencies: ember-cli-babel "^6.0.0-beta.7" +ember-maybe-import-regenerator-for-testing@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ember-maybe-import-regenerator-for-testing/-/ember-maybe-import-regenerator-for-testing-1.0.0.tgz#894b8089c5b3067c920b492c81233603852d5c2f" + dependencies: + broccoli-funnel "^1.0.1" + ember-cli-babel "^6.6.0" + regenerator-runtime "^0.9.5" + ember-qunit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.1.0.tgz#4995a6207ab66b5d0cf807d0459d48f55f9eee5f" @@ -4443,6 +4451,10 @@ regenerator-runtime@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" +regenerator-runtime@^0.9.5: + version "0.9.6" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" From de4addf27f43dd2e995a0e1ef4b98921676a120a Mon Sep 17 00:00:00 2001 From: Tobias Bieniek Date: Tue, 14 Nov 2017 12:29:38 +0100 Subject: [PATCH 3/3] Use new QUnit testing API --- tests/integration/did-change-attrs-test.js | 162 +++++++++++---------- 1 file changed, 82 insertions(+), 80 deletions(-) diff --git a/tests/integration/did-change-attrs-test.js b/tests/integration/did-change-attrs-test.js index 5636f31..aea8380 100644 --- a/tests/integration/did-change-attrs-test.js +++ b/tests/integration/did-change-attrs-test.js @@ -1,110 +1,112 @@ import Ember from 'ember'; -import { test, moduleForComponent } from 'ember-qunit'; +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from 'ember-test-helpers'; import hbs from 'htmlbars-inline-precompile'; import DidChangeAttrs from 'ember-did-change-attrs'; -function registerComponent(testSuite, hash, klass = Ember.Component) { - testSuite.register('component:x-changer', klass.extend(DidChangeAttrs, hash)); +function registerComponent(owner, hash, klass = Ember.Component) { + owner.register('component:x-changer', klass.extend(DidChangeAttrs, hash)); } -moduleForComponent('x-changer', 'Integration | DidChangeAttrs', { - integration: true -}); - -test('Basic usage', function(assert) { - let changedAttrs, didChangeAttrsCallCount = 0; +module('Integration | DidChangeAttrs', function(hooks) { + setupRenderingTest(hooks); - registerComponent(this, { - didChangeAttrsConfig: { - attrs: ['email', 'isAdmin'] - }, + test('Basic usage', async function(assert) { + let changedAttrs, didChangeAttrsCallCount = 0; - didChangeAttrs(changes) { - this._super(...arguments); + registerComponent(this.owner, { + didChangeAttrsConfig: { + attrs: ['email', 'isAdmin'] + }, - didChangeAttrsCallCount++; - changedAttrs = changes; - } - }); + didChangeAttrs(changes) { + this._super(...arguments); - this.set('name', 'Tomster'); - this.set('email', 'ember@hamster.org'); - this.set('isAdmin', false); + didChangeAttrsCallCount++; + changedAttrs = changes; + } + }); - this.render(hbs`{{x-changer email=email isAdmin=isAdmin name=name}}`); + this.set('name', 'Tomster'); + this.set('email', 'ember@hamster.org'); + this.set('isAdmin', false); - assert.equal(didChangeAttrsCallCount, 0, '`didChangeAttrs` is not called on initial render'); + await render(hbs`{{x-changer email=email isAdmin=isAdmin name=name}}`); - this.set('email', 'emberjs@hamster.org'); - assert.equal(didChangeAttrsCallCount, 1, '`didChangeAttrs` is called when an attribute changed'); + assert.equal(didChangeAttrsCallCount, 0, '`didChangeAttrs` is not called on initial render'); - assert.deepEqual(changedAttrs, { - email: { - previous: 'ember@hamster.org', - current: 'emberjs@hamster.org' - } - }, '`changedAttrs` contains the attribute changes'); + this.set('email', 'emberjs@hamster.org'); + assert.equal(didChangeAttrsCallCount, 1, '`didChangeAttrs` is called when an attribute changed'); - this.set('name', 'TheTomster'); - assert.equal(didChangeAttrsCallCount, 1, '`didChangeAttrs` is not called when an untracked attribute is changed'); -}); + assert.deepEqual(changedAttrs, { + email: { + previous: 'ember@hamster.org', + current: 'emberjs@hamster.org' + } + }, '`changedAttrs` contains the attribute changes'); -test('Custom isEqual', function(assert) { - let changedAttrs, didChangeAttrsCallCount = 0; + this.set('name', 'TheTomster'); + assert.equal(didChangeAttrsCallCount, 1, '`didChangeAttrs` is not called when an untracked attribute is changed'); + }); - registerComponent(this, { - didChangeAttrsConfig: { - attrs: ['user', 'isAdmin'], - isEqual(key, a, b) { - if (key === 'user') { - return (a && b) ? a.id === b.id : a === b; + test('Custom isEqual', async function(assert) { + let changedAttrs, didChangeAttrsCallCount = 0; + + registerComponent(this.owner, { + didChangeAttrsConfig: { + attrs: ['user', 'isAdmin'], + isEqual(key, a, b) { + if (key === 'user') { + return (a && b) ? a.id === b.id : a === b; + } + return a === b; } - return a === b; + }, + + didChangeAttrs(changes) { + this._super(...arguments); + + didChangeAttrsCallCount++; + changedAttrs = changes; } - }, + }); - didChangeAttrs(changes) { - this._super(...arguments); + this.set('user', { name: 'Tomster', id: '123' }); + this.set('isAdmin', false); - didChangeAttrsCallCount++; - changedAttrs = changes; - } - }); + await render(hbs`{{x-changer user=user isAdmin=isAdmin}}`); - this.set('user', { name: 'Tomster', id: '123' }); - this.set('isAdmin', false); + assert.equal(didChangeAttrsCallCount, 0, '`didChangeAttrs` is not called on initial render'); - this.render(hbs`{{x-changer user=user isAdmin=isAdmin}}`); + this.set('user', { name: 'TheTomster', id: '123' }); - assert.equal(didChangeAttrsCallCount, 0, '`didChangeAttrs` is not called on initial render'); + assert.equal(didChangeAttrsCallCount, 0, '`didChangeAttrs` is not called because user entities are equal'); - this.set('user', { name: 'TheTomster', id: '123' }); + this.set('user', { name: 'Zoey', id: '456' }); - assert.equal(didChangeAttrsCallCount, 0, '`didChangeAttrs` is not called because user entities are equal'); + assert.equal(didChangeAttrsCallCount, 1, '`didChangeAttrs` is called because user entities are not equal'); + assert.deepEqual(changedAttrs, { + user: { + previous: { + id: '123', + name: 'Tomster' + }, + current: { + id: '456', + name: 'Zoey' + } + } + }, '`user` included in `changedAttrs` because `user.id` is different'); - this.set('user', { name: 'Zoey', id: '456' }); + this.set('isAdmin', true); - assert.equal(didChangeAttrsCallCount, 1, '`didChangeAttrs` is called because user entities are not equal'); - assert.deepEqual(changedAttrs, { - user: { - previous: { - id: '123', - name: 'Tomster' - }, - current: { - id: '456', - name: 'Zoey' + assert.equal(didChangeAttrsCallCount, 2, '`didChangeAttrs` is called because isAdmin changed'); + assert.deepEqual(changedAttrs, { + isAdmin: { + previous: false, + current: true } - } - }, '`user` included in `changedAttrs` because `user.id` is different'); - - this.set('isAdmin', true); - - assert.equal(didChangeAttrsCallCount, 2, '`didChangeAttrs` is called because isAdmin changed'); - assert.deepEqual(changedAttrs, { - isAdmin: { - previous: false, - current: true - } - }, '`isAdmin` included in `changedAttrs` because it changed'); + }, '`isAdmin` included in `changedAttrs` because it changed'); + }); });