jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/367700 )
Change subject: Replace jasmine expect and custom finders with unexpected-dom
......................................................................
Replace jasmine expect and custom finders with unexpected-dom
unexpected-dom
- already solves most of our custom use cases
- has (arguably) better readability at the cost of string-y API
- allows to compose assertions
- provides great error messages when tests fail
- decouples assertions from the surrounding test runner
Change-Id: I5cd3e30b1461fb46b4a159c111e08005d956ee78
---
M .eslintrc.json
M package.json
M tests/jasmine/GlossWidget.spec.js
3 files changed, 23 insertions(+), 23 deletions(-)
Approvals:
Aleksey Bekh-Ivanov (WMDE): Looks good to me, approved
jenkins-bot: Verified
diff --git a/.eslintrc.json b/.eslintrc.json
index 3b970f6..fb37ad9 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -16,8 +16,7 @@
"Promise": false,
"global": false,
"describe": false,
- "it": false,
- "expect": false
+ "it": false
},
"rules": {
"dot-notation": "off",
diff --git a/package.json b/package.json
index 3e7950b..13172b3 100644
--- a/package.json
+++ b/package.json
@@ -15,6 +15,8 @@
"jsdom": "^11.1.0",
"jsdom-global": "^3.0.2",
"module-alias": "^2.0.0",
+ "unexpected": "^10.32.1",
+ "unexpected-dom": "^4.0.0",
"vue": "2.3.3"
},
"_moduleAliases": {
diff --git a/tests/jasmine/GlossWidget.spec.js
b/tests/jasmine/GlossWidget.spec.js
index 43e6f9f..73ed5e0 100644
--- a/tests/jasmine/GlossWidget.spec.js
+++ b/tests/jasmine/GlossWidget.spec.js
@@ -18,10 +18,12 @@
}
};
+ var expect = require( 'unexpected' ).clone();
+ expect.installPlugin( require( 'unexpected-dom' ) );
var Vue = global.Vue = require( 'vue/dist/vue.js' );
global.Vuex = {};
-
var GlossWidget = require( 'wikibase.lexeme.widgets.GlossWidget' );
+
it(
'create with no glosses - when switched to edit mode empty
gloss is added',
function () {
@@ -30,7 +32,7 @@
widget.edit();
- expect( widget.glosses[ 0 ] ).toEqual( emptyGloss );
+ expect( widget.glosses[ 0 ], 'to equal', emptyGloss );
}
);
@@ -43,6 +45,7 @@
widget.$nextTick( function () {
assertWidget( widget ).when( 'switched to edit mode'
).isInEditMode();
assertWidget( widget ).when( 'switched to edit mode'
).dom.hasAtLeastOneInputField();
+ expect( widget.$el, 'to contain elements matching',
'input' );
done();
} );
} );
@@ -113,13 +116,17 @@
glossLanguage:
'.wikibase-lexeme-sense-gloss-language'
};
+ expect.addAssertion( '<DOMElement> to have trimmed text
<string>', function ( expect, subject, value ) {
+ expect( subject.textContent.trim(), 'to equal', value );
+ } );
+
return {
isInEditMode: function () {
- expect( widget.inEditMode ).toBe( true, when +
'is in edit mode' );
+ expect( widget.inEditMode, 'to be true' );
},
isNotInEditMode: function () {
- expect( widget.inEditMode ).toBe( false, when +
'is not in edit mode' );
+ expect( widget.inEditMode, 'to be false' );
},
when: function ( text ) {
when = 'when ' + text + ': ';
@@ -127,26 +134,18 @@
},
dom: {
hasNoInputFields: function () {
- expect( widget.$el.querySelectorAll(
'input' ).length )
- .toEqual( 0, when + 'DOM has no
input fields' );
+ expect( widget.$el, 'to contain no
elements matching', 'input' );
},
hasAtLeastOneInputField: function () {
- expect( widget.$el.querySelectorAll(
'input' ).length )
- .toBeGreaterThan( 0, when +
'has at least one input in DOM ' );
+ expect( widget.$el, 'to contain
elements matching', 'input' );
},
containsGloss: function ( value, language ) {
- var found = false;
- widget.$el.querySelectorAll(
selector.gloss ).forEach( function ( element ) {
- var domValue =
element.querySelector( selector.glossValue ).textContent;
- var domLanguage =
element.querySelector( selector.glossLanguage ).textContent;
- found = found ||
- domValue.trim() ===
value &&
- domLanguage.trim() ===
language;
- } );
+ var assertGloss = function ( element ) {
+ expect( element, 'queried for
first', selector.glossValue, 'to have trimmed text', value );
+ expect( element, 'queried for
first', selector.glossLanguage, 'to have trimmed text', language );
+ };
- var message = when + 'DOM contains
gloss with value "' + value +
- '" and language "' + language +
'"';
- expect( found ).toBe( true, message );
+ expect( widget.$el, 'queried for',
selector.gloss, 'to have an item satisfying', assertGloss );
},
containsInputsWithGloss: function ( value,
language ) {
var found = false;
@@ -161,7 +160,7 @@
var message = when + 'DOM contains
inputs with gloss having value "' + value +
'" and language "' + language +
'"';
- expect( found ).toBe( true, message );
+ expect( found, 'to be true' );
},
doesntContainInputsWithGloss: function ( value,
language ) {
var found = false;
@@ -174,7 +173,7 @@
var message = when + 'DOM doesn\'t
contain inputs with gloss ' +
'having value "' + value + '"
and language "' + language + '"';
- expect( found ).toBe( false, message );
+ expect( found, 'to be false' );
}
}
--
To view, visit https://gerrit.wikimedia.org/r/367700
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I5cd3e30b1461fb46b4a159c111e08005d956ee78
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: Chrisneuroth <[email protected]>
Gerrit-Reviewer: Aleksey Bekh-Ivanov (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits