mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			214 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			214 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
add_dependencies({
 | 
						|
    util: 'js/util.js'
 | 
						|
});
 | 
						|
 | 
						|
global.stub_out_jquery();
 | 
						|
 | 
						|
var people = require("js/people.js");
 | 
						|
 | 
						|
set_global('page_params', {
 | 
						|
    people_list: [],
 | 
						|
    email: 'hamlet@example.com'
 | 
						|
});
 | 
						|
set_global('activity', {
 | 
						|
    set_user_statuses: function () {}
 | 
						|
});
 | 
						|
set_global('admin', {
 | 
						|
    show_or_hide_menu_item: function () {}
 | 
						|
});
 | 
						|
 | 
						|
var _ = global._;
 | 
						|
 | 
						|
(function test_basics() {
 | 
						|
    var orig_person = {
 | 
						|
        email: 'orig@example.com',
 | 
						|
        user_id: 31,
 | 
						|
        full_name: 'Original'
 | 
						|
    };
 | 
						|
    people.add(orig_person);
 | 
						|
 | 
						|
    var persons = people.get_all_persons();
 | 
						|
    assert.equal(_.size(persons), 1);
 | 
						|
    assert.equal(persons[0].full_name, 'Original');
 | 
						|
 | 
						|
    var realm_persons = people.get_realm_persons();
 | 
						|
    assert.equal(_.size(realm_persons), 0);
 | 
						|
 | 
						|
 | 
						|
    var full_name = 'Isaac Newton';
 | 
						|
    var email = 'isaac@example.com';
 | 
						|
    var isaac = {
 | 
						|
        email: email,
 | 
						|
        user_id: 32,
 | 
						|
        full_name: full_name
 | 
						|
    };
 | 
						|
    people.add(isaac);
 | 
						|
 | 
						|
    var person = people.get_by_name(full_name);
 | 
						|
    assert.equal(people.get_user_id(email), 32);
 | 
						|
    assert.equal(person.email, email);
 | 
						|
    person = people.get_by_email(email);
 | 
						|
    assert.equal(person.full_name, full_name);
 | 
						|
    person = people.realm_get(email);
 | 
						|
    assert(!person);
 | 
						|
    people.add_in_realm(isaac);
 | 
						|
    person = people.realm_get(email);
 | 
						|
    assert.equal(person.email, email);
 | 
						|
 | 
						|
    realm_persons = people.get_realm_persons();
 | 
						|
    assert.equal(_.size(realm_persons), 1);
 | 
						|
    assert.equal(realm_persons[0].full_name, 'Isaac Newton');
 | 
						|
 | 
						|
    people.update({email: email, is_admin: true});
 | 
						|
    person = people.get_by_email(email);
 | 
						|
    assert.equal(person.full_name, full_name);
 | 
						|
    assert.equal(person.is_admin, true);
 | 
						|
 | 
						|
    people.update({email: email, full_name: 'Sir Isaac'});
 | 
						|
    person = people.get_by_email(email);
 | 
						|
    assert.equal(person.full_name, 'Sir Isaac');
 | 
						|
    assert.equal(person.is_admin, true);
 | 
						|
 | 
						|
    global.page_params.email = email;
 | 
						|
 | 
						|
    people.update({email: email, is_admin: false});
 | 
						|
    assert(!global.page_params.is_admin);
 | 
						|
 | 
						|
    people.update({email: email, full_name: 'The Godfather of Calculus'});
 | 
						|
    assert.equal(global.page_params.fullname, 'The Godfather of Calculus');
 | 
						|
 | 
						|
    // Now remove isaac
 | 
						|
    people.remove(isaac);
 | 
						|
    person = people.get_by_email(email);
 | 
						|
    assert(!person);
 | 
						|
 | 
						|
    // The original person should still be there
 | 
						|
    person = people.get_by_email('orig@example.com');
 | 
						|
    assert.equal(person.full_name, 'Original');
 | 
						|
}());
 | 
						|
 | 
						|
(function test_get_person_from_user_id() {
 | 
						|
    var person = {
 | 
						|
        email: 'mary@example.com',
 | 
						|
        user_id: 42,
 | 
						|
        full_name: 'Mary'
 | 
						|
    };
 | 
						|
    people.add(person);
 | 
						|
    person = people.get_by_email('mary@example.com');
 | 
						|
    assert.equal(person.full_name, 'Mary');
 | 
						|
    person = people.get_person_from_user_id(42);
 | 
						|
    assert.equal(person.email, 'mary@example.com');
 | 
						|
 | 
						|
    // The semantics for update() are going to eventually
 | 
						|
    // change to use user_id as a key, but now we use email
 | 
						|
    // as a key and change attributes.  With the current
 | 
						|
    // behavior, we don't have to make update() do anything
 | 
						|
    // new.
 | 
						|
    person = {
 | 
						|
        email: 'mary@example.com',
 | 
						|
        user_id: 42,
 | 
						|
        full_name: 'Mary New'
 | 
						|
    };
 | 
						|
    people.update(person);
 | 
						|
    person = people.get_person_from_user_id(42);
 | 
						|
    assert.equal(person.full_name, 'Mary New');
 | 
						|
 | 
						|
    // remove() should eventually just take a user_id, but
 | 
						|
    // now it takes a full person object
 | 
						|
    people.remove(person);
 | 
						|
    person = people.get_by_email('mary@example.com');
 | 
						|
    assert.equal(person, undefined);
 | 
						|
    person = people.get_person_from_user_id(42);
 | 
						|
    assert.equal(person, undefined);
 | 
						|
}());
 | 
						|
 | 
						|
