Skip to content

Commit

Permalink
Merge pull request #12 from Turbo87/refactor
Browse files Browse the repository at this point in the history
Refactoring of the internals
  • Loading branch information
Turbo87 authored Oct 8, 2017
2 parents f9ed0a9 + 79d919a commit cb56771
Show file tree
Hide file tree
Showing 18 changed files with 90 additions and 69 deletions.
13 changes: 12 additions & 1 deletion .babelrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
{
"plugins": ["transform-es2015-modules-commonjs"]
"presets": [
["env", {
"modules": false
}]
],
"env": {
"test": {
"plugins": [
"transform-es2015-modules-commonjs"
]
}
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
40 changes: 34 additions & 6 deletions lib/assertions.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export default class DOMAssertions {
* assert.dom('.choice').exists({ count: 4 });
*/
exists(options, message) {
exists.call(this, this.target, options, message);
exists.call(this, options, message);
}

/**
Expand All @@ -34,7 +34,7 @@ export default class DOMAssertions {
* assert.dom('.should-not-exist').doesNotExist();
*/
doesNotExist(message) {
exists.call(this, this.target, { count: 0 }, message);
exists.call(this, { count: 0 }, message);
}

/**
Expand All @@ -47,7 +47,7 @@ export default class DOMAssertions {
* assert.dom('input.email').isFocused();
*/
isFocused(message) {
focused.call(this, this.target, message);
focused.call(this, message);
}

/**
Expand All @@ -60,7 +60,7 @@ export default class DOMAssertions {
* assert.dom('input[type="password"]').isNotFocused();
*/
isNotFocused(message) {
notFocused.call(this, this.target, message);
notFocused.call(this, message);
}

/**
Expand All @@ -76,7 +76,7 @@ export default class DOMAssertions {
* assert.dom('#title').textContains('Welcome');
*/
textContains(text, message) {
textContains.call(this, this.target, text, message);
textContains.call(this, text, message);
}

/**
Expand All @@ -92,7 +92,7 @@ export default class DOMAssertions {
* assert.dom('.foo').textMatches(/[12]\d{3}/);
*/
textMatches(regex, message) {
textMatches.call(this, this.target, regex, message);
textMatches.call(this, regex, message);
}

/**
Expand All @@ -101,4 +101,32 @@ export default class DOMAssertions {
pushResult(result) {
this.testContext.pushResult(result);
}

/**
* @private
*/
findTargetElement() {
if (this.target === null) {
let message = `Element <unknown> exists`;
this.pushResult({ message, result: false });
return null;
}

if (typeof this.target === 'string') {
let el = this.rootElement.querySelector(this.target);

if (el === null) {
let message = `Element ${this.target || '<unknown>'} exists`;
this.pushResult({ message, result: false });
}

return el;

} else if (this.target instanceof HTMLElement) {
return this.target;

} else {
throw new TypeError(`Unexpected Parameter: ${this.target}`)
}
}
}
16 changes: 8 additions & 8 deletions lib/assertions/exists.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
function exists(selector, options, message) {
if (typeof selector !== 'string') {
throw new TypeError(`Unexpected Parameter: ${selector}`)
function exists(options, message) {
if (typeof this.target !== 'string') {
throw new TypeError(`Unexpected Parameter: ${this.target}`)
}

if (typeof options === 'string') {
message = options;
options = undefined;
}

let elements = this.rootElement.querySelectorAll(selector);
let elements = this.rootElement.querySelectorAll(this.target);

let expectedCount = options ? options.count : null;

if (expectedCount === null) {
let result = elements.length > 0;
let expected = format(selector);
let actual = result ? expected : format(selector, 0);
let expected = format(this.target);
let actual = result ? expected : format(this.target, 0);

if (!message) {
message = expected;
Expand All @@ -25,8 +25,8 @@ function exists(selector, options, message) {

} else if (typeof expectedCount === 'number') {
let result = elements.length === expectedCount;
let actual = format(selector, elements.length);
let expected = format(selector, expectedCount);
let actual = format(this.target, elements.length);
let expected = format(this.target, expectedCount);

if (!message) {
message = expected;
Expand Down
7 changes: 3 additions & 4 deletions lib/assertions/focused.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
const find = require('../helpers/find');
const elementToString = require('../helpers/element-to-string');

function focused(el, message) {
let element = find.call(this, el);
function focused(message) {
let element = this.findTargetElement();
if (!element) return;

let result = document.activeElement === element;
let actual = elementToString(document.activeElement);
let expected = elementToString(el);
let expected = elementToString(this.target);

if (!message) {
message = `Element ${expected} is focused`;
Expand Down
7 changes: 3 additions & 4 deletions lib/assertions/not-focused.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
const find = require('../helpers/find');
const elementToString = require('../helpers/element-to-string');

function notFocused(el, message) {
let element = find.call(this, el);
function notFocused(message) {
let element = this.findTargetElement();
if (!element) return;

let result = document.activeElement !== element;

if (!message) {
message = `Element ${elementToString(el)} is not focused`;
message = `Element ${elementToString(this.target)} is not focused`;
}

this.pushResult({ result, message });
Expand Down
7 changes: 3 additions & 4 deletions lib/assertions/text-contains.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
const find = require('../helpers/find');
const elementToString = require('../helpers/element-to-string');

function textContains(el, text, message) {
let element = find.call(this, el);
function textContains(text, message) {
let element = this.findTargetElement();
if (!element) return;

let result = element.textContent.indexOf(text) !== -1;
let actual = element.textContent;
let expected = text;

if (!message) {
message = `Element ${elementToString(el)} contains "${text}"`;
message = `Element ${elementToString(this.target)} contains "${text}"`;
}

this.pushResult({ result, actual, expected, message });
Expand Down
7 changes: 3 additions & 4 deletions lib/assertions/text-matches.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
const find = require('../helpers/find');
const elementToString = require('../helpers/element-to-string');

function textContains(el, regex, message) {
let element = find.call(this, el);
function textContains(regex, message) {
let element = this.findTargetElement();
if (!element) return;

let result = regex.test(element.textContent);
let actual = element.textContent;
let expected = regex;

if (!message) {
message = `Element ${elementToString(el)} matches ${regex}`;
message = `Element ${elementToString(this.target)} matches ${regex}`;
}

this.pushResult({ result, actual, expected, message });
Expand Down
10 changes: 0 additions & 10 deletions lib/helpers/ensure-element.js

This file was deleted.

27 changes: 0 additions & 27 deletions lib/helpers/find.js

This file was deleted.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
},
"devDependencies": {
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
"babel-preset-env": "^1.6.0",
"documentation": "^5.3.2",
"ember-cli": "~2.15.0-beta.2",
"ember-cli-babel": "^6.6.0",
Expand All @@ -48,6 +49,7 @@
"jest": "^20.0.4",
"loader.js": "^4.2.3",
"rollup": "^0.49.2",
"rollup-plugin-babel": "^3.0.2",
"rollup-plugin-commonjs": "^8.2.0"
},
"engines": {
Expand Down
4 changes: 4 additions & 0 deletions rollup.config.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import babel from 'rollup-plugin-babel';
import commonjs from 'rollup-plugin-commonjs';

export default {
input: 'lib/qunit-dom.js',

external: ['qunit'],
plugins: [
babel({
exclude: 'node_modules/**'
}),
commonjs(),
],

Expand Down
19 changes: 18 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -991,7 +991,7 @@ babel-polyfill@^6.16.0:
core-js "^2.5.0"
regenerator-runtime "^0.10.5"

babel-preset-env@^1.5.1:
babel-preset-env@^1.5.1, babel-preset-env@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4"
dependencies:
Expand Down Expand Up @@ -2914,6 +2914,10 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"

estree-walker@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"

estree-walker@^0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa"
Expand Down Expand Up @@ -6327,6 +6331,12 @@ rimraf@~2.2.6:
version "2.2.8"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"

rollup-plugin-babel@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-3.0.2.tgz#a2765dea0eaa8aece351c983573300d17497495b"
dependencies:
rollup-pluginutils "^1.5.0"

rollup-plugin-commonjs@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.0.tgz#d7b16ebb9a36b754df888fc552dfa775c1174f9d"
Expand All @@ -6337,6 +6347,13 @@ rollup-plugin-commonjs@^8.2.0:
resolve "^1.4.0"
rollup-pluginutils "^2.0.1"

rollup-pluginutils@^1.5.0:
version "1.5.2"
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
dependencies:
estree-walker "^0.2.1"
minimatch "^3.0.2"

rollup-pluginutils@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz#7ec95b3573f6543a46a6461bd9a7c544525d0fc0"
Expand Down

0 comments on commit cb56771

Please sign in to comment.