zulip/frontend_tests/node_tests/hashchange.js

82 lines
2.4 KiB
JavaScript

zrequire('people');
zrequire('hash_util');
zrequire('hashchange');
zrequire('stream_data');
(function test_operators_round_trip() {
var operators;
var hash;
var narrow;
operators = [
{operator: 'stream', operand: 'devel'},
{operator: 'topic', operand: 'algol'},
];
hash = hashchange.operators_to_hash(operators);
assert.equal(hash, '#narrow/stream/devel/topic/algol');
narrow = hashchange.parse_narrow(hash.split('/'));
assert.deepEqual(narrow, [
{operator: 'stream', operand: 'devel', negated: false},
{operator: 'topic', operand: 'algol', negated: false},
]);
operators = [
{operator: 'stream', operand: 'devel'},
{operator: 'topic', operand: 'visual c++', negated: true},
];
hash = hashchange.operators_to_hash(operators);
assert.equal(hash, '#narrow/stream/devel/-topic/visual.20c.2B.2B');
narrow = hashchange.parse_narrow(hash.split('/'));
assert.deepEqual(narrow, [
{operator: 'stream', operand: 'devel', negated: false},
{operator: 'topic', operand: 'visual c++', negated: true},
]);
// test new encodings, where we have a stream id
var florida_stream = {
name: 'Florida, USA',
stream_id: 987,
};
stream_data.add_sub(florida_stream.name, florida_stream);
operators = [
{operator: 'stream', operand: 'Florida, USA'},
];
hash = hashchange.operators_to_hash(operators);
assert.equal(hash, '#narrow/stream/987-Florida.2C-USA');
narrow = hashchange.parse_narrow(hash.split('/'));
assert.deepEqual(narrow, [
{operator: 'stream', operand: 'Florida, USA', negated: false},
]);
}());
(function test_people_slugs() {
var operators;
var hash;
var narrow;
var alice = {
email: 'alice@example.com',
user_id: 42,
full_name: 'Alice Smith',
};
people.add(alice);
operators = [
{operator: 'sender', operand: 'alice@example.com'},
];
hash = hashchange.operators_to_hash(operators);
assert.equal(hash, '#narrow/sender/42-alice');
narrow = hashchange.parse_narrow(hash.split('/'));
assert.deepEqual(narrow, [
{operator: 'sender', operand: 'alice@example.com', negated: false},
]);
operators = [
{operator: 'pm-with', operand: 'alice@example.com'},
];
hash = hashchange.operators_to_hash(operators);
assert.equal(hash, '#narrow/pm-with/42-alice');
}());