2017-11-08 17:22:58 +01:00
|
|
|
zrequire('people');
|
|
|
|
zrequire('hash_util');
|
|
|
|
zrequire('hashchange');
|
2018-02-15 21:02:47 +01:00
|
|
|
zrequire('stream_data');
|
2017-03-18 18:29:20 +01:00
|
|
|
|
2017-01-05 22:04:33 +01:00
|
|
|
(function test_operators_round_trip() {
|
2014-02-19 22:19:16 +01:00
|
|
|
var operators;
|
|
|
|
var hash;
|
2017-01-05 22:04:33 +01:00
|
|
|
var narrow;
|
2014-02-19 22:19:16 +01:00
|
|
|
|
|
|
|
operators = [
|
|
|
|
{operator: 'stream', operand: 'devel'},
|
2016-12-03 23:17:57 +01:00
|
|
|
{operator: 'topic', operand: 'algol'},
|
2014-02-19 22:19:16 +01:00
|
|
|
];
|
|
|
|
hash = hashchange.operators_to_hash(operators);
|
|
|
|
assert.equal(hash, '#narrow/stream/devel/topic/algol');
|
|
|
|
|
2017-01-05 22:04:33 +01:00
|
|
|
narrow = hashchange.parse_narrow(hash.split('/'));
|
|
|
|
assert.deepEqual(narrow, [
|
|
|
|
{operator: 'stream', operand: 'devel', negated: false},
|
|
|
|
{operator: 'topic', operand: 'algol', negated: false},
|
|
|
|
]);
|
|
|
|
|
2014-02-19 22:19:16 +01:00
|
|
|
operators = [
|
|
|
|
{operator: 'stream', operand: 'devel'},
|
2016-12-03 23:17:57 +01:00
|
|
|
{operator: 'topic', operand: 'visual c++', negated: true},
|
2014-02-19 22:19:16 +01:00
|
|
|
];
|
|
|
|
hash = hashchange.operators_to_hash(operators);
|
|
|
|
assert.equal(hash, '#narrow/stream/devel/-topic/visual.20c.2B.2B');
|
2017-01-05 22:04:33 +01:00
|
|
|
|
|
|
|
narrow = hashchange.parse_narrow(hash.split('/'));
|
|
|
|
assert.deepEqual(narrow, [
|
|
|
|
{operator: 'stream', operand: 'devel', negated: false},
|
|
|
|
{operator: 'topic', operand: 'visual c++', negated: true},
|
|
|
|
]);
|
|
|
|
|
2018-02-15 21:02:47 +01:00
|
|
|
// 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},
|
|
|
|
]);
|
2014-02-19 22:19:16 +01:00
|
|
|
}());
|
2017-01-19 03:53:50 +01:00
|
|
|
|
|
|
|
(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');
|
|
|
|
}());
|