2014-07-30 18:56:01 -04:00
moduleFor ( "controller:header" , "controller:header" ) ;
2013-11-08 15:06:27 -05:00
test ( "showNotifications action" , function ( ) {
2013-11-12 14:40:46 -05:00
var resolveRequestWith ;
var request = new Ember . RSVP . Promise ( function ( resolve ) {
resolveRequestWith = resolve ;
} ) ;
2014-07-30 18:56:01 -04:00
var controller = this . subject ( ) ;
2013-11-08 15:06:27 -05:00
var viewSpy = {
showDropdownBySelector : sinon . spy ( )
} ;
2014-07-30 18:56:01 -04:00
sandbox . stub ( Discourse , "ajax" ) . withArgs ( "/notifications" ) . returns ( request ) ;
sandbox . stub ( Discourse . User , "current" ) . returns ( Discourse . User . create ( {
2013-12-19 12:59:30 -05:00
unread _notifications : 1
} ) ) ;
2013-11-08 15:06:27 -05: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" ) ;
2014-05-09 12:53:27 -04:00
ok ( viewSpy . showDropdownBySelector . calledWith ( "#user-notifications" ) , "dropdown with loading glyph is shown before data has finished loading" ) ;
2013-11-08 15:06:27 -05:00
2013-11-12 14:40:46 -05:00
Ember . run ( function ( ) {
resolveRequestWith ( [ "notification" ] ) ;
} ) ;
2013-11-08 15:06:27 -05: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" ) ;
} ) ;