mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
The goal here was to enforce 100% coverage on parse_narrow, but the code has an unreachable line and is overly tolerant of bogus urls. This will be fixed in the next commit.
112 lines
2.8 KiB
JavaScript
112 lines
2.8 KiB
JavaScript
zrequire('hash_util');
|
|
zrequire('stream_data');
|
|
zrequire('people');
|
|
|
|
var _window = {
|
|
location: {
|
|
protocol: "https:",
|
|
host: "example.com",
|
|
pathname: "/",
|
|
},
|
|
};
|
|
|
|
global.patch_builtin('window', _window);
|
|
|
|
var hamlet = {
|
|
user_id: 1,
|
|
email: 'hamlet@example.com',
|
|
full_name: 'Hamlet',
|
|
};
|
|
|
|
people.add_in_realm(hamlet);
|
|
|
|
var sub = {
|
|
stream_id: 99,
|
|
name: 'frontend',
|
|
};
|
|
|
|
stream_data.add_sub(sub.name, sub);
|
|
|
|
run_test('hash_util', () => {
|
|
// Test encodeHashComponent
|
|
var str = 'https://www.zulipexample.com';
|
|
var result1 = hash_util.encodeHashComponent(str);
|
|
assert.equal(result1, 'https.3A.2F.2Fwww.2Ezulipexample.2Ecom');
|
|
|
|
// Test decodeHashComponent
|
|
var result2 = hash_util.decodeHashComponent(result1);
|
|
assert.equal(result2, str);
|
|
|
|
// Test encode_operand and decode_operand
|
|
|
|
function encode_decode_operand(operator, operand, expected_val) {
|
|
var encode_result = hash_util.encode_operand(operator, operand);
|
|
assert.equal(encode_result, expected_val);
|
|
var new_operand = encode_result;
|
|
var decode_result = hash_util.decode_operand(operator, new_operand);
|
|
assert.equal(decode_result, operand);
|
|
}
|
|
|
|
var operator = 'sender';
|
|
var operand = hamlet.email;
|
|
|
|
encode_decode_operand(operator, operand, '1-hamlet');
|
|
|
|
operator = 'stream';
|
|
operand = 'frontend';
|
|
|
|
encode_decode_operand(operator, operand, '99-frontend');
|
|
|
|
operator = 'topic';
|
|
operand = 'testing 123';
|
|
|
|
encode_decode_operand(operator, operand, 'testing.20123');
|
|
});
|
|
|
|
run_test('test_parse_narrow', () => {
|
|
assert.deepEqual(
|
|
hash_util.parse_narrow(['narrow', 'stream', '11-social']),
|
|
[{negated: false, operator: 'stream', operand: '11-social'}]
|
|
);
|
|
|
|
// This should probably return undefined.
|
|
assert.deepEqual(
|
|
hash_util.parse_narrow(['narrow', 'BOGUS']),
|
|
[{negated: false, operator: 'BOGUS', operand: ''}]
|
|
);
|
|
});
|
|
|
|
run_test('test_stream_edit_uri', () => {
|
|
var sub = {
|
|
name: 'research & development',
|
|
stream_id: 42,
|
|
};
|
|
assert.equal(hash_util.stream_edit_uri(sub),
|
|
'#streams/42/research.20.26.20development');
|
|
});
|
|
|
|
run_test('test_by_conversation_and_time_uri', () => {
|
|
var message = {
|
|
type: 'stream',
|
|
stream: 'frontend',
|
|
subject: 'testing',
|
|
id: 42,
|
|
};
|
|
|
|
assert.equal(hash_util.by_conversation_and_time_uri(message),
|
|
'https://example.com/#narrow/stream/99-frontend/subject/testing/near/42');
|
|
|
|
message = {
|
|
type: 'private',
|
|
display_recipient: [
|
|
{
|
|
user_id: hamlet.user_id,
|
|
},
|
|
],
|
|
id: 43,
|
|
};
|
|
|
|
assert.equal(hash_util.by_conversation_and_time_uri(message),
|
|
'https://example.com/#narrow/pm-with/1-pm/near/43');
|
|
});
|