mirror of https://github.com/zulip/zulip.git
287 lines
8.8 KiB
JavaScript
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();
|
|
});
|