Jakob has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/372132 )

Change subject: Port RepresentationWidget tests to jasmine.
......................................................................

Port RepresentationWidget tests to jasmine.

Change-Id: Ia76e8af2a9a70119882a890e06c95eee23ac159a
---
M package.json
A tests/jasmine/RepresentationWidget.spec.js
2 files changed, 98 insertions(+), 1 deletion(-)


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

diff --git a/package.json b/package.json
index 10284e6..9885f56 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,7 @@
     "vue": "2.3.3"
   },
   "_moduleAliases": {
-    "wikibase.lexeme.widgets.GlossWidget": "./resources/widgets/GlossWidget.js"
+    "wikibase.lexeme.widgets.GlossWidget": 
"./resources/widgets/GlossWidget.js",
+    "wikibase.lexeme.widgets.RepresentationWidget": 
"./resources/widgets/RepresentationWidget.js"
   }
 }
diff --git a/tests/jasmine/RepresentationWidget.spec.js 
b/tests/jasmine/RepresentationWidget.spec.js
new file mode 100644
index 0000000..3ed9e7b
--- /dev/null
+++ b/tests/jasmine/RepresentationWidget.spec.js
@@ -0,0 +1,96 @@
+describe( 'wikibase.lexeme.widgets.RepresentationWidget', function () {
+       var expect = require( 'unexpected' ).clone();
+       var RepresentationWidget = require( 
'wikibase.lexeme.widgets.RepresentationWidget' );
+
+       var EMPTY_REPRESENTATION = { language: '', value: '' };
+       var SOME_REPRESENTATION = { language: 'en', value: 'representation in 
english' };
+
+       it( 'adds a new empty representation when editing the widget with no 
representations', function () {
+               var widget = newWidget( [] );
+
+               widget.edit();
+
+               expect( widget.representations, 'to equal', [ 
EMPTY_REPRESENTATION ] );
+       } );
+
+       it( 'shows only the representation it contains when editing the widget 
with some representation', function () {
+               var widget = newWidget( [ SOME_REPRESENTATION ] );
+
+               widget.edit();
+
+               expect( widget.representations, 'to equal', [ 
SOME_REPRESENTATION ] );
+       } );
+
+       it( 'is not in edit mode after being created', function () {
+               var widget = newWidget( [] );
+
+               expect( widget.inEditMode, 'to be', false );
+       } );
+
+       it( 'switches to edit mode when editing', function () {
+               var widget = newWidget( [] );
+
+               widget.edit();
+
+               expect( widget.inEditMode, 'to be', true );
+       } );
+
+       it( 'is not in edit mode after editing is stopped', function () {
+               var widget = newWidget( [] );
+
+               widget.edit();
+               widget.stopEditing();
+
+               expect( widget.inEditMode, 'to be', false );
+       } );
+
+       it( 'adds an empty representation on add', function () {
+               var widget = newWidget(
+                       [ SOME_REPRESENTATION ]
+               );
+
+               widget.edit();
+               widget.add();
+
+               expect( widget.representations[ 1 ], 'to equal', 
EMPTY_REPRESENTATION );
+       } );
+
+       it( 'can remove a representation', function () {
+               var widget = newWidget(
+                       [ SOME_REPRESENTATION ]
+               );
+
+               widget.edit();
+               widget.remove( SOME_REPRESENTATION );
+
+               expect( widget.representations, 'to equal', [] );
+       } );
+
+       it( 'cannot add representation if not in edit mode', function () {
+               var widget = newWidget( [] );
+
+               expect( function () {
+                       widget.add();
+               }, 'to throw' );
+       } );
+
+       it( 'cannot remove representation if not in edit mode', function () {
+               var widget = newWidget(
+                       [ SOME_REPRESENTATION ]
+               );
+
+               expect( function () {
+                       widget.remove( SOME_REPRESENTATION );
+               }, 'to throw' );
+       } );
+
+       function newWidget( representations ) {
+               return RepresentationWidget.create(
+                       representations,
+                       document.createElement( 'div' ),
+                       '<div id="dummy-template"></div>',
+                       function () {
+                       }
+               );
+       }
+} );

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

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

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

Reply via email to