Files
zulip/frontend_tests/node_tests/user_events.js
Steve Howell 1d07d0a532 settings: Extract admin_sections.maybe_disable_widgets().
We now run the code to disable widgets every time
we reload a section, which was the original intention
of the code, but the call to it only happened when
you first launched the page.

We also continue to run this logic for live updates
of is_admin, although it's worth noting that the
code still only handles the "demotion" case of going
from admin to non-admin. (If somebody makes you an
admin, you continue to need to reload to get
widgets enabled.)
2018-12-07 11:40:37 -08:00

162 lines
5.0 KiB
JavaScript

set_global('$', global.make_zjquery());
zrequire('people');
zrequire('user_events');
set_global('activity', {
redraw: function () {},
});
set_global('settings_users', {
update_user_data: function () {},
});
set_global('admin_sections', {
maybe_disable_widgets: function () {},
});
set_global('admin', {
show_or_hide_menu_item: function () {},
});
set_global('page_params', {
is_admin: true,
});
set_global('pm_list', {
update_private_messages: function () {},
});
set_global('narrow_state', {
update_email: function () {},
});
set_global('compose', {
update_email: function () {},
});
set_global('settings_account', {
update_email: function () {},
update_full_name: function () {},
});
set_global('message_live_update', {
});
set_global('blueslip', global.make_zblueslip());
var me = {
email: 'me@example.com',
user_id: 30,
full_name: 'Me Myself',
is_admin: true,
};
function initialize() {
people.init();
people.add(me);
people.initialize_current_user(me.user_id);
}
initialize();
run_test('updates', () => {
var person;
var isaac = {
email: 'isaac@example.com',
user_id: 32,
full_name: 'Isaac Newton',
};
people.add(isaac);
user_events.update_person({user_id: isaac.user_id, is_guest: true});
person = people.get_by_email(isaac.email);
assert(person.is_guest);
user_events.update_person({user_id: isaac.user_id, is_guest: false});
person = people.get_by_email(isaac.email);
assert(!person.is_guest);
user_events.update_person({user_id: isaac.user_id, is_admin: true});
person = people.get_by_email(isaac.email);
assert.equal(person.full_name, 'Isaac Newton');
assert.equal(person.is_admin, true);
var user_id;
var full_name;
global.message_live_update.update_user_full_name = function (user_id_arg, full_name_arg) {
user_id = user_id_arg;
full_name = full_name_arg;
};
user_events.update_person({user_id: isaac.user_id, full_name: 'Sir Isaac'});
person = people.get_by_email(isaac.email);
assert.equal(person.full_name, 'Sir Isaac');
assert.equal(person.is_admin, true);
assert.equal(user_id, isaac.user_id);
assert.equal(full_name, 'Sir Isaac');
user_events.update_person({user_id: me.user_id, is_admin: false});
assert(!global.page_params.is_admin);
user_events.update_person({user_id: me.user_id, full_name: 'Me V2'});
assert.equal(people.my_full_name(), 'Me V2');
assert.equal(user_id, me.user_id);
assert.equal(full_name, 'Me V2');
user_events.update_person({user_id: isaac.user_id, new_email: 'newton@example.com'});
person = people.get_person_from_user_id(isaac.user_id);
assert.equal(person.email, 'newton@example.com');
assert.equal(person.full_name, 'Sir Isaac');
user_events.update_person({user_id: me.user_id, new_email: 'meforu@example.com'});
person = people.get_person_from_user_id(me.user_id);
assert.equal(person.email, 'meforu@example.com');
assert.equal(person.full_name, 'Me V2');
var avatar_url;
global.message_live_update.update_avatar = function (user_id_arg, avatar_url_arg) {
user_id = user_id_arg;
avatar_url = avatar_url_arg;
};
user_events.update_person({user_id: isaac.user_id, full_name: 'Sir Isaac'});
person = people.get_by_email(isaac.email);
assert.equal(person.full_name, 'Sir Isaac');
assert.equal(person.is_admin, true);
assert.equal(user_id, isaac.user_id);
assert.equal(full_name, 'Sir Isaac');
user_events.update_person({user_id: isaac.user_id, avatar_url: 'http://gravatar.com/123456'});
person = people.get_by_email(isaac.email);
assert.equal(person.full_name, 'Sir Isaac');
assert.equal(user_id, isaac.user_id);
assert.equal(person.avatar_url, avatar_url);
user_events.update_person({user_id: me.user_id, avatar_url: 'http://gravatar.com/789456'});
person = people.get_by_email(me.email);
assert.equal(person.full_name, 'Me V2');
assert.equal(user_id, me.user_id);
assert.equal(person.avatar_url, avatar_url);
user_events.update_person({user_id: me.user_id, timezone: 'UTC'});
person = people.get_by_email(me.email);
assert(person.timezone);
blueslip.set_test_data('error', 'Got update_person event for unexpected user 29');
blueslip.set_test_data('error', 'Unknown user_id in get_person_from_user_id: 29');
assert(!user_events.update_person({user_id: 29, full_name: 'Sir Isaac Newton'}));
assert.equal(blueslip.get_test_logs('error').length, 2);
blueslip.clear_test_data();
me.profile_data = {};
user_events.update_person({user_id: me.user_id, custom_profile_field: {id: 3, value: 'Value'}});
person = people.get_by_email(me.email);
assert.equal(person.profile_data[3], 'Value');
var updated = false;
settings_account.update_email = (email) => {
assert.equal(email, 'you@example.org');
updated = true;
};
user_events.update_person({user_id: me.user_id, delivery_email: 'you@example.org'});
assert(updated);
});