Files
zulip/frontend_tests/node_tests/user_pill.js
Steve Howell f0c99b42ec Rename people.add_in_realm to people.add().
We had this API:

    people.add_in_realm = full-fledged user
    people.add = not necessarily in realm

Now the API is this:

    people.add = full-fledged user
    people._add_user = internal API for cross-realm bots
        and deactivated users

I think in most of our tests the distinction between
people.add() and people.add_in_realm() was just an
accident of history and didn't reflect any real intention.

And if I had to guess the intention in 99% of the cases,
folks probably thought they were just creating ordinary,
active users in the current realm.

In places where the distinction was obviously important
(because a test failed), I deactivated the user via
`people.deactivate`.

For the 'basics' test in the people test suite, I clean
up the test setup for Isaac.  Before this commit I was
adding him first as a non-realm user then as a full-fledged
user, but this was contrived and confusing, and we
didn't really need it for test coverage purposes.
2020-03-22 10:55:11 -07:00

118 lines
2.9 KiB
JavaScript

zrequire('people');
set_global('md5', function (s) {
return 'md5-' + s;
});
zrequire('user_pill');
set_global('page_params', {
});
const alice = {
email: 'alice@example.com',
user_id: 99,
full_name: 'Alice Barson',
};
const isaac = {
email: 'isaac@example.com',
user_id: 102,
full_name: 'Isaac Newton',
};
const bogus_item = {
email: 'bogus@example.com',
display_value: 'bogus@example.com',
};
const isaac_item = {
email: 'isaac@example.com',
display_value: 'Isaac Newton',
user_id: isaac.user_id,
img_src: 'https://secure.gravatar.com/avatar/md5-isaac@example.com?d=identicon&s=50',
};
run_test('setup', () => {
people.add(alice);
people.add(isaac);
});
run_test('create_item', () => {
function test_create_item(email, current_items, expected_item) {
const item = user_pill.create_item_from_email(email, current_items);
assert.deepEqual(item, expected_item);
}
page_params.realm_is_zephyr_mirror_realm = true;
test_create_item('bogus@example.com', [], bogus_item);
test_create_item('bogus@example.com', [bogus_item], undefined);
test_create_item('isaac@example.com', [], isaac_item);
test_create_item('isaac@example.com', [isaac_item], undefined);
page_params.realm_is_zephyr_mirror_realm = false;
test_create_item('bogus@example.com', [], undefined);
test_create_item('isaac@example.com', [], isaac_item);
test_create_item('isaac@example.com', [isaac_item], undefined);
});
run_test('get_email', () => {
assert.equal(user_pill.get_email_from_item({email: 'foo@example.com'}), 'foo@example.com');
});
run_test('append', () => {
let appended;
let cleared;
function fake_append(opts) {
appended = true;
assert.equal(opts.email, isaac.email);
assert.equal(opts.display_value, isaac.full_name);
assert.equal(opts.user_id, isaac.user_id);
assert.equal(opts.img_src, isaac_item.img_src);
}
function fake_clear() {
cleared = true;
}
const pill_widget = {
appendValidatedData: fake_append,
clear_text: fake_clear,
};
user_pill.append_person({
person: isaac,
pill_widget: pill_widget,
});
assert(appended);
assert(cleared);
});
run_test('get_items', () => {
const items = [isaac_item, bogus_item];
const pill_widget = {
items: function () { return items; },
};
assert.deepEqual(user_pill.get_user_ids(pill_widget), [isaac.user_id]);
});
run_test('typeahead', () => {
const items = [isaac_item, bogus_item];
const pill_widget = {
items: function () { return items; },
};
// Both alice and isaac are in our realm, but isaac will be
// excluded by virtue of already being one of the widget items.
// And then bogus_item is just a red herring to test robustness.
const result = user_pill.typeahead_source(pill_widget);
assert.deepEqual(result, [alice]);
});