Files
zulip/frontend_tests/node_tests/user_events.js
Joshua Pan bc74abae41 user_events: Create delivery_email update event procedure.
This ensures the "account settings" UI for managing a user's own email
address uses the delivery email, since that's what users care most about.

Eventually, we'll need to add support for at least viewing both email
addresses in "account settings", but this is the right long-term
behavior.
2018-12-06 20:09:57 -08:00

159 lines
4.9 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', {
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);
});