Files
zulip/frontend_tests/node_tests/settings_data.js
sahil839 c7d4640af5 setting: Add dropdown for managing who can move messages between streams.
This commit adds the dropdown in 'Stream settings' section of organization
permissions page to control who can move messages between streams and
also hides the stream-edit UI in message-edit form accordingly.

Fixes #14499.
2021-05-13 08:42:24 -07:00

165 lines
5.2 KiB
JavaScript

"use strict";
const {strict: assert} = require("assert");
const {zrequire} = require("../zjsunit/namespace");
const {run_test} = require("../zjsunit/test");
const {page_params} = require("../zjsunit/zpage_params");
const people = zrequire("people");
const settings_data = zrequire("settings_data");
const settings_config = zrequire("settings_config");
/*
Some methods in settings_data are fairly
trivial, so the meaningful tests happen
at the higher layers, such as when we
test people.js.
*/
const isaac = {
email: "isaac@example.com",
delivery_email: "isaac-delivery@example.com",
user_id: 30,
full_name: "Isaac",
};
people.add_active_user(isaac);
run_test("email_for_user_settings", () => {
const email = settings_data.email_for_user_settings;
page_params.realm_email_address_visibility =
settings_config.email_address_visibility_values.admins_only.code;
assert.equal(email(isaac), undefined);
page_params.is_admin = true;
assert.equal(email(isaac), isaac.delivery_email);
page_params.realm_email_address_visibility =
settings_config.email_address_visibility_values.nobody.code;
assert.equal(email(isaac), undefined);
page_params.is_admin = false;
assert.equal(email(isaac), undefined);
page_params.realm_email_address_visibility =
settings_config.email_address_visibility_values.everyone.code;
assert.equal(email(isaac), isaac.email);
});
run_test("user_can_change_name", () => {
const can_change_name = settings_data.user_can_change_name;
page_params.is_admin = true;
assert.equal(can_change_name(), true);
page_params.is_admin = false;
page_params.realm_name_changes_disabled = true;
page_params.server_name_changes_disabled = false;
assert.equal(can_change_name(), false);
page_params.realm_name_changes_disabled = false;
page_params.server_name_changes_disabled = false;
assert.equal(can_change_name(), true);
page_params.realm_name_changes_disabled = false;
page_params.server_name_changes_disabled = true;
assert.equal(can_change_name(), false);
});
run_test("user_can_change_avatar", () => {
const can_change_avatar = settings_data.user_can_change_avatar;
page_params.is_admin = true;
assert.equal(can_change_avatar(), true);
page_params.is_admin = false;
page_params.realm_avatar_changes_disabled = true;
page_params.server_avatar_changes_disabled = false;
assert.equal(can_change_avatar(), false);
page_params.realm_avatar_changes_disabled = false;
page_params.server_avatar_changes_disabled = false;
assert.equal(can_change_avatar(), true);
page_params.realm_avatar_changes_disabled = false;
page_params.server_avatar_changes_disabled = true;
assert.equal(can_change_avatar(), false);
});
run_test("user_can_change_logo", () => {
const can_change_logo = settings_data.user_can_change_logo;
page_params.is_admin = true;
page_params.zulip_plan_is_not_limited = true;
assert.equal(can_change_logo(), true);
page_params.is_admin = false;
page_params.zulip_plan_is_not_limited = false;
assert.equal(can_change_logo(), false);
page_params.is_admin = true;
page_params.zulip_plan_is_not_limited = false;
assert.equal(can_change_logo(), false);
page_params.is_admin = false;
page_params.zulip_plan_is_not_limited = true;
assert.equal(can_change_logo(), false);
});
function test_policy(label, policy, validation_func) {
run_test(label, () => {
page_params.is_admin = true;
page_params[policy] = settings_config.common_policy_values.by_admins_only.code;
assert.equal(validation_func(), true);
page_params.is_admin = false;
assert.equal(validation_func(), false);
page_params.is_moderator = true;
page_params[policy] = settings_config.common_policy_values.by_moderators_only.code;
assert.equal(validation_func(), true);
page_params.is_moderator = false;
assert.equal(validation_func(), false);
page_params.is_guest = true;
page_params[policy] = settings_config.common_policy_values.by_members.code;
assert.equal(validation_func(), false);
page_params.is_guest = false;
assert.equal(validation_func(), true);
page_params[policy] = settings_config.common_policy_values.by_full_members.code;
page_params.user_id = 30;
people.add_active_user(isaac);
isaac.date_joined = new Date(Date.now());
page_params.realm_waiting_period_threshold = 10;
assert.equal(validation_func(), false);
isaac.date_joined = new Date(Date.now() - 20 * 86400000);
assert.equal(validation_func(), true);
});
}
test_policy(
"user_can_create_streams",
"realm_create_stream_policy",
settings_data.user_can_create_streams,
);
test_policy(
"user_can_subscribe_other_users",
"realm_invite_to_stream_policy",
settings_data.user_can_subscribe_other_users,
);
test_policy(
"user_can_invite_others_to_realm",
"realm_invite_to_realm_policy",
settings_data.user_can_invite_others_to_realm,
);
test_policy(
"user_can_move_messages_between_streams",
"realm_move_messages_between_streams_policy",
settings_data.user_can_move_messages_between_streams,
);