(bug 38987) mediawiki.api.parse.test: Fix test breakage
authorTimo Tijhof <ttijhof@wikimedia.org>
Tue, 7 Aug 2012 23:54:34 +0000 (01:54 +0200)
committerTimo Tijhof <ttijhof@wikimedia.org>
Wed, 8 Aug 2012 17:42:57 +0000 (19:42 +0200)
The direct html comparison is not stable enough due to interference
if Tidy. Working around by doing a dom comparison instead of raw
html.

Change-Id: I62e39e0b05e3f9b5f78e2ac28a6f3ca0b608d152

tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js

index f33edb0..3d3f630 100644 (file)
@@ -1,17 +1,25 @@
 QUnit.module( 'mediawiki.api.parse', QUnit.newMwEnvironment() );
 
-QUnit.asyncTest( 'Simple', function ( assert ) {
+QUnit.asyncTest( 'Hello world', function ( assert ) {
        var api;
-       QUnit.expect( 1 );
+       QUnit.expect( 6 );
 
        api = new mw.Api();
 
        api.parse( "'''Hello world'''" )
                .done( function ( html ) {
-                       // Html also contains "NewPP report", so only check the first part
-                       assert.equal( html.substr( 0, 25 ), '<p><b>Hello world</b></p>',
-                               'Wikitext to html parsing works.'
-                       );
+                       // Parse into a document fragment instead of comparing HTML, due to
+                       // presence of Tidy influencing whitespace.
+                       // Html also contains "NewPP report" comment.
+                       var $res = $( '<div>' ).html( html ).children(),
+                               res = $res.get( 0 );
+                       assert.equal( $res.length, 1, 'Response contains 1 element' );
+                       assert.equal( res.nodeName.toLowerCase(), 'p', 'Response is a paragraph' );
+                       assert.equal( $res.children().length, 1, 'Response has 1 child element' );
+                       assert.equal( $res.children().get( 0 ).nodeName.toLowerCase(), 'b', 'Child element is a bold tag' );
+                       // Trim since Tidy may or may not mess with the spacing here
+                       assert.equal( $.trim( $res.text() ), 'Hello world', 'Response contains given text' );
+                       assert.equal( $res.find( 'b' ).text(), 'Hello world', 'Bold tag wraps the entire, same, text' );
 
                        QUnit.start();
                });