2013-12-20 01:59:30 +08:00
module ( "Discourse.HeaderController" ) ;
2013-11-09 04:06:27 +08:00
test ( "showNotifications action" , function ( ) {
2013-11-13 03:40:46 +08:00
var resolveRequestWith ;
var request = new Ember . RSVP . Promise ( function ( resolve ) {
resolveRequestWith = resolve ;
} ) ;
2013-11-09 04:06:27 +08:00
var controller = Discourse . HeaderController . create ( ) ;
var viewSpy = {
showDropdownBySelector : sinon . spy ( )
} ;
2013-12-20 01:59:30 +08:00
this . stub ( Discourse , "ajax" ) . withArgs ( "/notifications" ) . returns ( request ) ;
this . stub ( Discourse . User , "current" ) . returns ( Discourse . User . create ( {
unread _notifications : 1
} ) ) ;
2013-11-09 04:06:27 +08:00
Ember . run ( function ( ) {
controller . send ( "showNotifications" , viewSpy ) ;
} ) ;
equal ( controller . get ( "notifications" ) , null , "notifications are null before data has finished loading" ) ;
equal ( Discourse . User . current ( ) . get ( "unread_notifications" ) , 1 , "current user's unread notifications count is not zeroed before data has finished loading" ) ;
ok ( viewSpy . showDropdownBySelector . notCalled , "dropdown with notifications is not shown before data has finished loading" ) ;
2013-11-13 03:40:46 +08:00
Ember . run ( function ( ) {
resolveRequestWith ( [ "notification" ] ) ;
} ) ;
2013-11-09 04:06:27 +08:00
deepEqual ( controller . get ( "notifications" ) , [ "notification" ] , "notifications are set correctly after data has finished loading" ) ;
equal ( Discourse . User . current ( ) . get ( "unread_notifications" ) , 0 , "current user's unread notifications count is zeroed after data has finished loading" ) ;
ok ( viewSpy . showDropdownBySelector . calledWith ( "#user-notifications" ) , "dropdown with notifications is shown after data has finished loading" ) ;
} ) ;