zulip/frontend_tests/node_tests/user_groups.js

116 lines
3.6 KiB
JavaScript
Raw Normal View History

"use strict";
const {strict: assert} = require("assert");
const {zrequire} = require("../zjsunit/namespace");
const {run_test} = require("../zjsunit/test");
const blueslip = require("../zjsunit/zblueslip");
const user_groups = zrequire("user_groups");
run_test("user_groups", () => {
const students = {
description: "Students group",
name: "Students",
id: 0,
members: new Set([1, 2]),
is_system_group: false,
};
const params = {};
params.realm_user_groups = [students];
const user_id_not_in_any_group = 0;
const user_id_part_of_a_group = 2;
user_groups.initialize(params);
assert.deepEqual(user_groups.get_user_group_from_id(students.id), students);
const admins = {
name: "Admins",
description: "foo",
id: 1,
members: new Set([3]),
is_system_group: false,
};
const all = {
name: "Everyone",
id: 2,
members: new Set([1, 2, 3]),
is_system_group: false,
};
user_groups.add(admins);
assert.deepEqual(user_groups.get_user_group_from_id(admins.id), admins);
const update_name_event = {
group_id: admins.id,
data: {
name: "new admins",
},
};
user_groups.update(update_name_event);
assert.equal(user_groups.get_user_group_from_id(admins.id).name, "new admins");
const update_des_event = {
group_id: admins.id,
data: {
description: "administer",
},
};
user_groups.update(update_des_event);
assert.equal(user_groups.get_user_group_from_id(admins.id).description, "administer");
assert.throws(() => user_groups.get_user_group_from_id(all.id), {
name: "Error",
message: "Unknown group_id in get_user_group_from_id: 2",
});
user_groups.remove(students);
assert.throws(() => user_groups.get_user_group_from_id(students.id), {
name: "Error",
message: "Unknown group_id in get_user_group_from_id: 0",
});
assert.equal(user_groups.get_user_group_from_name(all.name), undefined);
assert.equal(user_groups.get_user_group_from_name(admins.name).id, 1);
user_groups.add(all);
const user_groups_array = user_groups.get_realm_user_groups();
assert.equal(user_groups_array.length, 2);
assert.equal(user_groups_array[1].name, "Everyone");
assert.equal(user_groups_array[0].name, "new admins");
const groups_of_users = user_groups.get_user_groups_of_user(user_id_part_of_a_group);
assert.equal(groups_of_users.length, 1);
assert.equal(groups_of_users[0].name, "Everyone");
const groups_of_users_nomatch = user_groups.get_user_groups_of_user(user_id_not_in_any_group);
assert.equal(groups_of_users_nomatch.length, 0);
assert.ok(!user_groups.is_member_of(admins.id, 4));
assert.ok(user_groups.is_member_of(admins.id, 3));
user_groups.add_members(all.id, [5, 4]);
assert.deepEqual(user_groups.get_user_group_from_id(all.id).members, new Set([1, 2, 3, 5, 4]));
user_groups.remove_members(all.id, [1, 4]);
assert.deepEqual(user_groups.get_user_group_from_id(all.id).members, new Set([2, 3, 5]));
assert.ok(user_groups.is_user_group(admins));
const object = {
name: "core",
id: 3,
};
assert.ok(!user_groups.is_user_group(object));
user_groups.init();
assert.equal(user_groups.get_realm_user_groups().length, 0);
blueslip.expect("error", "Could not find user group with ID -1");
assert.equal(user_groups.is_member_of(-1, 15), false);
blueslip.expect("error", "Could not find user group with ID -9999", 2);
user_groups.add_members(-9999);
user_groups.remove_members(-9999);
});