jenkins-bot has submitted this change and it was merged.

Change subject: Added tests for SiteLinksEditTool value row insertion behavior
......................................................................


Added tests for SiteLinksEditTool value row insertion behavior

When a new value row gets inserted into the SiteLinksEditTool, it will first be 
inserted into the
tfoot part of the table, so the row won't be affected by table sorting. After 
the value got saved,
it is supposed to be moved into the tbody section. This behavior is now ensured 
by these test.

Change-Id: Iad16410be423f3af88dead38fbb51a127a4b4a52
---
M lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js
1 file changed, 94 insertions(+), 0 deletions(-)

Approvals:
  Henning Snater: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js 
b/lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js
index 6a97383..9e80e10 100644
--- a/lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js
+++ b/lib/tests/qunit/wikibase.ui.SiteLinksEditTool.tests.js
@@ -53,6 +53,27 @@
        } ) );
 
        /**
+        * Executes assertions testing how many values are currently in a 
certain section of the
+        * SiteLinksEditTool's subject table.
+        *
+        * @param {QUnit.assert} assert
+        * @param {wb.ui.SiteLinksEditTool} subject
+        * @param {Object} definition The table section (e.g. "tbody" or 
"tfoot") as key, the expected
+        *        number of values in that section as number.
+        * @param {string} testStepDescription
+        */
+       function assertValuesInTableSections( assert, subject, definition, 
testStepDescription ) {
+               $.each( definition, function( section, expected ) {
+                       var queryPath = section + ' 
.wb-ui-propertyedittool-editablevalue';
+                       assert.strictEqual(
+                               subject.getSubject().find( queryPath ).length,
+                               expected,
+                               expected + ' value(s) in ' + section + ' ' + 
testStepDescription
+                       );
+               } );
+       }
+
+       /**
         * Allows to enter a value into the SiteLinksEditTool which can then be 
saved by calling
         * stopEditing( true ) on the returned EditableValue. This is necessary 
because of some ugly
         * fake API requests have to be mocked to do this.
@@ -181,6 +202,79 @@
                );
        } );
 
+       QUnit.test( 'no value rows in table initially', function( assert ) {
+               assert.strictEqual(
+                       this.subject.getValues( true ).length,
+                       0,
+                       'no values or pending values in edit tool initially'
+               );
+
+               assertValuesInTableSections(
+                       assert,
+                       this.subject,
+                       { thead: 0, tbody: 0, tfoot: 0 },
+                       'initially'
+               );
+       } );
+
+       QUnit.test( 'pending value gets moved from tfoot to tbody after it got 
saved', function( assert ) {
+               var subject = this.subject;
+
+               assertValuesInTableSections(
+                       assert,
+                       subject,
+                       { tbody: 0, tfoot: 0 },
+                       'initially'
+               );
+
+               hackyValueInsertionAndSave( subject, [ 'dewiki', 'Berlin' ], 
'dewiki' );
+
+               assertValuesInTableSections(
+                       assert,
+                       subject,
+                       { tbody: 1, tfoot: 0 },
+                       'after entering and saving first value'
+               );
+
+               hackyValueInsertionAndSave( subject, [ 'enwiki', 'London' ], 
'enwiki' );
+
+               assertValuesInTableSections(
+                       assert,
+                       subject,
+                       { tbody: 2, tfoot: 0 },
+                       'after saving second value'
+               );
+       } );
+
+       QUnit.test( 'pending value gets removed from tfoot after cancelling 
value insertion', function( assert ) {
+               var subject = this.subject;
+
+               assertValuesInTableSections(
+                       assert,
+                       subject,
+                       { tbody: 0, tfoot: 0 },
+                       'initially'
+               );
+
+               var newValue = hackyValueInsertion( this.subject, [ 'dewiki', 
'Berlin' ], 'dewiki' );
+
+               assertValuesInTableSections(
+                       assert,
+                       subject,
+                       { tbody: 0, tfoot: 1 },
+                       'after inserting pending value'
+               );
+
+               newValue.stopEditing( false );
+
+               assertValuesInTableSections(
+                       assert,
+                       subject,
+                       { tbody: 0, tfoot: 0 },
+                       'after cancelling pending value insertion'
+               );
+       } );
+
        QUnit.test( 'adding a new editable site link', function( assert ) {
 
                assert.ok(

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Iad16410be423f3af88dead38fbb51a127a4b4a52
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Werner <[email protected]>
Gerrit-Reviewer: Henning Snater <[email protected]>
Gerrit-Reviewer: jenkins-bot

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

Reply via email to