WMDE-leszek has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/372850 )

Change subject: Migrate LemmaWidget tests to jasmine
......................................................................

Migrate LemmaWidget tests to jasmine

Co-authored with Chris Neuroth and Jonas Kress.

Change-Id: I427407136aae7e091eb931c01ac1c6209e326692
---
M package.json
A tests/jasmine/LemmaWidget.spec.js
R tests/jasmine/LemmaWidgetStore.spec.js
D tests/qunit/widgets/LemmaWidget.tests.js
4 files changed, 191 insertions(+), 228 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme 
refs/changes/50/372850/1

diff --git a/package.json b/package.json
index 9885f56..b5fed2d 100644
--- a/package.json
+++ b/package.json
@@ -14,12 +14,18 @@
     "jsdom": "^11.1.0",
     "jsdom-global": "^3.0.2",
     "module-alias": "^2.0.0",
+    "sinon": "^3.2.1",
     "unexpected": "^10.32.1",
     "unexpected-dom": "^4.0.0",
-    "vue": "2.3.3"
+    "vue": "2.3.3",
+    "vuex": "^2.3.1"
   },
   "_moduleAliases": {
     "wikibase.lexeme.widgets.GlossWidget": 
"./resources/widgets/GlossWidget.js",
-    "wikibase.lexeme.widgets.RepresentationWidget": 
"./resources/widgets/RepresentationWidget.js"
+    "wikibase.lexeme.widgets.RepresentationWidget": 
"./resources/widgets/RepresentationWidget.js",
+    "wikibase.lexeme.widgets.LemmaWidget": 
"./resources/widgets/LemmaWidget.js",
+    "wikibase.lexeme.widgets.LemmaWidget.newLemmaWidget": 
"./resources/widgets/LemmaWidget.newLemmaWidget.js",
+    "wikibase.lexeme.widgets.LemmaWidget.newLemmaWidgetStore": 
"./resources/widgets/LemmaWidget.newLemmaWidgetStore.js",
+    "wikibase.lexeme.datamodel.Lemma": "./resources/datamodel/Lemma.js"
   }
 }
