zulip/frontend_tests/node_tests/hash_util.js

88 lines
2.2 KiB
JavaScript
Raw Normal View History

zrequire('hash_util');
zrequire('stream_data');
zrequire('people');
2018-08-05 01:30:23 +02:00
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');
});
2018-08-05 01:30:23 +02:00
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',
reply_to: 'iago@example.com,hamlet@example.com',
id: 43,
};
people.my_current_email = () => 'jeff@example.com';
assert.equal(hash_util.by_conversation_and_time_uri(message),
'https://example.com/#narrow/pm-with/iago.40example.2Ecom.2Chamlet.40example.2Ecom.2Cjeff.40example.2Ecom/near/43');
});