(function test_get_rest_of_realm() {
 | 
						|
    var myself = {
 | 
						|
        email: 'myself@example.com',
 | 
						|
        user_id: 201,
 | 
						|
        full_name: 'Yours Truly'
 | 
						|
    };
 | 
						|
    global.page_params.email = myself.email;
 | 
						|
    var alice1 = {
 | 
						|
        email: 'alice1@example.com',
 | 
						|
        user_id: 202,
 | 
						|
        full_name: 'Alice'
 | 
						|
    };
 | 
						|
    var alice2 = {
 | 
						|
        email: 'alice2@example.com',
 | 
						|
        user_id: 203,
 | 
						|
        full_name: 'Alice'
 | 
						|
    };
 | 
						|
    var bob = {
 | 
						|
        email: 'bob@example.com',
 | 
						|
        user_id: 204,
 | 
						|
        full_name: 'Bob van Roberts'
 | 
						|
    };
 | 
						|
    people.add_in_realm(myself);
 | 
						|
    people.add_in_realm(alice1);
 | 
						|
    people.add_in_realm(bob);
 | 
						|
    people.add_in_realm(alice2);
 | 
						|
    var others = people.get_rest_of_realm();
 | 
						|
    var expected = [
 | 
						|
        { email: 'alice1@example.com', full_name: 'Alice' },
 | 
						|
        { email: 'alice2@example.com', full_name: 'Alice' },
 | 
						|
        { email: 'bob@example.com', full_name: 'Bob van Roberts' }
 | 
						|
    ];
 | 
						|
    assert.deepEqual(others, expected);
 | 
						|
 | 
						|
    people.remove(alice1);
 | 
						|
    people.remove(alice2);
 | 
						|
    people.remove(bob);
 | 
						|
}());
 | 
						|
 | 
						|
(function test_recipient_counts() {
 | 
						|
    var email = 'anybody@example.com';
 | 
						|
    assert.equal(people.get_recipient_count({email: email}), 0);
 | 
						|
    people.incr_recipient_count(email);
 | 
						|
    people.incr_recipient_count(email);
 | 
						|
    assert.equal(people.get_recipient_count({email: email}), 2);
 | 
						|
 | 
						|
    assert.equal(people.get_recipient_count({pm_recipient_count: 5}), 5);
 | 
						|
}());
 | 
						|
 | 
						|
(function test_filtered_users() {
 | 
						|
     var charles = {
 | 
						|
        email: 'charles@example.com',
 | 
						|
        user_id: 301,
 | 
						|
        full_name: 'Charles Dickens'
 | 
						|
    };
 | 
						|
    var maria = {
 | 
						|
        email: 'athens@example.com',
 | 
						|
        user_id: 302,
 | 
						|
        full_name: 'Maria Athens'
 | 
						|
    };
 | 
						|
    var ashton = {
 | 
						|
        email: 'ashton@example.com',
 | 
						|
        user_id: 303,
 | 
						|
        full_name: 'Ashton Smith'
 | 
						|
    };
 | 
						|
 | 
						|
    people.add_in_realm(charles);
 | 
						|
    people.add_in_realm(maria);
 | 
						|
    people.add_in_realm(ashton);
 | 
						|
    var search_term = 'a';
 | 
						|
    var users = people.get_rest_of_realm();
 | 
						|
    var filtered_people = people.filter_people_by_search_terms(users, search_term);
 | 
						|
    var expected = [
 | 
						|
        { email: 'athens@example.com', full_name: 'Maria Athens' },
 | 
						|
        { email: 'ashton@example.com', full_name: 'Ashton Smith' }
 | 
						|
    ];
 | 
						|
    assert.equal(filtered_people["ashton@example.com"], true);
 | 
						|
    assert.equal(filtered_people["athens@example.com"], true);
 | 
						|
    assert.equal(_.keys(filtered_people).length, 2);
 | 
						|
    assert(!_.has(filtered_people, 'charles@example.com'));
 | 
						|
 | 
						|
    search_term = '';
 | 
						|
    filtered_people = people.filter_people_by_search_terms(users, search_term);
 | 
						|
    assert(_.isEmpty(filtered_people));
 | 
						|
 | 
						|
    people.remove(charles);
 | 
						|
    people.remove(maria);
 | 
						|
    people.remove(ashton);
 | 
						|
}());
 |