Files
zulip/zerver/tests/frontend/node/stream_data.js
Steve Howell 4b095cbad1 Make "assert" global in the node tests.
In the early days of the node tests we didn't have an index.js
driver, so each test set it up its own environment.  That ship
has long since sailed, so now we just require assert in index.js
as a global and make it so that the linter doesn't complain.

(imported from commit 1ded3d330ff40603cf4dd7c5578f6a47088d7cc8)
2014-02-03 10:54:38 -05:00

118 lines
4.1 KiB
JavaScript

add_dependencies({
stream_color: 'js/stream_color.js'
});
set_global('blueslip', {});
var stream_data = require('js/stream_data.js');
(function test_basics() {
var denmark = {
subscribed: false,
color: 'blue',
name: 'Denmark',
in_home_view: false
};
var social = {
subscribed: true,
color: 'red',
name: 'social',
in_home_view: true,
invite_only: true
};
stream_data.add_sub('Denmark', denmark);
stream_data.add_sub('social', social);
assert.equal(stream_data.get_sub('denmark'), denmark);
assert.equal(stream_data.get_sub('Social'), social);
assert.deepEqual(stream_data.subscribed_streams(), ['social']);
assert.deepEqual(stream_data.get_colors(), ['red']);
assert(stream_data.all_subscribed_streams_are_in_home_view());
assert(stream_data.is_subscribed('social'));
assert(stream_data.is_subscribed('Social'));
assert(!stream_data.is_subscribed('Denmark'));
assert(!stream_data.is_subscribed('Rome'));
assert(stream_data.get_invite_only('social'));
assert(!stream_data.get_invite_only('unknown'));
assert.equal(stream_data.get_color('social'), 'red');
assert.equal(stream_data.get_color('unknown'), global.stream_color.default_color);
assert.equal(stream_data.get_name('denMARK'), 'Denmark');
assert.equal(stream_data.get_name('unknown Stream'), 'unknown Stream');
assert(stream_data.in_home_view('social'));
assert(!stream_data.in_home_view('denmark'));
// Deleting a subscription makes you unsubscribed from the perspective of
// the client.
// Deleting a subscription is case-insensitive.
stream_data.delete_sub('SOCIAL');
assert(!stream_data.is_subscribed('social'));
}());
(function test_get_and_set() {
stream_data.clear_subscriptions();
stream_data.add_sub('Denmark', {name: 'Denmark', subscribed: true});
assert.deepEqual(stream_data.subscribed_streams(), ['Denmark']);
var info = stream_data.get_stream_info();
stream_data.clear_subscriptions();
assert.deepEqual(stream_data.subscribed_streams(), []);
stream_data.set_stream_info(info);
assert.deepEqual(stream_data.subscribed_streams(), ['Denmark']);
}());
(function test_subscribers() {
stream_data.clear_subscriptions();
var sub = {name: 'Rome', subscribed: true};
stream_data.add_sub('Rome', sub);
stream_data.set_subscribers(sub, ['fred@zulip.com', 'george@zulip.com']);
assert(stream_data.user_is_subscribed('Rome', 'FRED@zulip.com'));
assert(stream_data.user_is_subscribed('Rome', 'fred@zulip.com'));
assert(stream_data.user_is_subscribed('Rome', 'george@zulip.com'));
assert(!stream_data.user_is_subscribed('Rome', 'not_fred@zulip.com'));
stream_data.set_subscribers(sub, []);
var email = 'brutus@zulip.com';
assert(!stream_data.user_is_subscribed('Rome', email));
// add
stream_data.add_subscriber('Rome', email);
assert(stream_data.user_is_subscribed('Rome', email));
// verify that adding an already-removed subscriber is a noop
stream_data.add_subscriber('Rome', email);
assert(stream_data.user_is_subscribed('Rome', email));
// remove
stream_data.remove_subscriber('Rome', email);
assert(!stream_data.user_is_subscribed('Rome', email));
// verify that removing an already-removed subscriber is a noop
stream_data.remove_subscriber('Rome', email);
assert(!stream_data.user_is_subscribed('Rome', email));
// Verify defensive code in set_subscribers, where the second parameter
// can be undefined.
stream_data.set_subscribers(sub);
stream_data.add_sub('Rome', sub);
stream_data.add_subscriber('Rome', email);
sub.subscribed = true;
assert(stream_data.user_is_subscribed('Rome', email));
// Verify that we noop and don't crash when unsubsribed.
sub.subscribed = false;
global.blueslip.warn = function () {};
stream_data.add_subscriber('Rome', email);
assert.equal(stream_data.user_is_subscribed('Rome', email), undefined);
stream_data.remove_subscriber('Rome', email);
assert.equal(stream_data.user_is_subscribed('Rome', email), undefined);
}());