discourse/test/javascripts/controllers/flag-test.js.es6

105 lines
5.1 KiB
Plaintext
Raw Normal View History

import createStore from 'helpers/create-store';
import AdminUser from 'admin/models/admin-user';
2016-11-08 14:29:50 -05:00
import { mapRoutes } from 'discourse/mapping-router';
var buildPost = function(args) {
return Discourse.Post.create(_.merge({
id: 1,
can_delete: true,
version: 1
}, args || {}));
};
var buildAdminUser = function(args) {
return AdminUser.create(_.merge({
id: 11,
username: 'urist'
}, args || {}));
};
2014-07-30 18:56:01 -04:00
moduleFor("controller:flag", "controller:flag", {
2017-06-14 13:57:58 -04:00
beforeEach() {
2016-11-08 14:29:50 -05:00
this.registry.register('router:main', mapRoutes());
},
2014-07-30 18:56:01 -04:00
needs: ['controller:modal']
});
2017-06-14 13:57:58 -04:00
QUnit.test("canDeleteSpammer not staff", function(assert) {
const store = createStore();
2014-07-30 18:56:01 -04:00
var flagController = this.subject({ model: buildPost() });
sandbox.stub(Discourse.User, 'currentProp').withArgs('staff').returns(false);
const spamFlag = store.createRecord('post-action-type', {name_key: 'spam'});
flagController.set('selected', spamFlag);
2017-06-14 13:57:58 -04:00
assert.equal(flagController.get('canDeleteSpammer'), false, 'false if current user is not staff');
});
2017-06-14 13:57:58 -04:00
var canDeleteSpammer = function(assert, flagController, postActionType, expected, testName) {
const store = createStore();
const flag = store.createRecord('post-action-type', {name_key: postActionType});
flagController.set('selected', flag);
2017-06-14 13:57:58 -04:00
assert.equal(flagController.get('canDeleteSpammer'), expected, testName);
};
2017-06-14 13:57:58 -04:00
QUnit.test("canDeleteSpammer spam not selected", function(assert) {
2014-07-30 18:56:01 -04:00
sandbox.stub(Discourse.User, 'currentProp').withArgs('staff').returns(true);
var flagController = this.subject({ model: buildPost() });
flagController.set('userDetails', buildAdminUser({can_delete_all_posts: true, can_be_deleted: true}));
2017-06-14 13:57:58 -04:00
canDeleteSpammer(assert, flagController, 'off_topic', false, 'false if current user is staff, but selected is off_topic');
canDeleteSpammer(assert, flagController, 'inappropriate', false, 'false if current user is staff, but selected is inappropriate');
canDeleteSpammer(assert, flagController, 'notify_user', false, 'false if current user is staff, but selected is notify_user');
canDeleteSpammer(assert, flagController, 'notify_moderators', false, 'false if current user is staff, but selected is notify_moderators');
});
2017-06-14 13:57:58 -04:00
QUnit.test("canDeleteSpammer spam selected", function(assert) {
2014-07-30 18:56:01 -04:00
sandbox.stub(Discourse.User, 'currentProp').withArgs('staff').returns(true);
var flagController = this.subject({ model: buildPost() });
flagController.set('userDetails', buildAdminUser({can_delete_all_posts: true, can_be_deleted: true}));
2017-06-14 13:57:58 -04:00
canDeleteSpammer(assert, flagController, 'spam', true, 'true if current user is staff, selected is spam, posts and user can be deleted');
2014-07-30 18:56:01 -04:00
flagController.set('userDetails', buildAdminUser({can_delete_all_posts: false, can_be_deleted: true}));
2017-06-14 13:57:58 -04:00
canDeleteSpammer(assert, flagController, 'spam', false, 'false if current user is staff, selected is spam, posts cannot be deleted');
2014-07-30 18:56:01 -04:00
flagController.set('userDetails', buildAdminUser({can_delete_all_posts: true, can_be_deleted: false}));
2017-06-14 13:57:58 -04:00
canDeleteSpammer(assert, flagController, 'spam', false, 'false if current user is staff, selected is spam, user cannot be deleted');
2014-07-30 18:56:01 -04:00
flagController.set('userDetails', buildAdminUser({can_delete_all_posts: false, can_be_deleted: false}));
2017-06-14 13:57:58 -04:00
canDeleteSpammer(assert, flagController, 'spam', false, 'false if current user is staff, selected is spam, user cannot be deleted');
});
2016-04-03 20:26:42 -04:00
2017-06-14 13:57:58 -04:00
QUnit.test("canSendWarning not staff", function(assert) {
2016-04-03 20:26:42 -04:00
const store = createStore();
var flagController = this.subject({ model: buildPost() });
sandbox.stub(Discourse.User, 'currentProp').withArgs('staff').returns(false);
const notifyUserFlag = store.createRecord('post-action-type', {name_key: 'notify_user'});
flagController.set('selected', notifyUserFlag);
2017-06-14 13:57:58 -04:00
assert.equal(flagController.get('canSendWarning'), false, 'false if current user is not staff');
2016-04-03 20:26:42 -04:00
});
2017-06-14 13:57:58 -04:00
var canSendWarning = function(assert, flagController, postActionType, expected, testName) {
2016-04-03 20:26:42 -04:00
const store = createStore();
const flag = store.createRecord('post-action-type', {name_key: postActionType});
flagController.set('selected', flag);
2017-06-14 13:57:58 -04:00
assert.equal(flagController.get('canSendWarning'), expected, testName);
2016-04-03 20:26:42 -04:00
};
2017-06-14 13:57:58 -04:00
QUnit.test("canSendWarning notify_user not selected", function(assert) {
2016-04-03 20:26:42 -04:00
sandbox.stub(Discourse.User, 'currentProp').withArgs('staff').returns(true);
var flagController = this.subject({ model: buildPost() });
2017-06-14 13:57:58 -04:00
canSendWarning(assert, flagController, 'off_topic', false, 'false if current user is staff, but selected is off_topic');
canSendWarning(assert, flagController, 'inappropriate', false, 'false if current user is staff, but selected is inappropriate');
canSendWarning(assert, flagController, 'spam', false, 'false if current user is staff, but selected is spam');
canSendWarning(assert, flagController, 'notify_moderators', false, 'false if current user is staff, but selected is notify_moderators');
2016-04-03 20:26:42 -04:00
});
2017-06-14 13:57:58 -04:00
QUnit.test("canSendWarning notify_user selected", function(assert) {
2016-04-03 20:26:42 -04:00
sandbox.stub(Discourse.User, 'currentProp').withArgs('staff').returns(true);
var flagController = this.subject({ model: buildPost() });
2017-06-14 13:57:58 -04:00
canSendWarning(assert, flagController, 'notify_user', true, 'true if current user is staff, selected is notify_user');
2016-11-08 14:29:50 -05:00
});