zulip/frontend_tests/node_tests/user_groups.js
Tim Abbott bea9b6a748 user_groups: Fix real-time sync of user groups.
This fixes the user groups UI to follow the Zulip standard mechanisms
(using the appropriate server_events system to update all browsers
properly).  It also, as a side effect, fixes #8692, since it
eliminates the weird behavior of trying to re-insert a user group
after reformatting it in the frontend.

Thanks to Tarun Kumar for preliminary work on this.
2018-03-14 10:12:14 -07:00

56 lines
1.4 KiB
JavaScript

set_global('blueslip', {});
set_global('page_params', {});
zrequire('dict');
zrequire('user_groups');
(function test_user_groups() {
var students = {
name: 'Students',
id: 0,
members: [1, 2],
};
global.page_params.realm_user_groups = [students];
user_groups.initialize();
assert.equal(user_groups.get_user_group_from_id(students.id), students);
var admins = {
name: 'Admins',
id: 1,
members: [3],
};
var all = {
name: 'Everyone',
id: 2,
members: [1, 2, 3],
};
user_groups.add(admins);
assert.equal(user_groups.get_user_group_from_id(admins.id), admins);
var update_event = {
group_id: admins.id,
data: {
name: "new admins",
},
};
user_groups.update(update_event);
assert.equal(user_groups.get_user_group_from_id(admins.id).name, "new admins");
var called = false;
global.blueslip.error = function (msg) {
assert.equal(msg, "Unknown group_id in get_user_group_from_id: " + all.id);
called = true;
};
assert.equal(user_groups.get_user_group_from_id(all.id), undefined);
assert(called);
user_groups.remove(students);
global.blueslip.error = function (msg) {
assert.equal(msg, "Unknown group_id in get_user_group_from_id: " + students.id);
};
assert.equal(user_groups.get_user_group_from_id(students.id), undefined);
}());