mirror of
https://github.com/zulip/zulip.git
synced 2025-11-19 14:08:23 +00:00
* In most cases, eslint --fix with the right comma-dangle settings was able to update the code correctly. * The exceptions were cases where the parser incorrectly treated the arguments to functions as lists/objects and added commas; these are detectable with linters, and we fixed manually. Since this is test code, we can be reasonably confident that just fixing the failures suffices to correct any bugs introduced by making changes automatically.
376 lines
12 KiB
JavaScript
376 lines
12 KiB
JavaScript
var common = require('../casper_lib/common.js').common;
|
|
|
|
common.start_and_log_in();
|
|
|
|
// We could use the messages sent by 02-site.js, but we want to
|
|
// make sure each test file can be run individually (which the
|
|
// 'run' script provides for).
|
|
|
|
casper.then(function () {
|
|
casper.test.info('Sending messages');
|
|
});
|
|
|
|
common.then_send_many([
|
|
{ stream: 'Verona', subject: 'frontend test',
|
|
content: 'test message A' },
|
|
|
|
{ stream: 'Verona', subject: 'frontend test',
|
|
content: 'test message B' },
|
|
|
|
{ stream: 'Verona', subject: 'other subject',
|
|
content: 'test message C' },
|
|
|
|
{ stream: 'Denmark', subject: 'frontend test',
|
|
content: 'other message' },
|
|
|
|
{ recipient: 'cordelia@zulip.com, hamlet@zulip.com',
|
|
content: 'personal A' },
|
|
|
|
{ recipient: 'cordelia@zulip.com, hamlet@zulip.com',
|
|
content: 'personal B' },
|
|
|
|
{ recipient: 'cordelia@zulip.com',
|
|
content: 'personal C' },
|
|
|
|
{ stream: 'Verona', subject: 'frontend test',
|
|
content: 'test message D' },
|
|
|
|
{ recipient: 'cordelia@zulip.com, hamlet@zulip.com',
|
|
content: 'personal D' },
|
|
|
|
{ recipient: 'cordelia@zulip.com',
|
|
content: 'personal E' },
|
|
]);
|
|
|
|
|
|
// Define the messages we expect to see when narrowed.
|
|
|
|
function expect_home() {
|
|
casper.then(function () {
|
|
casper.waitUntilVisible('#zhome', function () {
|
|
common.expected_messages('zhome', [
|
|
'Verona > frontend test',
|
|
'You and Cordelia Lear, King Hamlet',
|
|
'You and Cordelia Lear',
|
|
], [
|
|
'<p>test message D</p>',
|
|
'<p>personal D</p>',
|
|
'<p>personal E</p>',
|
|
]);
|
|
});
|
|
});
|
|
}
|
|
|
|
function expect_stream() {
|
|
casper.then(function () {
|
|
casper.waitUntilVisible('#zfilt', function () {
|
|
common.expected_messages('zfilt', [
|
|
'Verona > frontend test',
|
|
'Verona > other subject',
|
|
'Verona > frontend test',
|
|
], [
|
|
'<p>test message A</p>',
|
|
'<p>test message B</p>',
|
|
'<p>test message C</p>',
|
|
'<p>test message D</p>',
|
|
]);
|
|
});
|
|
});
|
|
}
|
|
|
|
function expect_stream_subject() {
|
|
casper.then(function () {
|
|
casper.waitUntilVisible('#zfilt', function () {
|
|
common.expected_messages('zfilt', [
|
|
'Verona > frontend test',
|
|
], [
|
|
'<p>test message A</p>',
|
|
'<p>test message B</p>',
|
|
'<p>test message D</p>',
|
|
]);
|
|
});
|
|
});
|
|
}
|
|
|
|
function expect_subject() {
|
|
casper.then(function () {
|
|
casper.waitUntilVisible('#zfilt', function () {
|
|
common.expected_messages('zfilt', [
|
|
'Verona > frontend test',
|
|
'Denmark > frontend test',
|
|
'Verona > frontend test',
|
|
], [
|
|
'<p>test message A</p>',
|
|
'<p>test message B</p>',
|
|
'<p>other message</p>',
|
|
'<p>test message D</p>',
|
|
]);
|
|
});
|
|
});
|
|
}
|
|
|
|
function expect_huddle() {
|
|
casper.then(function () {
|
|
casper.waitUntilVisible('#zfilt', function () {
|
|
common.expected_messages('zfilt', [
|
|
'You and Cordelia Lear, King Hamlet',
|
|
], [
|
|
'<p>personal A</p>',
|
|
'<p>personal B</p>',
|
|
'<p>personal D</p>',
|
|
]);
|
|
});
|
|
});
|
|
}
|
|
|
|
function expect_1on1() {
|
|
casper.then(function () {
|
|
casper.waitUntilVisible('#zfilt', function () {
|
|
common.expected_messages('zfilt', [
|
|
'You and Cordelia Lear',
|
|
], [
|
|
'<p>personal C</p>',
|
|
'<p>personal E</p>',
|
|
]);
|
|
});
|
|
});
|
|
}
|
|
|
|
function expect_all_pm() {
|
|
casper.then(function () {
|
|
casper.waitUntilVisible('#zfilt', function () {
|
|
common.expected_messages('zfilt', [
|
|
'You and Cordelia Lear, King Hamlet',
|
|
'You and Cordelia Lear',
|
|
], [
|
|
'<p>personal A</p>',
|
|
'<p>personal B</p>',
|
|
'<p>personal C</p>',
|
|
'<p>personal D</p>',
|
|
'<p>personal E</p>',
|
|
]);
|
|
});
|
|
});
|
|
}
|
|
|
|
function check_narrow_title(title) {
|
|
return function () {
|
|
// need to get title tag from HTML
|
|
// test if it's equal to some string passed in to function
|
|
casper.test.assertSelectorHasText('title', title, 'Got expected narrow title');
|
|
};
|
|
}
|
|
|
|
function un_narrow() {
|
|
casper.then(common.un_narrow);
|
|
expect_home();
|
|
casper.then(check_narrow_title('home - Zulip Dev - Zulip'));
|
|
}
|
|
|
|
function search_and_check(str, item, check, narrow_title) {
|
|
common.select_item_via_typeahead('#search_query', str, item);
|
|
check();
|
|
casper.then(check_narrow_title(narrow_title));
|
|
un_narrow();
|
|
}
|
|
|
|
function search_silent_user(str, item) {
|
|
common.select_item_via_typeahead('#search_query', str, item);
|
|
casper.then(function () {
|
|
casper.waitUntilVisible('#silent_user', function () {
|
|
casper.test.info("Empty feed for silent user visible.");
|
|
var expected_message = "\n You haven't received any messages sent by this user yet!"+
|
|
"\n ";
|
|
this.test.assertEquals(casper.fetchText('#silent_user'), expected_message);
|
|
});
|
|
});
|
|
un_narrow();
|
|
}
|
|
|
|
function search_non_existing_user(str, item) {
|
|
common.select_item_via_typeahead('#search_query', str, item);
|
|
casper.then(function () {
|
|
casper.waitUntilVisible('#non_existing_user', function () {
|
|
casper.test.info("Empty feed for non existing user visible.");
|
|
var expected_message = "\n This user does not exist!"+
|
|
"\n ";
|
|
this.test.assertEquals(casper.fetchText('#non_existing_user'), expected_message);
|
|
});
|
|
});
|
|
un_narrow();
|
|
}
|
|
|
|
// Narrow by clicking links.
|
|
|
|
casper.then(function () {
|
|
common.wait_for_receive(function () {
|
|
casper.test.info('Narrowing by clicking stream');
|
|
casper.click('*[title="Narrow to stream \\\"Verona\\\""]');
|
|
});
|
|
});
|
|
|
|
expect_stream();
|
|
|
|
casper.then(check_narrow_title('Verona - Zulip Dev - Zulip'));
|
|
|
|
un_narrow();
|
|
|
|
expect_home();
|
|
|
|
casper.then(function () {
|
|
casper.test.info('Narrowing by clicking subject');
|
|
casper.click('*[title="Narrow to stream \\\"Verona\\\", topic \\\"frontend test\\\""]');
|
|
});
|
|
|
|
expect_stream_subject();
|
|
|
|
casper.then(check_narrow_title('frontend test - Zulip Dev - Zulip'));
|
|
|
|
casper.then(function () {
|
|
// This time, un-narrow by hitting the search 'x'
|
|
casper.test.info('Un-narrowing');
|
|
casper.click('#search_exit');
|
|
});
|
|
|
|
expect_home();
|
|
|
|
casper.then(function () {
|
|
casper.test.info('Narrowing by clicking personal');
|
|
casper.click('*[title="Narrow to your private messages with Cordelia Lear, King Hamlet"]');
|
|
});
|
|
|
|
expect_huddle();
|
|
|
|
casper.then(check_narrow_title('private - Zulip Dev - Zulip'));
|
|
|
|
casper.then(function () {
|
|
// Un-narrow by clicking "Zulip"
|
|
casper.test.info('Un-narrowing');
|
|
casper.click('.brand');
|
|
});
|
|
|
|
expect_home();
|
|
|
|
// Narrow by typing in search strings or operators.
|
|
// Test stream / recipient autocomplete in the search bar
|
|
search_and_check('Verona', 'Narrow to stream', expect_stream,
|
|
'Verona - Zulip Dev - Zulip');
|
|
|
|
search_and_check('Cordelia', 'Narrow to private', expect_1on1,
|
|
'private - Zulip Dev - Zulip');
|
|
|
|
// Test operators
|
|
search_and_check('stream:Verona', 'Narrow', expect_stream,
|
|
'Verona - Zulip Dev - Zulip');
|
|
|
|
search_and_check('stream:Verona subject:frontend+test', 'Narrow', expect_stream_subject,
|
|
'frontend test - Zulip Dev - Zulip');
|
|
|
|
search_and_check('stream:Verona topic:frontend+test', 'Narrow', expect_stream_subject,
|
|
'frontend test - Zulip Dev - Zulip');
|
|
|
|
search_and_check('subject:frontend+test', 'Narrow', expect_subject,
|
|
'home - Zulip Dev - Zulip');
|
|
|
|
search_silent_user('sender:emailgateway@zulip.com', 'Narrow');
|
|
|
|
search_non_existing_user('sender:dummyuser@zulip.com', 'Narrow');
|
|
|
|
// Narrow by clicking the left sidebar.
|
|
casper.then(function () {
|
|
casper.test.info('Narrowing with left sidebar');
|
|
casper.click('#stream_filters [data-name="Verona"] a');
|
|
});
|
|
|
|
expect_stream();
|
|
|
|
casper.then(check_narrow_title('Verona - Zulip Dev - Zulip'));
|
|
|
|
casper.thenClick('#global_filters [data-name="home"] a');
|
|
|
|
expect_home();
|
|
|
|
casper.then(check_narrow_title('home - Zulip Dev - Zulip'));
|
|
|
|
casper.thenClick('#global_filters [data-name="private"] a');
|
|
|
|
expect_all_pm();
|
|
|
|
casper.then(check_narrow_title('private - Zulip Dev - Zulip'));
|
|
|
|
un_narrow();
|
|
|
|
// Make sure stream search filters the stream list
|
|
casper.then(function () {
|
|
casper.test.info('Search streams using left sidebar');
|
|
casper.test.assertExists('.stream-list-filter.notdisplayed', 'Stream filter box not visible initially');
|
|
casper.click('#streams_header .sidebar-title');
|
|
});
|
|
|
|
casper.waitWhileSelector('.stream-list-filter.notdisplayed', function () {
|
|
casper.test.assertExists('#stream_filters [data-name="Denmark"]', 'Original stream list contains Denmark');
|
|
casper.test.assertExists('#stream_filters [data-name="Scotland"]', 'Original stream list contains Scotland');
|
|
casper.test.assertExists('#stream_filters [data-name="Verona"]', 'Original stream list contains Verona');
|
|
});
|
|
|
|
// We search for the beginning of "Verona", not case sensitive
|
|
casper.then(function () {
|
|
casper.evaluate(function () {
|
|
$('.stream-list-filter').expectOne()
|
|
.focus()
|
|
.val('ver')
|
|
.trigger($.Event('input'));
|
|
});
|
|
});
|
|
|
|
// There will be no race condition between these two waits because we
|
|
// expect them to happen in parallel.
|
|
casper.waitWhileSelector('#stream_filters [data-name="Denmark"]', function () {
|
|
casper.test.assertDoesntExist('#stream_filters [data-name="Denmark"]', 'Filtered stream list does not contain Denmark');
|
|
});
|
|
casper.waitWhileSelector('#stream_filters [data-name="Scotland"]', function () {
|
|
casper.test.assertDoesntExist('#stream_filters [data-name="Scotland"]', 'Filtered stream list does not contain Scotland');
|
|
});
|
|
|
|
casper.then(function () {
|
|
casper.test.assertExists('#stream_filters [data-name="Verona"]', 'Filtered stream list does contain Verona');
|
|
});
|
|
|
|
// Clearing the list should give us back all the streams in the list
|
|
casper.then(function () {
|
|
casper.evaluate(function () {
|
|
$('.stream-list-filter').expectOne()
|
|
.focus()
|
|
.val('')
|
|
.trigger($.Event('input'));
|
|
});
|
|
});
|
|
|
|
// There will be no race condition between these waits because we
|
|
// expect them to happen in parallel.
|
|
casper.waitForSelector('#stream_filters [data-name="Denmark"]', function () {
|
|
casper.test.assertExists('#stream_filters [data-name="Denmark"]', 'Restored stream list contains Denmark');
|
|
});
|
|
casper.waitForSelector('#stream_filters [data-name="Scotland"]', function () {
|
|
casper.test.assertExists('#stream_filters [data-name="Denmark"]', 'Restored stream list contains Scotland');
|
|
});
|
|
casper.waitForSelector('#stream_filters [data-name="Verona"]', function () {
|
|
casper.test.assertExists('#stream_filters [data-name="Denmark"]', 'Restored stream list contains Verona');
|
|
});
|
|
|
|
|
|
casper.thenClick('#streams_header .sidebar-title');
|
|
|
|
casper.waitForSelector('.stream-list-filter.notdisplayed', function () {
|
|
casper.test.assertExists('.stream-list-filter.notdisplayed', 'Stream filter box not visible after second click');
|
|
});
|
|
|
|
un_narrow();
|
|
|
|
common.then_log_out();
|
|
|
|
// Run the above queued actions.
|
|
casper.run(function () {
|
|
casper.test.done();
|
|
});
|