2014-08-12 15:55:23 -05:00
moduleFor("controller:header", "controller:header", {
needs: ['controller:application']
});
2013-11-08 14:06:27 -06:00
test("showNotifications action", function() {
2013-11-12 13:40:46 -06:00
var resolveRequestWith;
var request = new Ember.RSVP.Promise(function(resolve) {
resolveRequestWith = resolve;
});
2014-07-30 17:56:01 -05:00
var controller = this.subject();
2013-11-08 14:06:27 -06:00
var viewSpy = {
showDropdownBySelector: sinon.spy()
};
2014-07-30 17:56:01 -05:00
sandbox.stub(Discourse, "ajax").withArgs("/notifications").returns(request);
sandbox.stub(Discourse.User, "current").returns(Discourse.User.create({
2013-12-19 11:59:30 -06:00
unread_notifications: 1
}));
2013-11-08 14:06:27 -06: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 11:53:27 -05:00
ok(viewSpy.showDropdownBySelector.calledWith("#user-notifications"), "dropdown with loading glyph is shown before data has finished loading");
2013-11-08 14:06:27 -06:00
2013-11-12 13:40:46 -06:00
Ember.run(function() {
resolveRequestWith(["notification"]);
});
2013-11-08 14:06:27 -06:00
2014-09-02 20:32:27 -05:00
// Can't use deepEquals because controller.get("notifications") is an ArrayProxy, not an Array
ok(controller.get("notifications").indexOf("notification") !== -1, "notification is in the controller");
2013-11-08 14:06:27 -06:00
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");
});