mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
@@ -11,7 +11,6 @@ const $ = require("./lib/zjquery");
|
||||
const {page_params} = require("./lib/zpage_params");
|
||||
|
||||
const channel = mock_esm("../src/channel");
|
||||
|
||||
const compose_banner = zrequire("compose_banner");
|
||||
const compose_pm_pill = zrequire("compose_pm_pill");
|
||||
const compose_state = zrequire("compose_state");
|
||||
@@ -22,17 +21,7 @@ const resolved_topic = zrequire("../shared/src/resolved_topic");
|
||||
const settings_config = zrequire("settings_config");
|
||||
const settings_data = mock_esm("../src/settings_data");
|
||||
const stream_data = zrequire("stream_data");
|
||||
const compose_recipient = zrequire("compose_recipient");
|
||||
|
||||
let stream_value = "";
|
||||
compose_recipient.compose_recipient_widget = {
|
||||
value() {
|
||||
return stream_value;
|
||||
},
|
||||
render(val) {
|
||||
stream_value = val;
|
||||
},
|
||||
};
|
||||
const compose_recipient = zrequire("/compose_recipient");
|
||||
|
||||
const me = {
|
||||
email: "me@example.com",
|
||||
@@ -146,9 +135,8 @@ test_ui("validate_stream_message_address_info", ({mock_template}) => {
|
||||
assert.ok(subscription_error_rendered);
|
||||
});
|
||||
|
||||
test_ui("validate", ({mock_template}) => {
|
||||
compose_recipient.update_placeholder_text = () => {};
|
||||
compose_recipient.on_compose_select_recipient_update = () => {};
|
||||
test_ui("validate", ({override_rewire, mock_template}) => {
|
||||
override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
|
||||
|
||||
function initialize_pm_pill() {
|
||||
$.clear_all_elements();
|
||||
@@ -273,6 +261,11 @@ test_ui("validate", ({mock_template}) => {
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(empty_stream_error_rendered);
|
||||
|
||||
const denmark = {
|
||||
stream_id: 100,
|
||||
name: "Denmark",
|
||||
};
|
||||
stream_data.add_sub(denmark);
|
||||
compose_state.set_stream_name("Denmark");
|
||||
page_params.realm_mandatory_topics = true;
|
||||
compose_state.topic("");
|
||||
@@ -372,6 +365,7 @@ test_ui("validate_stream_message", ({override_rewire, mock_template}) => {
|
||||
// we are separating it up in different test. Though their relative position
|
||||
// of execution should not be changed.
|
||||
mock_banners();
|
||||
override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
|
||||
$("#compose_banners .wildcard_warning").length = 0;
|
||||
page_params.user_id = me.user_id;
|
||||
page_params.realm_mandatory_topics = false;
|
||||
@@ -419,116 +413,129 @@ test_ui("validate_stream_message", ({override_rewire, mock_template}) => {
|
||||
assert.ok(wildcards_not_allowed_rendered);
|
||||
});
|
||||
|
||||
test_ui("test_validate_stream_message_post_policy_admin_only", ({mock_template}) => {
|
||||
// This test is in continuation with test_validate but it has been separated out
|
||||
// for better readability. Their relative position of execution should not be changed.
|
||||
// Although the position with respect to test_validate_stream_message does not matter
|
||||
// as different stream is used for this test.
|
||||
mock_banners();
|
||||
page_params.is_admin = false;
|
||||
const sub = {
|
||||
stream_id: 102,
|
||||
name: "stream102",
|
||||
subscribed: true,
|
||||
stream_post_policy: stream_data.stream_post_policy_values.admins.code,
|
||||
};
|
||||
test_ui(
|
||||
"test_validate_stream_message_post_policy_admin_only",
|
||||
({override_rewire, mock_template}) => {
|
||||
// This test is in continuation with test_validate but it has been separated out
|
||||
// for better readability. Their relative position of execution should not be changed.
|
||||
// Although the position with respect to test_validate_stream_message does not matter
|
||||
// as different stream is used for this test.
|
||||
mock_banners();
|
||||
override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
|
||||
page_params.is_admin = false;
|
||||
const sub = {
|
||||
stream_id: 102,
|
||||
name: "stream102",
|
||||
subscribed: true,
|
||||
stream_post_policy: stream_data.stream_post_policy_values.admins.code,
|
||||
};
|
||||
|
||||
compose_state.topic("topic102");
|
||||
compose_state.set_stream_name("stream102");
|
||||
stream_data.add_sub(sub);
|
||||
stream_data.add_sub(sub);
|
||||
compose_state.topic("topic102");
|
||||
compose_state.set_stream_name("stream102");
|
||||
|
||||
let banner_rendered = false;
|
||||
mock_template("compose_banner/compose_banner.hbs", false, (data) => {
|
||||
assert.equal(data.classname, compose_banner.CLASSNAMES.no_post_permissions);
|
||||
assert.equal(
|
||||
data.banner_text,
|
||||
$t({
|
||||
defaultMessage: "You do not have permission to post in this stream.",
|
||||
}),
|
||||
);
|
||||
banner_rendered = true;
|
||||
});
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
let banner_rendered = false;
|
||||
mock_template("compose_banner/compose_banner.hbs", false, (data) => {
|
||||
assert.equal(data.classname, compose_banner.CLASSNAMES.no_post_permissions);
|
||||
assert.equal(
|
||||
data.banner_text,
|
||||
$t({
|
||||
defaultMessage: "You do not have permission to post in this stream.",
|
||||
}),
|
||||
);
|
||||
banner_rendered = true;
|
||||
});
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
|
||||
// Reset error message.
|
||||
compose_state.set_stream_name("social");
|
||||
// Reset error message.
|
||||
compose_state.set_stream_name("social");
|
||||
|
||||
page_params.is_admin = false;
|
||||
page_params.is_guest = true;
|
||||
page_params.is_admin = false;
|
||||
page_params.is_guest = true;
|
||||
|
||||
compose_state.topic("topic102");
|
||||
compose_state.set_stream_name("stream102");
|
||||
banner_rendered = false;
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
});
|
||||
compose_state.topic("topic102");
|
||||
compose_state.set_stream_name("stream102");
|
||||
banner_rendered = false;
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
},
|
||||
);
|
||||
|
||||
test_ui("test_validate_stream_message_post_policy_moderators_only", ({mock_template}) => {
|
||||
mock_banners();
|
||||
page_params.is_admin = false;
|
||||
page_params.is_moderator = false;
|
||||
page_params.is_guest = false;
|
||||
test_ui(
|
||||
"test_validate_stream_message_post_policy_moderators_only",
|
||||
({override_rewire, mock_template}) => {
|
||||
mock_banners();
|
||||
override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
|
||||
|
||||
const sub = {
|
||||
stream_id: 104,
|
||||
name: "stream104",
|
||||
subscribed: true,
|
||||
stream_post_policy: stream_data.stream_post_policy_values.moderators.code,
|
||||
};
|
||||
page_params.is_admin = false;
|
||||
page_params.is_moderator = false;
|
||||
page_params.is_guest = false;
|
||||
|
||||
compose_state.topic("topic104");
|
||||
compose_state.set_stream_name("stream104");
|
||||
stream_data.add_sub(sub);
|
||||
let banner_rendered = false;
|
||||
mock_template("compose_banner/compose_banner.hbs", false, (data) => {
|
||||
assert.equal(data.classname, compose_banner.CLASSNAMES.no_post_permissions);
|
||||
assert.equal(
|
||||
data.banner_text,
|
||||
$t({
|
||||
defaultMessage: "You do not have permission to post in this stream.",
|
||||
}),
|
||||
);
|
||||
banner_rendered = true;
|
||||
});
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
// Reset error message.
|
||||
compose_state.set_stream_name("social");
|
||||
const sub = {
|
||||
stream_id: 104,
|
||||
name: "stream104",
|
||||
subscribed: true,
|
||||
stream_post_policy: stream_data.stream_post_policy_values.moderators.code,
|
||||
};
|
||||
|
||||
page_params.is_guest = true;
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
});
|
||||
stream_data.add_sub(sub);
|
||||
compose_state.topic("topic104");
|
||||
compose_state.set_stream_name("stream104");
|
||||
let banner_rendered = false;
|
||||
mock_template("compose_banner/compose_banner.hbs", false, (data) => {
|
||||
assert.equal(data.classname, compose_banner.CLASSNAMES.no_post_permissions);
|
||||
assert.equal(
|
||||
data.banner_text,
|
||||
$t({
|
||||
defaultMessage: "You do not have permission to post in this stream.",
|
||||
}),
|
||||
);
|
||||
banner_rendered = true;
|
||||
});
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
// Reset error message.
|
||||
compose_state.set_stream_name("social");
|
||||
|
||||
test_ui("test_validate_stream_message_post_policy_full_members_only", ({mock_template}) => {
|
||||
mock_banners();
|
||||
page_params.is_admin = false;
|
||||
page_params.is_guest = true;
|
||||
const sub = {
|
||||
stream_id: 103,
|
||||
name: "stream103",
|
||||
subscribed: true,
|
||||
stream_post_policy: stream_data.stream_post_policy_values.non_new_members.code,
|
||||
};
|
||||
page_params.is_guest = true;
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
},
|
||||
);
|
||||
|
||||
compose_state.topic("topic103");
|
||||
compose_state.set_stream_name("stream103");
|
||||
stream_data.add_sub(sub);
|
||||
let banner_rendered = false;
|
||||
mock_template("compose_banner/compose_banner.hbs", false, (data) => {
|
||||
assert.equal(data.classname, compose_banner.CLASSNAMES.no_post_permissions);
|
||||
assert.equal(
|
||||
data.banner_text,
|
||||
$t({
|
||||
defaultMessage: "You do not have permission to post in this stream.",
|
||||
}),
|
||||
);
|
||||
banner_rendered = true;
|
||||
});
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
});
|
||||
test_ui(
|
||||
"test_validate_stream_message_post_policy_full_members_only",
|
||||
({override_rewire, mock_template}) => {
|
||||
mock_banners();
|
||||
override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
|
||||
page_params.is_admin = false;
|
||||
page_params.is_guest = true;
|
||||
const sub = {
|
||||
stream_id: 103,
|
||||
name: "stream103",
|
||||
subscribed: true,
|
||||
stream_post_policy: stream_data.stream_post_policy_values.non_new_members.code,
|
||||
};
|
||||
|
||||
stream_data.add_sub(sub);
|
||||
compose_state.topic("topic103");
|
||||
compose_state.set_stream_name("stream103");
|
||||
let banner_rendered = false;
|
||||
mock_template("compose_banner/compose_banner.hbs", false, (data) => {
|
||||
assert.equal(data.classname, compose_banner.CLASSNAMES.no_post_permissions);
|
||||
assert.equal(
|
||||
data.banner_text,
|
||||
$t({
|
||||
defaultMessage: "You do not have permission to post in this stream.",
|
||||
}),
|
||||
);
|
||||
banner_rendered = true;
|
||||
});
|
||||
assert.ok(!compose_validate.validate());
|
||||
assert.ok(banner_rendered);
|
||||
},
|
||||
);
|
||||
|
||||
test_ui("test_check_overflow_text", ({mock_template}) => {
|
||||
mock_banners();
|
||||
@@ -665,9 +672,10 @@ test_ui("warn_if_private_stream_is_linked", ({mock_template}) => {
|
||||
assert.ok(banner_rendered);
|
||||
});
|
||||
|
||||
test_ui("warn_if_mentioning_unsubscribed_user", ({override, mock_template}) => {
|
||||
test_ui("warn_if_mentioning_unsubscribed_user", ({override, override_rewire, mock_template}) => {
|
||||
override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
|
||||
const $textarea = $("<textarea>").attr("id", "compose-textarea");
|
||||
stream_value = "";
|
||||
compose_state.set_stream_name("");
|
||||
override(settings_data, "user_can_subscribe_other_users", () => true);
|
||||
|
||||
let mentioned_details = {
|
||||
@@ -707,11 +715,12 @@ test_ui("warn_if_mentioning_unsubscribed_user", ({override, mock_template}) => {
|
||||
compose_validate.warn_if_mentioning_unsubscribed_user(mentioned_details, $textarea);
|
||||
assert.ok(!new_banner_rendered);
|
||||
|
||||
compose_state.set_stream_name("random");
|
||||
const sub = {
|
||||
stream_id: 111,
|
||||
name: "random",
|
||||
};
|
||||
stream_data.add_sub(sub);
|
||||
compose_state.set_stream_name("random");
|
||||
|
||||
// Test with invalid stream in compose box. It should return noop.
|
||||
new_banner_rendered = false;
|
||||
@@ -726,7 +735,6 @@ test_ui("warn_if_mentioning_unsubscribed_user", ({override, mock_template}) => {
|
||||
};
|
||||
people.add_active_user(mentioned_details);
|
||||
|
||||
stream_data.add_sub(sub);
|
||||
new_banner_rendered = false;
|
||||
const $banner_container = $("#compose_banners");
|
||||
$banner_container.set_find_results(".recipient_not_subscribed", []);
|
||||
@@ -752,8 +760,9 @@ test_ui("warn_if_mentioning_unsubscribed_user", ({override, mock_template}) => {
|
||||
assert.ok(!new_banner_rendered);
|
||||
});
|
||||
|
||||
test_ui("test warn_if_topic_resolved", ({override, mock_template}) => {
|
||||
test_ui("test warn_if_topic_resolved", ({override, override_rewire, mock_template}) => {
|
||||
mock_banners();
|
||||
override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
|
||||
$("#compose_banners .topic_resolved").length = 0;
|
||||
override(settings_data, "user_can_move_messages_to_another_topic", () => true);
|
||||
|
||||
@@ -778,6 +787,7 @@ test_ui("test warn_if_topic_resolved", ({override, mock_template}) => {
|
||||
stream_data.add_sub(sub);
|
||||
|
||||
compose_state.set_message_type("stream");
|
||||
blueslip.expect("error", "Unable to select stream: Do not exist");
|
||||
compose_state.set_stream_name("Do not exist");
|
||||
compose_state.topic(resolved_topic.resolve_name("hello"));
|
||||
compose_state.message_content("content");
|
||||
|
||||
Reference in New Issue
Block a user