mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	Fixes #9842. Enables avatar images in pills wherever user_pill.js is used. (e.g composebox, user group settings) Changes to search_pill.js are not made as search pills haven't been added yet completely and search_pill.js just contains the preparatory code right now. No change to compose_pm_pill.js is not required as it uses `user_pill.create_item_from_text` in its `create` function.
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
zrequire('people');
 | 
						|
set_global('md5', function (s) {
 | 
						|
    return 'md5-' + s;
 | 
						|
});
 | 
						|
zrequire('user_pill');
 | 
						|
 | 
						|
set_global('page_params', {
 | 
						|
});
 | 
						|
 | 
						|
var alice = {
 | 
						|
    email: 'alice@example.com',
 | 
						|
    user_id: 99,
 | 
						|
    full_name: 'Alice Barson',
 | 
						|
};
 | 
						|
 | 
						|
var isaac = {
 | 
						|
    email: 'isaac@example.com',
 | 
						|
    user_id: 102,
 | 
						|
    full_name: 'Isaac Newton',
 | 
						|
};
 | 
						|
 | 
						|
var bogus_item = {
 | 
						|
    email: 'bogus@example.com',
 | 
						|
    display_value: 'bogus@example.com',
 | 
						|
};
 | 
						|
 | 
						|
var 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_in_realm(alice);
 | 
						|
    people.add_in_realm(isaac);
 | 
						|
});
 | 
						|
 | 
						|
run_test('create_item', () => {
 | 
						|
 | 
						|
    function test_create_item(email, current_items, expected_item) {
 | 
						|
        var 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', () => {
 | 
						|
    var appended;
 | 
						|
    var 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;
 | 
						|
    }
 | 
						|
 | 
						|
    var 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', () => {
 | 
						|
    var items = [isaac_item, bogus_item];
 | 
						|
 | 
						|
    var pill_widget = {
 | 
						|
        items: function () { return items; },
 | 
						|
    };
 | 
						|
 | 
						|
    assert.deepEqual(user_pill.get_user_ids(pill_widget), [isaac.user_id]);
 | 
						|
});
 | 
						|
 | 
						|
run_test('typeahead', () => {
 | 
						|
    var items = [isaac_item, bogus_item];
 | 
						|
 | 
						|
    var 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.
 | 
						|
    var result = user_pill.typeahead_source(pill_widget);
 | 
						|
    assert.deepEqual(result, [alice]);
 | 
						|
});
 |