]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / tests / qunit / suites / resources / jquery / jquery.autoEllipsis.test.js
diff --git a/tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js b/tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js
new file mode 100644 (file)
index 0000000..c3521ba
--- /dev/null
@@ -0,0 +1,53 @@
+( function ( $ ) {
+
+       QUnit.module( 'jquery.autoEllipsis', QUnit.newMwEnvironment() );
+
+       function createWrappedDiv( text, width ) {
+               var $wrapper = $( '<div>' ).css( 'width', width ),
+                       $div = $( '<div>' ).text( text );
+               $wrapper.append( $div );
+               return $wrapper;
+       }
+
+       function findDivergenceIndex( a, b ) {
+               var i = 0;
+               while ( i < a.length && i < b.length && a[ i ] === b[ i ] ) {
+                       i++;
+               }
+               return i;
+       }
+
+       QUnit.test( 'Position right', function ( assert ) {
+               // We need this thing to be visible, so append it to the DOM
+               var $span, spanText, d, spanTextNew,
+                       origText = 'This is a really long random string and there is no way it fits in 100 pixels.',
+                       $wrapper = createWrappedDiv( origText, '100px' );
+
+               $( '#qunit-fixture' ).append( $wrapper );
+               $wrapper.autoEllipsis( { position: 'right' } );
+
+               // Verify that, and only one, span element was created
+               $span = $wrapper.find( '> span' );
+               assert.strictEqual( $span.length, 1, 'autoEllipsis wrapped the contents in a span element' );
+
+               // Check that the text fits by turning on word wrapping
+               $span.css( 'whiteSpace', 'nowrap' );
+               assert.ltOrEq(
+                       $span.width(),
+                       $span.parent().width(),
+                       'Text fits (making the span "white-space: nowrap" does not make it wider than its parent)'
+               );
+
+               // Add two characters using scary black magic
+               spanText = $span.text();
+               d = findDivergenceIndex( origText, spanText );
+               spanTextNew = spanText.slice( 0, d ) + origText[ d ] + origText[ d ] + '...';
+
+               assert.gt( spanTextNew.length, spanText.length, 'Verify that the new span-length is indeed greater' );
+
+               // Put this text in the span and verify it doesn't fit
+               $span.text( spanTextNew );
+               assert.gt( $span.width(), $span.parent().width(), 'Fit is maximal (adding two characters makes it not fit any more)' );
+       } );
+
+}( jQuery ) );