zulip/frontend_tests/casper_tests/14-drafts.js

218 lines
7.2 KiB
JavaScript

var common = require('../casper_lib/common.js').common;
function waitWhileDraftsVisible(then) {
casper.waitFor(function () {
return casper.evaluate(function () {
return $("#draft_overlay").length === 0 ||
$("#draft_overlay").css("opacity") === "0";
});
}, then);
}
function waitUntilDraftsVisible(then) {
casper.waitFor(function () {
return casper.evaluate(function () {
return $("#draft_overlay").length === 1 &&
$("#draft_overlay").css("opacity") === "1";
});
}, then);
}
common.start_and_log_in();
casper.then(function () {
casper.test.info('Drafts page');
casper.waitUntilVisible('.drafts-link', function () {
casper.click('.drafts-link');
});
});
casper.then(function () {
casper.test.assertUrlMatch(/^http:\/\/[^/]+\/#drafts/,
'URL suggests we are on drafts page');
waitUntilDraftsVisible(function () {
casper.test.assertExists('#draft_overlay', 'Drafts page is active');
casper.test.assertSelectorHasText('.no-drafts', 'No drafts.');
});
});
casper.then(function () {
casper.click('#draft_overlay .exit');
waitWhileDraftsVisible();
});
casper.then(function () {
casper.test.info('Creating Stream Message Draft');
casper.click('body');
casper.page.sendEvent('keypress', "c");
casper.waitUntilVisible('#stream-message', function () {
casper.test.info('Creating Private Message Draft');
casper.fill('form#send_message_form', {
stream: 'all',
subject: 'tests',
content: 'Test Stream Message',
}, false);
casper.click("#compose_close");
});
});
casper.then(function () {
casper.test.info('Creating Private Message Draft');
casper.click('body');
casper.page.sendEvent('keypress', "C");
casper.waitUntilVisible('#private-message', function () {
casper.fill('form#send_message_form', {
recipient: 'cordelia@zulip.com, hamlet@zulip.com',
content: 'Test Private Message',
}, false);
casper.click("#compose_close");
});
});
casper.then(function () {
casper.waitUntilVisible('.drafts-link', function () {
casper.click('.drafts-link');
});
});
casper.then(function () {
waitUntilDraftsVisible(function () {
casper.test.assertElementCount('.draft-row', 2, 'Drafts loaded');
casper.test.assertSelectorHasText('.draft-row .message_header_stream .stream_label', 'all');
casper.test.assertSelectorHasText('.draft-row .message_header_stream .stream_topic', 'tests');
casper.test.assertTextExists('Test Stream Message', 'Stream draft contains message content');
casper.test.assertSelectorHasText('.draft-row .message_header_private_message .stream_label',
'You and Cordelia Lear, King Hamlet');
casper.test.assertTextExists('Test Private Message', 'Private draft contains message content');
});
});
casper.then(function () {
casper.test.info('Restoring Stream Message Draft');
casper.click("#drafts_table .message_row:not(.private-message) .restore-draft");
waitWhileDraftsVisible(function () {
casper.test.assertVisible('#stream-message', 'Stream Message Box Restored');
common.check_form('form#send_message_form', {
stream: 'all',
subject: 'tests',
content: 'Test Stream Message',
}, "Stream message box filled with draft content");
});
});
casper.then(function () {
casper.test.info('Editing Stream Message Draft');
casper.fill('form#send_message_form', {
stream: 'all',
subject: 'tests',
content: 'Updated Stream Message',
}, false);
casper.click("#compose_close");
});
casper.then(function () {
casper.waitUntilVisible('.drafts-link', function () {
casper.click('.drafts-link');
});
});
casper.then(function () {
waitUntilDraftsVisible(function () {
casper.test.assertSelectorHasText('.draft-row .message_header_stream .stream_label', 'all');
casper.test.assertSelectorHasText('.draft-row .message_header_stream .stream_topic', 'tests');
casper.test.assertTextExists('Updated Stream Message', 'Stream draft contains message content');
});
});
casper.then(function () {
casper.test.info('Restoring Private Message Draft');
casper.click("#drafts_table .message_row.private-message .restore-draft");
waitWhileDraftsVisible(function () {
casper.test.assertVisible('#private-message', 'Private Message Box Restored');
common.check_form('form#send_message_form', {
recipient: 'cordelia@zulip.com, hamlet@zulip.com',
content: 'Test Private Message',
}, "Private message box filled with draft content");
});
});
casper.then(function () {
casper.click("#compose_close");
casper.waitUntilVisible('.drafts-link', function () {
casper.click('.drafts-link');
});
});
casper.then(function () {
casper.test.info('Deleting Draft');
casper.click("#drafts_table .message_row.private-message .delete-draft");
casper.test.assertElementCount('.draft-row', 1, 'Draft deleted');
casper.test.assertDoesntExist("#drafts_table .message_row.private-message");
});
casper.then(function () {
casper.test.info('Saving Draft by Reloading');
casper.click('#draft_overlay .exit');
waitWhileDraftsVisible(function () {
casper.click('body');
casper.page.sendEvent('keypress', "C");
});
});
casper.then(function () {
casper.waitUntilVisible('#private-message', function () {
casper.fill('form#send_message_form', {
recipient: 'cordelia@zulip.com',
content: 'Test Private Message',
}, false);
});
casper.reload();
});
casper.then(function () {
casper.test.info('Finished reloading; now opening drafts again');
casper.waitUntilVisible('.drafts-link', function () {
casper.click('.drafts-link');
});
});
casper.then(function () {
casper.test.info('Checking drafts survived the reload');
waitUntilDraftsVisible(function () {
casper.test.assertElementCount('.draft-row', 2, 'Drafts loaded');
casper.test.assertSelectorHasText('.draft-row .message_header_private_message .stream_label',
'You and Cordelia Lear');
casper.test.assertTextExists('Test Private Message');
});
});
casper.then(function () {
casper.test.info('Deleting Draft after Sending Message');
casper.click("#drafts_table .message_row.private-message .restore-draft");
waitWhileDraftsVisible(function () {
casper.test.assertVisible('#private-message');
casper.click('#compose-send-button');
});
});
casper.then(function () {
// This tests the second drafts link in the compose area
casper.waitUntilVisible('.compose_table .drafts-link', function () {
casper.click('.compose_table .drafts-link');
});
waitUntilDraftsVisible(function () {
casper.test.assertElementCount('.draft-row', 1, 'Drafts loaded');
casper.test.assertDoesntExist("#drafts_table .message_row.private-message");
});
});
common.then_log_out();
casper.run(function () {
casper.test.done();
});