mirror of
https://github.com/discourse/discourse.git
synced 2025-05-29 01:31:35 +08:00
Upgrade Notifications to fix deprecations and use store
This commit is contained in:
@ -1,33 +0,0 @@
|
||||
moduleFor("controller:header", "controller:header", {
|
||||
needs: ['controller:application']
|
||||
});
|
||||
|
||||
test("showNotifications action", function() {
|
||||
let resolveRequestWith;
|
||||
const request = new Ember.RSVP.Promise(function(resolve) {
|
||||
resolveRequestWith = resolve;
|
||||
});
|
||||
|
||||
const currentUser = Discourse.User.create({ unread_notifications: 1});
|
||||
const controller = this.subject({ currentUser: currentUser });
|
||||
const viewSpy = { showDropdownBySelector: sinon.spy() };
|
||||
|
||||
sandbox.stub(Discourse, "ajax").withArgs("/notifications").returns(request);
|
||||
|
||||
Ember.run(function() {
|
||||
controller.send("showNotifications", viewSpy);
|
||||
});
|
||||
|
||||
equal(controller.get("notifications"), null, "notifications are null before data has finished loading");
|
||||
equal(currentUser.get("unread_notifications"), 1, "current user's unread notifications count is not zeroed before data has finished loading");
|
||||
ok(viewSpy.showDropdownBySelector.calledWith("#user-notifications"), "dropdown with loading glyph is shown before data has finished loading");
|
||||
|
||||
Ember.run(function() {
|
||||
resolveRequestWith(["notification"]);
|
||||
});
|
||||
|
||||
// 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");
|
||||
equal(currentUser.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");
|
||||
});
|
@ -1,56 +0,0 @@
|
||||
import Site from 'discourse/models/site';
|
||||
|
||||
function buildFixture() {
|
||||
return {
|
||||
notification_type: 1, //mentioned
|
||||
post_number: 1,
|
||||
topic_id: 1234,
|
||||
slug: "a-slug",
|
||||
data: {
|
||||
topic_title: "some title",
|
||||
display_username: "velesin"
|
||||
},
|
||||
site: Site.current()
|
||||
};
|
||||
}
|
||||
|
||||
moduleFor("controller:notification");
|
||||
|
||||
test("scope property is correct", function() {
|
||||
const controller = this.subject(buildFixture());
|
||||
equal(controller.get("scope"), "notifications.mentioned");
|
||||
});
|
||||
|
||||
test("username property is correct", function() {
|
||||
const controller = this.subject(buildFixture());
|
||||
equal(controller.get("username"), "velesin");
|
||||
});
|
||||
|
||||
test("description property returns badge name when there is one", function() {
|
||||
const fixtureWithBadgeName = _.extend({}, buildFixture(), { data: { badge_name: "badge" } });
|
||||
const controller = this.subject(fixtureWithBadgeName);
|
||||
equal(controller.get("description"), "badge");
|
||||
});
|
||||
|
||||
test("description property returns empty string when there is no topic title", function() {
|
||||
const fixtureWithEmptyTopicTitle = _.extend({}, buildFixture(), { data: { topic_title: "" } });
|
||||
const controller = this.subject(fixtureWithEmptyTopicTitle);
|
||||
equal(controller.get("description"), "");
|
||||
});
|
||||
|
||||
test("description property returns topic title", function() {
|
||||
const fixtureWithTopicTitle = _.extend({}, buildFixture(), { data: { topic_title: "topic" } });
|
||||
const controller = this.subject(fixtureWithTopicTitle);
|
||||
equal(controller.get("description"), "topic");
|
||||
});
|
||||
|
||||
test("url property returns badge's url when there is a badge", function() {
|
||||
const fixtureWithBadge = _.extend({}, buildFixture(), { data: { badge_id: 1, badge_name: "Badge Name"} });
|
||||
const controller = this.subject(fixtureWithBadge);
|
||||
equal(controller.get("url"), "/badges/1/badge-name");
|
||||
});
|
||||
|
||||
test("url property returns topic's url when there is a topic", function() {
|
||||
const controller = this.subject(buildFixture());
|
||||
equal(controller.get("url"), "/t/a-slug/1234");
|
||||
});
|
Reference in New Issue
Block a user