diff --git a/tests/jasmine/LemmaWidget.spec.js 
b/tests/jasmine/LemmaWidget.spec.js
new file mode 100644
index 0000000..d52c4cd
--- /dev/null
+++ b/tests/jasmine/LemmaWidget.spec.js
@@ -0,0 +1,151 @@
+/**
+ * @license GPL-2.0+
+ */
+describe( 'wikibase.lexeme.widgets.LemmaWidget', function () {
+       var sinon = require( 'sinon' );
+       var expect = require( 'unexpected' ).clone();
+       expect.installPlugin( require( 'unexpected-dom' ) );
+
+       var Vue = global.Vue = require( 'vue/dist/vue.js' );
+       var Vuex = global.Vuex = require( 'vuex/dist/vuex.js' );
+       Vue.use( Vuex );
+
+       var newLemmaWidget = require( 
'wikibase.lexeme.widgets.LemmaWidget.newLemmaWidget' );
+       var newLemmaWidgetStore = require( 
'wikibase.lexeme.widgets.LemmaWidget.newLemmaWidgetStore' );
+       var Lemma = require( 'wikibase.lexeme.datamodel.Lemma' );
+
+       it( 'initialize widget with one lemma', function () {
+               var widget = newWidget( [ new Lemma( 'hello', 'en' ) ] );
+
+               assertWidget( widget ).when( 'created' ).dom.containsLemma( 
'hello', 'en' );
+       } );
+
+       it( 'switch to edit mode', function ( done ) {
+               var     widget = newWidget( [ new Lemma( 'hello', 'en' ) ] );
+
+               assertWidget( widget ).when( 'created' ).dom.hasNoInputFields();
+
+               widget.edit();
+               widget.$nextTick( function () {
+                       assertWidget( widget ).when( 'switched to edit mode' 
).isInEditMode();
+                       assertWidget( widget ).when( 'switched to edit mode' 
).dom.hasAtLeastOneInputField();
+                       done();
+               } );
+       } );
+
+       it( 'cancel edit mode', function ( done ) {
+               var widget = newWidget( [ new Lemma( 'hello', 'en' ) ] );
+
+               widget.edit();
+               widget.cancel();
+               widget.$nextTick( function () {
+                       assertWidget( widget ).when( 'canceled the edit mode' 
).dom.hasNoInputFields();
+                       done();
+               } );
+       } );
+
+       it( 'add a new lemma', function ( done ) {
+               var widget = newWidget( [ new Lemma( 'hello', 'en' ) ] );
+
+               assertWidget( widget ).when( 'created' ).dom.containsLemma( 
'hello', 'en' );
+               widget.add();
+               widget.$nextTick( function () {
+                       assertWidget( widget ).when( 'addition triggered' 
).dom.containsLemma( 'hello', 'en' );
+                       assertWidget( widget ).when( 'addition triggered' 
).dom.containsLemma( '', '' );
+                       done();
+               } );
+       } );
+
+       it( 'remove a lemma', function ( done ) {
+               var lemmaToRemove = new Lemma( 'hello', 'en' ),
+                       widget = newWidget( [ lemmaToRemove ] );
+
+               assertWidget( widget ).when( 'created' ).dom.containsLemma( 
'hello', 'en' );
+               widget.remove( lemmaToRemove );
+               widget.$nextTick( function () {
+                       assertWidget( widget ).when( 'lemma removed' 
).dom.containsNoLemmas();
+                       done();
+               } );
+       } );
+
+       it( 'save lemma list', function ( done ) {
+               var lemmas = [ new Lemma( 'hello', 'en' ) ],
+                       store = newStore( lemmas ),
+                       widget = newWidgetWithStore( store ),
+                       storeSpy = sinon.stub( store, 'dispatch' ).callsFake( 
function () {
+                               return Promise.resolve();
+                       } );
+
+               widget.edit();
+               widget.save().then( function () {
+                       expect( storeSpy.called, 'to be true' );
+                       expect( storeSpy.calledWith( 'save', lemmas ), 'to be 
true' );
+                       assertWidget( widget ).when( 'saved' 
).isNotInEditMode();
+                       done();
+               } );
+       } );
+
+       function newWidget( initialLemmas ) {
+               return newWidgetWithStore( newStore( initialLemmas ) );
+       }
+
+       function newStore( initialLemmas ) {
+               return new Vuex.Store( newLemmaWidgetStore( {}, initialLemmas, 
'', 0 ) );
+       }
+
+       function newWidgetWithStore( store ) {
+               var element = document.createElement( 'div' );
+
+               return new Vue( newLemmaWidget( store, element, getTemplate() ) 
);
+       }
+
+       function assertWidget( widget ) {
+               var when = '',
+                       selector = {
+                               lemma: '.lemma-widget_lemma',
+                               lemmaValue: '.lemma-widget_lemma-value',
+                               lemmaLanguage: '.lemma-widget_lemma-language'
+                       };
+
+               return {
+                       isInEditMode: function () {
+                               expect( widget.inEditMode, 'to be true' );
+                       },
+                       isNotInEditMode: function () {
+                               expect( widget.inEditMode, 'to be false' );
+                       },
+                       when: function ( text ) {
+                               when = 'when ' + text + ': ';
+                               return this;
+                       },
+                       dom: {
+                               hasNoInputFields: function () {
+                                       expect( widget.$el, 'to contain no 
elements matching', 'input' );
+                               },
+                               hasAtLeastOneInputField: function () {
+                                       expect( widget.$el, 'to contain 
elements matching', 'input' );
+                               },
+                               containsNoLemmas: function () {
+                                       expect( widget.$el, 'to contain no 
elements matching', selector.lemma );
+                               },
+                               containsLemma: function ( value, language ) {
+                                       var found = false;
+                                       widget.$el.querySelectorAll( 
selector.lemma ).forEach( function ( element ) {
+                                               var lemmaValue = 
element.querySelector( selector.lemmaValue ).textContent,
+                                                       lemmaLanguage = 
element.querySelector( selector.lemmaLanguage ).textContent;
+                                               found = found || lemmaValue === 
value && lemmaLanguage === language;
+                                       } );
+
+                                       expect( found, 'to be true' );
+                               }
+                       }
+
+               };
+       }
+
+       // FIXME: duplicated from LexemeView.php until it's reusable
+       function getTemplate() {
+               return '<div class="lemma-widget">\n    <ul v-if="!inEditMode" 
class="lemma-widget_lemma-list">\n        <li v-for="lemma in lemmas" 
class="lemma-widget_lemma">\n            <span 
class="lemma-widget_lemma-value">{{lemma.value}}</span>\n            <span 
class="lemma-widget_lemma-language">{{lemma.language}}</span>\n        </li>\n  
  </ul>\n    <div v-else>\n        <div class="lemma-widget_edit-area">\n       
     <ul class="lemma-widget_lemma-list">\n                <li v-for="lemma in 
lemmas" class="lemma-widget_lemma-edit-box">\n                    <input 
size="1" class="lemma-widget_lemma-value-input" \n                        
v-model="lemma.value" :disabled="isSaving">\n                    <input 
size="1" class="lemma-widget_lemma-language-input" \n                        
v-model="lemma.language" :disabled="isSaving">\n                    <button 
class="lemma-widget_lemma-remove" v-on:click="remove(lemma)" \n                 
       :disabled="isSaving" :title="\'wikibase-remove\'|message">\n             
           &times;\n                    </button>\n                </li>\n      
          <li>\n                    <button type="button" 
class="lemma-widget_add" v-on:click="add" \n                        
:disabled="isSaving" :title="\'wikibase-add\'|message">+</button>\n             
   </li>\n            </ul>\n        </div>\n    </div>\n    <div 
class="lemma-widget_controls">\n        <button type="button" 
class="lemma-widget_control" v-if="!inEditMode" \n            
:disabled="isSaving" v-on:click="edit">{{\'wikibase-edit\'|message}}</button>\n 
       <button type="button" class="lemma-widget_control" v-if="inEditMode" \n  
          :disabled="isSaving" 
v-on:click="save">{{\'wikibase-save\'|message}}</button>\n        <button 
type="button" class="lemma-widget_control" v-if="inEditMode" \n            
:disabled="isSaving"  
v-on:click="cancel">{{\'wikibase-cancel\'|message}}</button>\n    
</div>\n</div>';
+
+       }
+} );
diff --git a/tests/qunit/widgets/LemmaWidgetStore.tests.js 
b/tests/jasmine/LemmaWidgetStore.spec.js
similarity index 69%
rename from tests/qunit/widgets/LemmaWidgetStore.tests.js
rename to tests/jasmine/LemmaWidgetStore.spec.js
index d784645..39efd7f 100644
--- a/tests/qunit/widgets/LemmaWidgetStore.tests.js
+++ b/tests/jasmine/LemmaWidgetStore.spec.js
@@ -1,10 +1,9 @@
 /**
  * @license GPL-2.0+
  */
-( function ( wb, $, QUnit, sinon ) {
-       'use strict';
-
-       QUnit.module( 'wikibase.lexeme.widgets.LemmaWidget.newLemmaWidgetStore' 
);
+describe( 'wikibase.lexeme.widgets.LemmaWidget.newLemmaWidgetStore', function 
() {
+       var sinon = require( 'sinon' );
+       var expect = require( 'unexpected' ).clone();
 
        /** @type {wikibase.lexeme.widgets.LemmaWidget.newLemmaWidgetStore} */
        var newLemmaWidgetStore = require( 
'wikibase.lexeme.widgets.LemmaWidget.newLemmaWidgetStore' );
@@ -12,31 +11,31 @@
 
        var mutations = newLemmaWidgetStore( {}, [], '', 0 ).mutations;
 
-       QUnit.test( 'mutation startSaving switches the isSaving flag to true', 
function ( assert ) {
+       it( 'mutation startSaving switches the isSaving flag to true', function 
() {
                var state = { isSaving: false };
 
                mutations.startSaving( state );
 
-               assert.ok( state.isSaving );
+               expect( state.isSaving, 'to be ok' );
        } );
 
-       QUnit.test( 'mutation finishSaving switches the isSaving flag to 
false', function ( assert ) {
+       it( 'mutation finishSaving switches the isSaving flag to false', 
function () {
                var state = { isSaving: true };
 
                mutations.finishSaving( state );
 
-               assert.notOk( state.isSaving );
+               expect( state.isSaving, 'not to be ok' );
        } );
 
-       QUnit.test( 'mutation updateRevisionId changes baseRevId to given 
value', function ( assert ) {
+       it( 'mutation updateRevisionId changes baseRevId to given value', 
function () {
                var state = { baseRevId: 1 };
 
                mutations.updateRevisionId( state, 2 );
 
-               assert.equal( 2, state.baseRevId );
+               expect( state.baseRevId, 'to be', 2 );
        } );
 
-       function newTestAction( assert ) {
+       function newTestAction( done ) {
 
                // helper for testing action with expected mutations
                return {
@@ -49,12 +48,11 @@
                                        { commit: commit, state: state },
                                        payload
                                ).catch( function ( error ) {
-                                       assert.notOk( error );
+                                       expect( error, 'not to be ok' );
                                } );
                        },
 
                        test: function testAction( action, payload, state, 
expectedMutations ) {
-                               var done = assert.async();
                                var count = 0;
 
                                // mock commit
@@ -62,15 +60,9 @@
                                        var mutation = expectedMutations[ count 
];
 
                                        try {
-                                               assert.equal( mutation.type, 
type, 'Mutation has correct type' );
-                                               // expect( mutation.type 
).to.equal( type );
+                                               expect( mutation.type, 'to 
equal', type );
                                                if ( payload ) {
-                                                       assert.deepEqual(
-                                                               
mutation.payload,
-                                                               payload,
-                                                               'Mutation was 
called with correct payload'
-                                                       );
-                                                       // expect( 
mutation.payload ).to.deep.equal( payload );
+                                                       expect( 
mutation.payload, 'to equal', payload );
                                                }
                                        } catch ( error ) {
                                                done( error );
@@ -87,17 +79,16 @@
 
                                // check if no mutations should have been 
dispatched
                                if ( expectedMutations.length === 0 ) {
-                                       assert.equal( 0, count );
-                                       // expect( count ).to.equal( 0 );
+                                       expect( count, 'to equal', 0 );
                                        done();
                                }
                        }
                };
        }
 
-       QUnit.test(
+       it(
                'action save on success mutates the state to start saving, 
updates revision, updates lemmas and finishes saving',
-               function ( assert ) {
+               function ( done ) {
                        var state = { isSaving: false, baseRevId: 1, lemmas: [] 
};
 
                        var newRevisionId = 2;
@@ -110,13 +101,13 @@
 
                        var repoApi = {
                                editEntity: function ( id, baseRevId, data, 
clear ) {
-                                       return $.Deferred().resolve( response 
).promise();
+                                       return Promise.resolve( response );
                                }
                        };
 
                        var actions = newLemmaWidgetStore( repoApi, [], '', 0 
).actions;
 
-                       newTestAction( assert ).test(
+                       newTestAction( done ).test(
                                actions.save,
                                [ new Lemma( 'lemma1', 'en' ) ],
                                state,
@@ -130,10 +121,9 @@
                }
        );
 
-       QUnit.test(
+       it(
                'action save calls API with correct parameters and changes 
state using data from response',
-               function ( assert ) {
-                       var done = assert.async();
+               function ( done ) {
                        var baseRevisionId = 0;
                        var state = { isSaving: false, baseRevId: 
baseRevisionId, lemmas: [] };
 
@@ -148,24 +138,24 @@
                        };
 
                        var editEntity = function ( id, baseRevId, data, clear 
) {
-                               return $.Deferred().resolve( response 
).promise();
+                               return Promise.resolve( response );
                        };
                        var repoApi = {
-                               editEntity: this.spy( editEntity )
+                               editEntity: sinon.spy( editEntity )
                        };
 
                        var lemmasToSave = [ new Lemma( 'lemma1', 'en' ) ];
 
                        var actions = newLemmaWidgetStore( repoApi, [], 
entityId, baseRevisionId ).actions;
-                       newTestAction( assert ).applyWithMutations(
+                       newTestAction( done ).applyWithMutations(
                                actions.save,
                                lemmasToSave,
                                state,
                                mutations
                        ).then( function () {
-                               assert.equal( newRevisionId, state.baseRevId );
-                               assert.deepEqual( [ { value: 'lemma1', 
language: 'en' } ], state.lemmas );
-                               assert.notOk( state.isSaving );
+                               expect( newRevisionId, 'to equal', 
state.baseRevId );
+                               expect( [ { value: 'lemma1', language: 'en' } 
], 'to equal', state.lemmas );
+                               expect( state.isSaving, 'not to be ok' );
 
                                sinon.assert.calledWith( repoApi.editEntity, 
entityId, baseRevisionId, { lemmas: lemmasToSave }, false );
                                done();
@@ -173,10 +163,9 @@
                }
        );
 
-       QUnit.test(
+       it(
                'action save calls API with correct parameters when removing an 
item from the state',
-               function ( assert ) {
-                       var done = assert.async();
+               function ( done ) {
                        var baseRevisionId = 1;
                        var state = { isSaving: false, baseRevId: 
baseRevisionId, lemmas: [ new Lemma( 'a lemma', 'en' ) ] };
 
@@ -191,17 +180,17 @@
                        };
 
                        var editEntity = function ( id, baseRevId, data, clear 
) {
-                               return $.Deferred().resolve( response 
).promise();
+                               return Promise.resolve( response );
                        };
                        var repoApi = {
-                               editEntity: this.spy( editEntity )
+                               editEntity: sinon.spy( editEntity )
                        };
 
                        var lemmasToSave = [];
                        var lemmasInApiRequest = [ { language: 'en', remove: '' 
} ];
 
                        var actions = newLemmaWidgetStore( repoApi, [], 
entityId, baseRevisionId ).actions;
-                       newTestAction( assert ).applyWithMutations(
+                       newTestAction( done ).applyWithMutations(
                                actions.save,
                                lemmasToSave,
                                state,
@@ -212,5 +201,4 @@
                        } );
                }
        );
-
-}( wikibase, jQuery, QUnit, sinon ) );
+} );
diff --git a/tests/qunit/widgets/LemmaWidget.tests.js 
b/tests/qunit/widgets/LemmaWidget.tests.js
deleted file mode 100644
index 0ea7004..0000000
--- a/tests/qunit/widgets/LemmaWidget.tests.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
- * @license GPL-2.0+
- */
-( function ( wb, $, QUnit, Vue, Vuex ) {
-       'use strict';
-
-       QUnit.module( 'wikibase.lexeme.widgets.LemmaWidget', 
setUpCustomAssertions() );
-
-       var newLemmaWidget = require( 
'wikibase.lexeme.widgets.LemmaWidget.newLemmaWidget' );
-       var newLemmaWidgetStore = require( 
'wikibase.lexeme.widgets.LemmaWidget.newLemmaWidgetStore' );
-       var Lemma = require( 'wikibase.lexeme.datamodel.Lemma' );
-
-       QUnit.test( 'initialize widget with one lemma', function ( assert ) {
-               var widget = newWidget( [ new Lemma( 'hello', 'en' ) ] );
-
-               assert.widget( widget ).when( 'created' ).dom.containsLemma( 
'hello', 'en' );
-       } );
-
-       QUnit.test( 'switch to edit mode', function ( assert ) {
-               var done = assert.async(),
-                       widget = newWidget( [ new Lemma( 'hello', 'en' ) ] );
-
-               assert.widget( widget ).when( 'created' 
).dom.hasNoInputFields();
-
-               widget.edit();
-               widget.$nextTick( function () {
-                       assert.widget( widget ).when( 'switched to edit mode' 
).isInEditMode();
-                       assert.widget( widget ).when( 'switched to edit mode' 
).dom.hasAtLeastOneInputField();
-                       done();
-               } );
-       } );
-
-       QUnit.test( 'cancel edit mode', function ( assert ) {
-               var done = assert.async(),
-                       widget = newWidget( [ new Lemma( 'hello', 'en' ) ] );
-
-               widget.edit();
-               widget.cancel();
-               widget.$nextTick( function () {
-                       assert.widget( widget ).when( 'canceled the edit mode' 
).dom.hasNoInputFields();
-                       done();
-               } );
-       } );
-
-       QUnit.test( 'add a new lemma', function ( assert ) {
-               var done = assert.async(),
-                       widget = newWidget( [ new Lemma( 'hello', 'en' ) ] );
-
-               assert.widget( widget ).when( 'created' ).dom.containsLemma( 
'hello', 'en' );
-               widget.add();
-               widget.$nextTick( function () {
-                       assert.widget( widget ).when( 'addition triggered' 
).dom.containsLemma( 'hello', 'en' );
-                       assert.widget( widget ).when( 'addition triggered' 
).dom.containsLemma( '', '' );
-                       done();
-               } );
-       } );
-
-       QUnit.test( 'remove a lemma', function ( assert ) {
-               var done = assert.async(),
-                       lemmaToRemove = new Lemma( 'hello', 'en' ),
-                       widget = newWidget( [ lemmaToRemove ] );
-
-               assert.widget( widget ).when( 'created' ).dom.containsLemma( 
'hello', 'en' );
-               widget.remove( lemmaToRemove );
-               widget.$nextTick( function () {
-                       assert.widget( widget ).when( 'lemma removed' 
).dom.containsNoLemmas();
-                       done();
-               } );
-       } );
-
-       QUnit.test( 'save lemma list', function ( assert ) {
-               var done = assert.async(),
-                       lemmas = [ new Lemma( 'hello', 'en' ) ],
-                       store = newStore( lemmas ),
-                       widget = newWidgetWithStore( store ),
-                       storeSpy = this.stub( store, 'dispatch', function () {
-                               return $.Deferred().resolve().promise();
-                       } );
-
-               widget.edit();
-               widget.save().then( function () {
-                       assert.ok( storeSpy.called );
-                       assert.ok( storeSpy.calledWith( 'save', lemmas ) );
-                       assert.widget( widget ).when( 'saved' 
).isNotInEditMode();
-                       done();
-               } );
-       } );
-
-       function newWidget( initialLemmas ) {
-               return newWidgetWithStore( newStore( initialLemmas ) );
-       }
-
-       function newStore( initialLemmas ) {
-               return new Vuex.Store( newLemmaWidgetStore( {}, initialLemmas, 
'', 0 ) );
-       }
-
-       function newWidgetWithStore( store ) {
-               var element = document.createElement( 'div' );
-
-               return new Vue( newLemmaWidget( store, element, getTemplate() ) 
);
-       }
-
-       function setUpCustomAssertions() {
-               return {
-                       setup: function () {
-                               QUnit.assert.widget = function assertWidget( 
widget ) {
-                                       var assert = this,
-                                               when = '',
-                                               selector = {
-                                                       lemma: 
'.lemma-widget_lemma',
-                                                       lemmaValue: 
'.lemma-widget_lemma-value',
-                                                       lemmaLanguage: 
'.lemma-widget_lemma-language'
-                                               };
-
-                                       return {
-                                               isInEditMode: function () {
-                                                       assert.ok( 
widget.inEditMode, when + 'is in edit mode' );
-                                               },
-                                               isNotInEditMode: function () {
-                                                       assert.notOk( 
widget.inEditMode, when + 'is not in edit mode' );
-                                               },
-                                               when: function ( text ) {
-                                                       when = 'when ' + text + 
': ';
-                                                       return this;
-                                               },
-                                               dom: {
-                                                       hasNoInputFields: 
function () {
-                                                               assert.equal(
-                                                                       $( 
widget.$el ).find( 'input' ).length,
-                                                                       0,
-                                                                       when + 
'DOM has no input fields'
-                                                               );
-                                                       },
-                                                       
hasAtLeastOneInputField: function () {
-                                                               assert.ok(
-                                                                       $( 
widget.$el ).find( 'input' ).length > 0,
-                                                                       when + 
'has at leas one input in DOM '
-                                                               );
-                                                       },
-                                                       containsNoLemmas: 
function () {
-                                                               assert.equal(
-                                                                       $( 
selector.lemma, widget.$el ).length,
-                                                                       0,
-                                                                       when + 
'DOM contains no lemmas'
-                                                               );
-                                                       },
-                                                       containsLemma: function 
( value, language ) {
-                                                               var found = 
false;
-                                                               $( 
selector.lemma, widget.$el ).each( function () {
-                                                                       var $el 
= $( this );
-                                                                       found = 
found ||
-                                                                               
$el.children( selector.lemmaValue ).text() === value &&
-                                                                               
$el.children( selector.lemmaLanguage ).text() === language;
-                                                               } );
-                                                               var message = 
when + 'DOM contains lemma with value "' + value +
-                                                                       '" and 
language "' + language + '"';
-                                                               return 
assert.pushResult( {
-                                                                       result: 
found,
-                                                                       actual: 
found,
-                                                                       
expected: { value: value, language: language },
-                                                                       
message: message,
-                                                                       
negative: false
-                                                               } );
-                                                       }
-                                               }
-
-                                       };
-
-                               };
-                       },
-                       teardown: function () {
-                               delete QUnit.assert.widget;
-                       }
-               };
-       }
-
-       // FIXME: duplicated from LexemeView.php until it's reusable
-       function getTemplate() {
-               return '<div class="lemma-widget">\n    <ul v-if="!inEditMode" 
class="lemma-widget_lemma-list">\n        <li v-for="lemma in lemmas" 
class="lemma-widget_lemma">\n            <span 
class="lemma-widget_lemma-value">{{lemma.value}}</span>\n            <span 
class="lemma-widget_lemma-language">{{lemma.language}}</span>\n        </li>\n  
  </ul>\n    <div v-else>\n        <div class="lemma-widget_edit-area">\n       
     <ul class="lemma-widget_lemma-list">\n                <li v-for="lemma in 
lemmas" class="lemma-widget_lemma-edit-box">\n                    <input 
size="1" class="lemma-widget_lemma-value-input" \n                        
v-model="lemma.value" :disabled="isSaving">\n                    <input 
size="1" class="lemma-widget_lemma-language-input" \n                        
v-model="lemma.language" :disabled="isSaving">\n                    <button 
class="lemma-widget_lemma-remove" v-on:click="remove(lemma)" \n                 
       :disabled="isSaving" :title="\'wikibase-remove\'|message">\n             
           &times;\n                    </button>\n                </li>\n      
          <li>\n                    <button type="button" 
class="lemma-widget_add" v-on:click="add" \n                        
:disabled="isSaving" :title="\'wikibase-add\'|message">+</button>\n             
   </li>\n            </ul>\n        </div>\n    </div>\n    <div 
class="lemma-widget_controls">\n        <button type="button" 
class="lemma-widget_control" v-if="!inEditMode" \n            
:disabled="isSaving" v-on:click="edit">{{\'wikibase-edit\'|message}}</button>\n 
       <button type="button" class="lemma-widget_control" v-if="inEditMode" \n  
          :disabled="isSaving" 
v-on:click="save">{{\'wikibase-save\'|message}}</button>\n        <button 
type="button" class="lemma-widget_control" v-if="inEditMode" \n            
:disabled="isSaving"  
v-on:click="cancel">{{\'wikibase-cancel\'|message}}</button>\n    
</div>\n</div>';
-
-       }
-}( wikibase, jQuery, QUnit, Vue, Vuex ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/372850
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I427407136aae7e091eb931c01ac1c6209e326692
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to