Chrisneuroth has uploaded a new change for review. (
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 package.json
M tests/jasmine/GlossWidget.spec.js
2 files changed, 22 insertions(+), 22 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme
refs/changes/00/367700/1
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 9ba2ed3..bed3c06 100644
--- a/tests/jasmine/GlossWidget.spec.js
+++ b/tests/jasmine/GlossWidget.spec.js
@@ -1,7 +1,6 @@
describe( 'wikibase.lexeme.widgets.GlossWidget', function () {
require( 'jsdom-global' )();
-
global.mediaWiki = {
messages: {
get: function ( message ) {
@@ -19,10 +18,12 @@
}
};
+ var expect = require( 'unexpected' ).clone();
+ expect.installPlugin( require( 'unexpected-dom' ) );
+ var GlossWidget = require( 'wikibase.lexeme.widgets.GlossWidget' );
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 () {
@@ -31,7 +32,7 @@
widget.edit();
- expect( widget.glosses[ 0 ] ).toEqual( emptyGloss );
+ expect( widget.glosses[ 0 ], 'to equal', emptyGloss );
}
);
@@ -44,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();
} );
} );
@@ -114,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 + ': ';
@@ -128,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;
@@ -162,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;
@@ -175,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: newchange
Gerrit-Change-Id: I5cd3e30b1461fb46b4a159c111e08005d956ee78
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: Chrisneuroth <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits