2010-10-28 14:03:52 -07:00
/ * A n y c o p y r i g h t i s d e d i c a t e d t o t h e P u b l i c D o m a i n .
* http : //creativecommons.org/publicdomain/zero/1.0/
* /
// Tests the recent updates pane
var gProvider ;
var gManagerWindow ;
var gCategoryUtilities ;
function test ( ) {
waitForExplicitFinish ( ) ;
gProvider = new MockProvider ( ) ;
gProvider . createAddons ( [ {
id : "addon1@tests.mozilla.org" ,
name : "updated 6 hours ago" ,
version : "1.0" ,
updateDate : new Date ( Date . now ( ) - ( 1000 * 60 * 60 * 6 ) ) ,
releaseNotesURI : Services . io . newURI ( TESTROOT + "releaseNotes.xhtml" , null , null )
} , {
id : "addon2@tests.mozilla.org" ,
name : "updated 5 seconds ago" ,
version : "1.0" ,
updateDate : new Date ( Date . now ( ) - ( 1000 * 5 ) )
} , {
id : "addon3@tests.mozilla.org" ,
name : "updated 1 month ago" ,
version : "1.0" ,
updateDate : new Date ( Date . now ( ) - ( 1000 * 60 * 60 * 25 * 30 ) )
} ] ) ;
open _manager ( "addons://list/extension" , function ( aWindow ) {
gManagerWindow = aWindow ;
gCategoryUtilities = new CategoryUtilities ( gManagerWindow ) ;
run _next _test ( ) ;
} ) ;
}
function end _test ( ) {
close _manager ( gManagerWindow , function ( ) {
finish ( ) ;
} ) ;
}
add _test ( function ( ) {
info ( "Checking menuitem for Recent Updates opens that pane" ) ;
var recentCat = gManagerWindow . gCategories . get ( "addons://updates/recent" ) ;
is ( gCategoryUtilities . isVisible ( recentCat ) , false , "Recent Updates category should initially be hidden" ) ;
var utilsBtn = gManagerWindow . document . getElementById ( "header-utils-btn" ) ;
utilsBtn . addEventListener ( "popupshown" , function ( ) {
2011-06-07 07:45:26 -07:00
utilsBtn . removeEventListener ( "popupshown" , arguments . callee , false ) ;
2010-10-28 14:03:52 -07:00
wait _for _view _load ( gManagerWindow , function ( ) {
is ( gCategoryUtilities . isVisible ( recentCat ) , true , "Recent Updates category should now be visible" ) ;
is ( gManagerWindow . document . getElementById ( "categories" ) . selectedItem . value , "addons://updates/recent" , "Recent Updates category should now be selected" ) ;
is ( gManagerWindow . gViewController . currentViewId , "addons://updates/recent" , "Recent Updates view should be the current view" ) ;
run _next _test ( ) ;
} , true ) ;
var menuitem = gManagerWindow . document . getElementById ( "utils-viewUpdates" ) ;
EventUtils . synthesizeMouse ( menuitem , 2 , 2 , { } , gManagerWindow ) ;
} , false ) ;
EventUtils . synthesizeMouse ( utilsBtn , 2 , 2 , { } , gManagerWindow ) ;
} ) ;
add _test ( function ( ) {
var updatesList = gManagerWindow . document . getElementById ( "updates-list" ) ;
2011-01-17 17:11:22 -08:00
var sorters = gManagerWindow . document . getElementById ( "updates-sorters" ) ;
var dateSorter = gManagerWindow . document . getAnonymousElementByAttribute ( sorters , "anonid" , "date-btn" ) ;
var nameSorter = gManagerWindow . document . getAnonymousElementByAttribute ( sorters , "anonid" , "name-btn" ) ;
function check _order ( expected ) {
var items = updatesList . getElementsByTagName ( "richlistitem" ) ;
var possible = [ "addon1@tests.mozilla.org" , "addon2@tests.mozilla.org" , "addon3@tests.mozilla.org" ] ;
for ( let i = 0 ; i < items . length ; i ++ ) {
let item = items [ i ] ;
let itemId = item . mAddon . id ;
if ( possible . indexOf ( itemId ) == - 1 )
continue ; // skip over any other addons, such as shipped addons that would update on every build
isnot ( expected . length , 0 , "Should be expecting more items" ) ;
is ( itemId , expected . shift ( ) , "Should get expected item based on sort order" ) ;
if ( itemId == "addon1@tests.mozilla.org" )
is _element _visible ( item . _relNotesToggle , "Release notes toggle should be visible for addon with release notes" ) ;
else
is _element _hidden ( item . _relNotesToggle , "Release notes toggle should be hidden for addon with no release notes" ) ;
}
2010-10-28 14:03:52 -07:00
}
2011-01-17 17:11:22 -08:00
is _element _visible ( dateSorter ) ;
is _element _visible ( nameSorter ) ;
// sorted by date, descending
check _order ( [ "addon2@tests.mozilla.org" , "addon1@tests.mozilla.org" ] ) ;
// sorted by date, ascending
EventUtils . synthesizeMouseAtCenter ( dateSorter , { } , gManagerWindow ) ;
check _order ( [ "addon1@tests.mozilla.org" , "addon2@tests.mozilla.org" ] ) ;
// sorted by name, ascending
EventUtils . synthesizeMouseAtCenter ( nameSorter , { } , gManagerWindow ) ;
check _order ( [ "addon2@tests.mozilla.org" , "addon1@tests.mozilla.org" ] ) ;
// sorted by name, descending
EventUtils . synthesizeMouseAtCenter ( nameSorter , { } , gManagerWindow ) ;
check _order ( [ "addon1@tests.mozilla.org" , "addon2@tests.mozilla.org" ] ) ;
2010-10-28 14:03:52 -07:00
run _next _test ( ) ;
} ) ;
2010-11-08 09:58:38 -08:00
add _test ( function ( ) {
close _manager ( gManagerWindow , function ( ) {
open _manager ( null , function ( aWindow ) {
gManagerWindow = aWindow ;
gCategoryUtilities = new CategoryUtilities ( gManagerWindow ) ;
var recentCat = gManagerWindow . gCategories . get ( "addons://updates/recent" ) ;
is ( gCategoryUtilities . isVisible ( recentCat ) , true , "Recent Updates category should still be visible" ) ;
run _next _test ( ) ;
} ) ;
} ) ;
} ) ;