discourse/test/javascripts/models/user_test.js
Régis Hanol ca12ea42a7 FEATURE: only redirect new users to top page for a limited period
That period is defined by the `redirect_new_users_to_top_page_duration`
site setting and defaults to 7 days.
2014-03-05 22:11:01 +01:00

96 lines
4.2 KiB
JavaScript

module("Discourse.User");
test('staff', function(){
var user = Discourse.User.create({id: 1, username: 'eviltrout'});
ok(!user.get('staff'), "user is not staff");
user.toggleProperty('moderator');
ok(user.get('staff'), "moderators are staff");
user.setProperties({moderator: false, admin: true});
ok(user.get('staff'), "admins are staff");
});
test('searchContext', function() {
var user = Discourse.User.create({id: 1, username: 'EvilTrout'});
deepEqual(user.get('searchContext'), {type: 'user', id: 'eviltrout', user: user}, "has a search context");
});
test("isAllowedToUploadAFile", function() {
var user = Discourse.User.create({ trust_level: 0, admin: true });
ok(user.isAllowedToUploadAFile("image"), "admin can always upload a file");
user.setProperties({ admin: false, moderator: true });
ok(user.isAllowedToUploadAFile("image"), "moderator can always upload a file");
});
test("homepage when top is disabled", function() {
var newUser = Discourse.User.create({ trust_level: 0, last_seen_at: moment() }),
oldUser = Discourse.User.create({ trust_level: 1, last_seen_at: moment() }),
defaultHomepage = Discourse.Utilities.defaultHomepage();
Discourse.SiteSettings.top_menu = "latest";
equal(newUser.get("homepage"), defaultHomepage, "new user's homepage is default when top is disabled");
equal(oldUser.get("homepage"), defaultHomepage, "old user's homepage is default when top is disabled");
oldUser.set("last_seen_at", moment().subtract('month', 2));
equal(oldUser.get("homepage"), defaultHomepage, "long-time-no-see old user's homepage is default when top is disabled");
});
test("homepage when top is enabled and not enough topics", function() {
var newUser = Discourse.User.create({ trust_level: 0, last_seen_at: moment() }),
oldUser = Discourse.User.create({ trust_level: 1, last_seen_at: moment() }),
defaultHomepage = Discourse.Utilities.defaultHomepage();
Discourse.SiteSettings.top_menu = "latest|top";
Discourse.Site.currentProp("has_enough_topic_to_redirect_to_top_page", false);
equal(newUser.get("homepage"), defaultHomepage, "new user's homepage is default");
equal(oldUser.get("homepage"), defaultHomepage, "old user's homepage is default");
oldUser.set("last_seen_at", moment().subtract('month', 2));
equal(oldUser.get("homepage"), defaultHomepage, "long-time-no-see old user's homepage is default");
});
test("homepage when top is enabled and has enough topics", function() {
var newUser = Discourse.User.create({ trust_level: 0, last_seen_at: moment(), created_at: moment().subtract("day", 6) }),
oldUser = Discourse.User.create({ trust_level: 1, last_seen_at: moment(), created_at: moment().subtract("month", 2) }),
defaultHomepage = Discourse.Utilities.defaultHomepage();
Discourse.SiteSettings.top_menu = "latest|top";
Discourse.SiteSettings.redirect_new_users_to_top_page_duration = 7;
Discourse.Site.currentProp("has_enough_topic_to_redirect_to_top_page", true);
equal(newUser.get("homepage"), "top", "new user's homepage is top when top is enabled");
equal(oldUser.get("homepage"), defaultHomepage, "old user's homepage is default when top is enabled");
oldUser.set("last_seen_at", moment().subtract('month', 2));
equal(oldUser.get("homepage"), "top", "long-time-no-see old user's homepage is top when top is enabled");
});
test("new user's homepage when top is enabled, there's enough topics and duration is over", function() {
var newUser = Discourse.User.create({ trust_level: 0, last_seen_at: moment(), created_at: moment().subtract("month", 1) }),
defaultHomepage = Discourse.Utilities.defaultHomepage();
Discourse.SiteSettings.top_menu = "latest|top";
Discourse.SiteSettings.redirect_new_users_to_top_page_duration = 7;
Discourse.Site.currentProp("has_enough_topic_to_redirect_to_top_page", true);
equal(newUser.get("homepage"), defaultHomepage, "new user's homepage is default when redirect duration is over");
});
asyncTestDiscourse("findByUsername", function() {
expect(3);
Discourse.User.findByUsername('eviltrout').then(function (user) {
present(user);
equal(user.get('username'), 'eviltrout', 'it has the correct username');
equal(user.get('name'), 'Robin Ward', 'it has the full name since it has details');
start();
});
});