mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
user_groups: Add functions to update subgroups data on receiving events.
This commit is contained in:
@@ -178,6 +178,17 @@ run_test("user groups", ({override}) => {
|
||||
assert_same(args.user_ids, event.user_ids);
|
||||
}
|
||||
|
||||
event = event_fixtures.user_group__add_subgroups;
|
||||
{
|
||||
const stub = make_stub();
|
||||
override(user_groups, "add_subgroups", stub.f);
|
||||
dispatch(event);
|
||||
assert.equal(stub.num_calls, 1);
|
||||
const args = stub.get_args("group_id", "subgroup_ids");
|
||||
assert_same(args.group_id, event.group_id);
|
||||
assert_same(args.subgroup_ids, event.subgroup_ids);
|
||||
}
|
||||
|
||||
event = event_fixtures.user_group__remove_members;
|
||||
{
|
||||
const stub = make_stub();
|
||||
@@ -189,6 +200,17 @@ run_test("user groups", ({override}) => {
|
||||
assert_same(args.user_ids, event.user_ids);
|
||||
}
|
||||
|
||||
event = event_fixtures.user_group__remove_subgroups;
|
||||
{
|
||||
const stub = make_stub();
|
||||
override(user_groups, "remove_subgroups", stub.f);
|
||||
dispatch(event);
|
||||
assert.equal(stub.num_calls, 1);
|
||||
const args = stub.get_args("group_id", "subgroup_ids");
|
||||
assert_same(args.group_id, event.group_id);
|
||||
assert_same(args.subgroup_ids, event.subgroup_ids);
|
||||
}
|
||||
|
||||
event = event_fixtures.user_group__update;
|
||||
{
|
||||
const stub = make_stub();
|
||||
|
||||
@@ -746,6 +746,13 @@ exports.fixtures = {
|
||||
user_ids: [2],
|
||||
},
|
||||
|
||||
user_group__add_subgroups: {
|
||||
type: "user_group",
|
||||
op: "add_subgroups",
|
||||
group_id: 1,
|
||||
subgroup_ids: [3],
|
||||
},
|
||||
|
||||
user_group__remove: {
|
||||
type: "user_group",
|
||||
op: "remove",
|
||||
@@ -759,6 +766,13 @@ exports.fixtures = {
|
||||
user_ids: [99, 100],
|
||||
},
|
||||
|
||||
user_group__remove_subgroups: {
|
||||
type: "user_group",
|
||||
op: "remove_subgroups",
|
||||
group_id: 1,
|
||||
subgroup_ids: [3],
|
||||
},
|
||||
|
||||
user_group__update: {
|
||||
type: "user_group",
|
||||
op: "update",
|
||||
|
||||
@@ -99,6 +99,15 @@ run_test("user_groups", () => {
|
||||
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]));
|
||||
|
||||
user_groups.add_subgroups(all.id, [2, 3]);
|
||||
assert.deepEqual(
|
||||
user_groups.get_user_group_from_id(all.id).subgroups,
|
||||
new Set([2, 3, 5, 4, 6]),
|
||||
);
|
||||
|
||||
user_groups.remove_subgroups(all.id, [2, 4]);
|
||||
assert.deepEqual(user_groups.get_user_group_from_id(all.id).subgroups, new Set([3, 5, 6]));
|
||||
|
||||
assert.ok(user_groups.is_user_group(admins));
|
||||
const object = {
|
||||
name: "core",
|
||||
@@ -112,7 +121,9 @@ run_test("user_groups", () => {
|
||||
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);
|
||||
blueslip.expect("error", "Could not find user group with ID -9999", 4);
|
||||
user_groups.add_members(-9999);
|
||||
user_groups.remove_members(-9999);
|
||||
user_groups.add_subgroups(-9999);
|
||||
user_groups.remove_subgroups(-9999);
|
||||
});
|
||||
|
||||
@@ -754,6 +754,12 @@ export function dispatch_normal_event(event) {
|
||||
case "remove_members":
|
||||
user_groups.remove_members(event.group_id, event.user_ids);
|
||||
break;
|
||||
case "add_subgroups":
|
||||
user_groups.add_subgroups(event.group_id, event.subgroup_ids);
|
||||
break;
|
||||
case "remove_subgroups":
|
||||
user_groups.remove_subgroups(event.group_id, event.subgroup_ids);
|
||||
break;
|
||||
case "update":
|
||||
user_groups.update(event);
|
||||
break;
|
||||
|
||||
@@ -112,6 +112,30 @@ export function remove_members(user_group_id: number, user_ids: number[]): void
|
||||
}
|
||||
}
|
||||
|
||||
export function add_subgroups(user_group_id: number, subgroup_ids: number[]): void {
|
||||
const user_group = user_group_by_id_dict.get(user_group_id);
|
||||
if (user_group === undefined) {
|
||||
blueslip.error(`Could not find user group with ID ${user_group_id}`);
|
||||
return;
|
||||
}
|
||||
|
||||
for (const subgroup_id of subgroup_ids) {
|
||||
user_group.subgroups.add(subgroup_id);
|
||||
}
|
||||
}
|
||||
|
||||
export function remove_subgroups(user_group_id: number, subgroup_ids: number[]): void {
|
||||
const user_group = user_group_by_id_dict.get(user_group_id);
|
||||
if (user_group === undefined) {
|
||||
blueslip.error(`Could not find user group with ID ${user_group_id}`);
|
||||
return;
|
||||
}
|
||||
|
||||
for (const subgroup_id of subgroup_ids) {
|
||||
user_group.subgroups.delete(subgroup_id);
|
||||
}
|
||||
}
|
||||
|
||||
export function initialize(params: {realm_user_groups: UserGroupRaw[]}): void {
|
||||
for (const user_group of params.realm_user_groups) {
|
||||
add(user_group);
|
||||
|
||||
Reference in New Issue
Block a user