https://www.mediawiki.org/wiki/Special:Code/MediaWiki/109138

Revision: 109138
Author:   santhosh
Date:     2012-01-17 12:14:16 +0000 (Tue, 17 Jan 2012)
Log Message:
-----------
More test cases for webfonts 
 - Dynamic font loading based on lang attribute
 - Dynamic font loading based on font-family style attribute

Some minor fixes in ext.webfonts.js to make methods testable.

Modified Paths:
--------------
    trunk/extensions/WebFonts/resources/ext.webfonts.js
    trunk/extensions/WebFonts/tests/qunit/ext.webfonts.tests.js

Modified: trunk/extensions/WebFonts/resources/ext.webfonts.js
===================================================================
--- trunk/extensions/WebFonts/resources/ext.webfonts.js 2012-01-17 12:11:57 UTC 
(rev 109137)
+++ trunk/extensions/WebFonts/resources/ext.webfonts.js 2012-01-17 12:14:16 UTC 
(rev 109138)
@@ -73,6 +73,7 @@
 
                        // Remove the cookie
                        $.cookie( 'webfonts-font', 'none', { 'path': '/', 
'expires': 30 } );
+                       return true;
                },
 
                /**
@@ -255,6 +256,7 @@
                                        }
                                }
                        });
+                       return true;
                },
 
                /**
@@ -273,6 +275,7 @@
                                        });
                                }
                        });
+                       return true;
                },
 
                /**

Modified: trunk/extensions/WebFonts/tests/qunit/ext.webfonts.tests.js
===================================================================
--- trunk/extensions/WebFonts/tests/qunit/ext.webfonts.tests.js 2012-01-17 
12:11:57 UTC (rev 109137)
+++ trunk/extensions/WebFonts/tests/qunit/ext.webfonts.tests.js 2012-01-17 
12:14:16 UTC (rev 109138)
@@ -4,18 +4,76 @@
        expect(1);
 
        ok( mw.webfonts, 'mw.webfonts defined' );
-});
+} );
 
 test( '-- Dynamic font loading', function() {
        expect( 7 );
        var cssRulesLength = document.styleSheets.length;
        assertTrue( mw.webfonts.addFont( 'Lohit Devanagari' ) , 'Add the Lohit 
Devanagari font' );
        assertTrue( $.inArray( 'Lohit Devanagari', mw.webfonts.fonts ) >= 0 , 
'Font loaded' );
-       assertTrue( cssRulesLength +1 === document.styleSheets.length, 'New css 
rule added to the document' );
+       assertTrue( cssRulesLength + 1 === document.styleSheets.length, 'New 
css rule added to the document' );
        var loadedFontsSize = mw.webfonts.fonts.length;
        assertTrue( mw.webfonts.addFont( 'Lohit Devanagari' ) , 'Add the Lohit 
Devanagari font again' );
        assertTrue( loadedFontsSize === mw.webfonts.fonts.length , 'Already 
loaded fonts not loaded again.' );
        assertFalse( mw.webfonts.addFont( 'Some Non existing font' ), 'addFont 
should return false if font not found' );
-       assertTrue( cssRulesLength +1 === document.styleSheets.length, 'No new  
css rules added at this stage' );
-});
+       assertTrue( cssRulesLength + 1 === document.styleSheets.length, 'No new 
 css rules added at this stage' );
+} );
 
+test( '-- Dynamic font loading based on lang attribute', function() {
+       expect( 15 );
+
+       ok( $( 'body' ).append( "<p class='webfonts-testing-lang-attr'>Some 
Content</p>") );
+       $testElement =  $( 'p.webfonts-testing-lang-attr' )
+       assertTrue( $testElement !== undefined, 'Test element added' ) ;
+
+       ok( mw.webfonts.loadFontsForLangAttr() );
+       assertFalse( $testElement.hasClass( 'webfonts-lang-attr' ), 'The 
element has no webfonts-lang-attr class since there is no lang attribute' ) ;
+
+       ok( $testElement.attr( 'lang' , 'en' ) , 'Set lang attribute as 
english' );
+       ok( mw.webfonts.loadFontsForLangAttr() );
+       assertFalse( $testElement.hasClass( 'webfonts-lang-attr' ), 'The 
element has no webfonts-lang-attr class since there is en lang has no fonts 
available' ) ;
+
+       ok( $testElement.attr( 'lang' , 'ta' ) , 'Set lang attribute as Tamil' 
);
+       var cssRulesLength = document.styleSheets.length;
+       ok( mw.webfonts.loadFontsForLangAttr() );
+       assertTrue( $testElement.hasClass( 'webfonts-lang-attr' ), 'The element 
has webfonts-lang-attr class' ) ;
+       assertTrue( $.inArray( 'Lohit Tamil', mw.webfonts.fonts ) >= 0 , 'Font 
loaded' );
+       assertTrue( cssRulesLength + 1 === document.styleSheets.length, 'New 
css rule added to the document' );
+
+       ok( mw.webfonts.reset() );
+       assertFalse( $testElement.hasClass( 'webfonts-lang-attr' ), 'The 
element has no webfonts-lang-attr since we reset it' ) ;
+
+       ok( $testElement.remove() );
+} );
+
+test( '-- Dynamic font loading based on font-family style attribute', 
function() {
+       expect( 14 )
+
+       ok( $( 'body' ).append( "<p 
class='webfonts-testing-font-family-style'>Some Content</p>") );
+       var $testElement = $( 'p.webfonts-testing-font-family-style' );
+       assertTrue(  $testElement !== undefined, 'Test element added' ) ;
+
+       $testElement.css( 'font-family', 'RufScript, Arial, Helvetica, sans');
+       var cssRulesLength = document.styleSheets.length;
+       assertTrue( $.inArray( 'RufScript', mw.webfonts.fonts ) === -1 , 
'RufScript Font not loaded yet' );
+       ok( mw.webfonts.loadFontsForFontFamilyStyle() );
+       assertTrue( $.inArray( 'RufScript', mw.webfonts.fonts ) >= 0 , 'Font 
loaded' );
+       assertTrue( cssRulesLength +1 === document.styleSheets.length, 'New css 
rule added to the document' );
+
+       $testElement.css( 'font-family', 'NonExistingFont, Arial, Helvetica, 
sans' );
+       cssRulesLength = document.styleSheets.length;
+       ok( mw.webfonts.loadFontsForFontFamilyStyle() );
+       assertTrue( $.inArray( 'NonExistingFont', mw.webfonts.fonts ) === -1 , 
'Font not loaded since it is not existing, including fallback fonts' );
+       assertTrue( cssRulesLength === document.styleSheets.length, 'No new css 
rule added to the document' );
+
+       $testElement.css( 'font-family', 'NonExistingFont, AnjaliOldLipi, 
Arial, Helvetica, sans');
+       cssRulesLength = document.styleSheets.length;
+       assertTrue( $.inArray( 'AnjaliOldLipi', mw.webfonts.fonts ) === -1 , 
'Fallback font AnjaliOldLipi not loaded yet' );
+       ok( mw.webfonts.loadFontsForFontFamilyStyle() );
+       assertTrue( $.inArray( 'AnjaliOldLipi', mw.webfonts.fonts ) >= 0 , 
'Fallback font AnjaliOldLipi loaded' );
+       assertTrue( cssRulesLength + 1 === document.styleSheets.length, 'New 
css rule added to the document for fallbackfont' );
+
+       ok( $testElement.remove() );
+} );
+
+


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to