zulip/frontend_tests/casper_tests/14-drafts.js

287 lines
8.8 KiB
JavaScript

"use strict";
var common = require("../casper_lib/common.js");
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.fill(
"form#send_message_form",
{
stream_message_recipient_stream: "all",
stream_message_recipient_topic: "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", "x");
casper.waitUntilVisible("#private-message", function () {
casper.fill(
"form#send_message_form",
{
content: "Test Private Message",
},
false
);
common.pm_recipient.set("cordelia@zulip.com, hamlet@zulip.com");
casper.click("#compose_close");
});
});
casper.then(function () {
casper.test.info("Opening Markdown Preview");
casper.waitUntilVisible("#left_bar_compose_stream_button_big", function () {
casper.click("#left_bar_compose_stream_button_big");
});
casper.waitUntilVisible("#markdown_preview", function () {
casper.click("#markdown_preview");
});
});
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");
casper.test.assertNotVisible("#preview_message_area", "Preview Was Hidden");
common.check_form(
"form#send_message_form",
{
stream_message_recipient_stream: "all",
stream_message_recipient_topic: "tests",
content: "Test Stream Message",
},
"Stream message box filled with draft content"
);
casper.test.assertSelectorHasText(
"title",
"tests - Zulip Dev - Zulip",
"Narrowed to topic"
);
});
});
casper.then(function () {
casper.test.info("Editing Stream Message Draft");
casper.fill(
"form#send_message_form",
{
stream_message_recipient_stream: "all",
stream_message_recipient_topic: "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",
{
content: "Test Private Message",
},
"Private message box filled with draft content"
);
common.pm_recipient.expect("cordelia@zulip.com,hamlet@zulip.com");
casper.test.assertSelectorHasText(
"title",
"Cordelia Lear, King Hamlet - Zulip Dev - Zulip",
"Narrowed to huddle"
);
});
});
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", "x");
});
});
casper.then(function () {
casper.waitUntilVisible("#private-message", function () {
casper.fill(
"form#send_message_form",
{
content: "Test Private Message",
},
false
);
common.pm_recipient.set("cordelia@zulip.com");
});
casper.reload();
});
casper.then(function () {
casper.test.info("Finished reloading; now opening drafts again");
// Reloading into a narrow opens compose box automatically
casper.waitUntilVisible("#compose_close", function () {
casper.click("#compose_close");
});
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("#enter_sends");
casper.waitUntilVisible("#compose-send-button", function () {
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();
});