diff --git a/frontend_tests/node_tests/user_groups.js b/frontend_tests/node_tests/user_groups.js index 6af61c33c9..4e77666eeb 100644 --- a/frontend_tests/node_tests/user_groups.js +++ b/frontend_tests/node_tests/user_groups.js @@ -173,18 +173,16 @@ run_test("get_recursive_subgroups", () => { // when determining recursive subgroups. // A test case that can occur in practice and would be problematic without this // optimization is a tree where each layer connects to every node in the next layer. - assert.deepEqual(user_groups.get_recursive_subgroups(admins.id), new Set([4])); - assert.deepEqual(user_groups.get_recursive_subgroups(all.id), new Set([4, 1, 2, 3])); - assert.deepEqual(user_groups.get_recursive_subgroups(test.id), new Set([2, 4, 1, 3])); - assert.deepEqual(user_groups.get_recursive_subgroups(foo.id), new Set([])); - - blueslip.expect("error", "Could not find user group with ID 1111"); - assert.deepEqual(user_groups.get_recursive_subgroups(1111), undefined); + assert.deepEqual(user_groups.get_recursive_subgroups(admins), new Set([4])); + assert.deepEqual(user_groups.get_recursive_subgroups(all), new Set([4, 1, 2, 3])); + assert.deepEqual(user_groups.get_recursive_subgroups(test), new Set([2, 4, 1, 3])); + assert.deepEqual(user_groups.get_recursive_subgroups(foo), new Set([])); user_groups.add_subgroups(foo.id, [9999]); + const foo_group = user_groups.get_user_group_from_id(foo.id); blueslip.expect("error", "Could not find subgroup with ID 9999", 2); - assert.deepEqual(user_groups.get_recursive_subgroups(foo.id), undefined); - assert.deepEqual(user_groups.get_recursive_subgroups(test.id), undefined); + assert.deepEqual(user_groups.get_recursive_subgroups(foo_group), undefined); + assert.deepEqual(user_groups.get_recursive_subgroups(test), undefined); }); run_test("is_user_in_group", () => { diff --git a/static/js/user_groups.ts b/static/js/user_groups.ts index 048e35f1eb..0ea9f6065d 100644 --- a/static/js/user_groups.ts +++ b/static/js/user_groups.ts @@ -154,13 +154,7 @@ export function get_user_groups_of_user(user_id: number): UserGroup[] { return groups_of_user; } -export function get_recursive_subgroups(target_group_id: number): Set | undefined { - const target_user_group = user_group_by_id_dict.get(target_group_id); - if (target_user_group === undefined) { - blueslip.error(`Could not find user group with ID ${target_group_id}`); - return undefined; - } - +export function get_recursive_subgroups(target_user_group: UserGroup): Set | undefined { // Correctness of this algorithm relying on the ES6 Set // implementation having the property that a `for of` loop will // visit all items that are added to the set during the loop. @@ -189,7 +183,7 @@ export function is_user_in_group(user_group_id: number, user_id: number): boolea return true; } - const subgroup_ids = get_recursive_subgroups(user_group_id); + const subgroup_ids = get_recursive_subgroups(user_group); if (subgroup_ids === undefined) { return false; }