FEATURE: introduces minimum trust level for polls (#5391)
* FEATURE: introduces minimum trust level for polls This commit makes `poll_enabled` less misleading and introduces `poll_minimum_trust_level_to_create`. If poll are enabled they will always be cooked, and if you have the required trust level you can create polls. As a side effect, it also fixes a bug where rebaking a post created by staff member when `poll_enabled=false` would end up not cooking it. It also adds more tests to ensure settings are respected. * admins should be whitelisted * checks for admin in post validation * test for >= instead of == trust level
This commit is contained in:
committed by
Régis Hanol
parent
f466791a15
commit
63bab32816
@@ -0,0 +1,41 @@
|
||||
import { acceptance } from "helpers/qunit-helpers";
|
||||
import { displayPollBuilderButton } from "discourse/plugins/poll/helpers/display-poll-builder-button";
|
||||
import { replaceCurrentUser } from "discourse/plugins/poll/helpers/replace-current-user";
|
||||
|
||||
acceptance("Poll Builder - polls are disabled", {
|
||||
loggedIn: true,
|
||||
settings: {
|
||||
poll_enabled: false,
|
||||
poll_minimum_trust_level_to_create: 2
|
||||
}
|
||||
});
|
||||
|
||||
test("sufficient trust level", (assert) => {
|
||||
replaceCurrentUser({ admin: false, trust_level: 3 });
|
||||
|
||||
displayPollBuilderButton();
|
||||
|
||||
andThen(() => {
|
||||
assert.ok(!exists("button[title='Build Poll']"), "it hides the builder button");
|
||||
});
|
||||
});
|
||||
|
||||
test("insufficient trust level", (assert) => {
|
||||
replaceCurrentUser({ admin: false, trust_level: 1 });
|
||||
|
||||
displayPollBuilderButton();
|
||||
|
||||
andThen(() => {
|
||||
assert.ok(!exists("button[title='Build Poll']"), "it hides the builder button");
|
||||
});
|
||||
});
|
||||
|
||||
test("admin", (assert) => {
|
||||
replaceCurrentUser({ admin: true });
|
||||
|
||||
displayPollBuilderButton();
|
||||
|
||||
andThen(() => {
|
||||
assert.ok(!exists("button[title='Build Poll']"), "it hides the builder button");
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,41 @@
|
||||
import { acceptance } from "helpers/qunit-helpers";
|
||||
import { displayPollBuilderButton } from "discourse/plugins/poll/helpers/display-poll-builder-button";
|
||||
import { replaceCurrentUser } from "discourse/plugins/poll/helpers/replace-current-user";
|
||||
|
||||
acceptance("Poll Builder - polls are enabled", {
|
||||
loggedIn: true,
|
||||
settings: {
|
||||
poll_enabled: true,
|
||||
poll_minimum_trust_level_to_create: 1
|
||||
}
|
||||
});
|
||||
|
||||
test("sufficient trust level", (assert) => {
|
||||
replaceCurrentUser({ admin: false, trust_level: 1 });
|
||||
|
||||
displayPollBuilderButton();
|
||||
|
||||
andThen(() => {
|
||||
assert.ok(exists("button[title='Build Poll']"), "it shows the builder button");
|
||||
});
|
||||
});
|
||||
|
||||
test("insufficient trust level", (assert) => {
|
||||
replaceCurrentUser({ admin: false, trust_level: 0 });
|
||||
|
||||
displayPollBuilderButton();
|
||||
|
||||
andThen(() => {
|
||||
assert.ok(!exists("button[title='Build Poll']"), "it hides the builder button");
|
||||
});
|
||||
});
|
||||
|
||||
test("admin with insufficient trust level", (assert) => {
|
||||
replaceCurrentUser({ admin: true, trust_level: 0 });
|
||||
|
||||
displayPollBuilderButton();
|
||||
|
||||
andThen(() => {
|
||||
assert.ok(exists("button[title='Build Poll']"), "it shows the builder button");
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,5 @@
|
||||
export function displayPollBuilderButton() {
|
||||
visit("/");
|
||||
click("#create-topic");
|
||||
click(".d-editor-button-bar .options");
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
export function replaceCurrentUser(properties) {
|
||||
const currentUser = Discourse.User.current();
|
||||
currentUser.setProperties(properties);
|
||||
Discourse.User.resetCurrent(currentUser);
|
||||
}
|
||||
Reference in New Issue
Block a user