discourse/plugins/poll/test/javascripts/acceptance/poll-in-reply-history-test.js
Sérgio Saquetim d8abc0ab11
DEV: Ensure streamElement consistency across components (#33638)
This commit introduces the `@streamElement` argument to various
components and modifies its default behavior to `false` in
`cooked-html`. It standardizes the flow, ensuring better control and
accurate context sharing of the `streamElement` property. Adjustments
were also made to decorators and nested post rendering.

Additionally, tests in the `poll` plugin were modified to run with
`glimmer_post_stream_mode` enabled and disabled to ensure the decorators
are working as expected.
2025-07-16 09:24:45 -03:00

454 lines
16 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
["enabled", "disabled"].forEach((postStreamMode) => {
acceptance(
`Poll in a post reply history (glimmer_post_stream_mode = ${postStreamMode})`,
function (needs) {
needs.user();
needs.settings({
poll_enabled: true,
glimmer_post_stream_mode: postStreamMode,
});
needs.pretender((server, helper) => {
server.get("/t/topic_with_poll_in_post_reply_history.json", () => {
return helper.response({
post_stream: {
posts: [
{
id: 82,
name: null,
username: "admin1",
avatar_template:
"/letter_avatar_proxy/v4/letter/a/bbce88/{size}.png",
created_at: "2021-01-25T13:08:27.385Z",
cooked: "<p>A reply to the poll.</p>",
post_number: 4,
post_type: 1,
updated_at: "2021-01-25T13:08:27.385Z",
reply_count: 0,
reply_to_post_number: 2,
quote_count: 0,
incoming_link_count: 0,
reads: 1,
readers_count: 0,
score: 0.2,
yours: true,
topic_id: 25,
topic_slug: "topic-with-a-poll-in-a-post-reply-history",
display_username: null,
primary_group_name: null,
flair_url: null,
flair_bg_color: null,
flair_color: null,
version: 1,
can_edit: true,
can_delete: true,
can_recover: false,
can_wiki: true,
read: true,
user_title: null,
reply_to_user: {
username: "admin1",
avatar_template:
"/letter_avatar_proxy/v4/letter/a/bbce88/{size}.png",
},
bookmarked: false,
bookmarks: [],
actions_summary: [
{
id: 3,
can_act: true,
},
{
id: 4,
can_act: true,
},
{
id: 8,
can_act: true,
},
{
id: 7,
can_act: true,
},
],
moderator: false,
admin: true,
staff: true,
user_id: 3,
hidden: false,
trust_level: 1,
deleted_at: null,
user_deleted: false,
edit_reason: null,
can_view_edit_history: true,
wiki: false,
reviewable_id: 0,
reviewable_score_count: 0,
reviewable_score_pending_count: 0,
},
],
stream: [82],
},
timeline_lookup: [[1, 0]],
suggested_topics: [
{
id: 7,
title: "Welcome to Discourse",
fancy_title: "Welcome to Discourse",
slug: "welcome-to-discourse",
posts_count: 1,
reply_count: 0,
highest_post_number: 1,
image_url: null,
created_at: "2021-01-07T15:36:44.707Z",
last_posted_at: "2021-01-07T15:36:44.750Z",
bumped: true,
bumped_at: "2021-01-07T15:36:44.750Z",
archetype: "regular",
unseen: false,
pinned: true,
unpinned: null,
excerpt:
"The first paragraph of this pinned topic will be visible as a welcome message to all new visitors on your homepage. Its important! Edit this into a brief description of your community: Who is it for? What can they fi&hellip;",
visible: true,
closed: false,
archived: false,
bookmarked: null,
liked: null,
like_count: 0,
views: 1,
category_id: 1,
featured_link: null,
posters: [
{
extras: "latest single",
description: "Original Poster, Most Recent Poster",
user: {
id: -1,
username: "system",
name: "system",
avatar_template:
"http://localhost:3000/images/discourse-logo-sketch-small.png",
},
},
],
},
{
id: 20,
title: "Polls testing. Just one poll in the comment",
fancy_title: "Polls testing. Just one poll in the comment",
slug: "polls-testing-just-one-poll-in-the-comment",
posts_count: 3,
reply_count: 1,
highest_post_number: 3,
image_url: null,
created_at: "2021-01-21T09:21:35.102Z",
last_posted_at: "2021-01-22T09:35:33.543Z",
bumped: true,
bumped_at: "2021-01-22T09:35:33.543Z",
archetype: "regular",
unseen: false,
last_read_post_number: 3,
unread_posts: 0,
pinned: false,
unpinned: null,
visible: true,
closed: false,
archived: false,
notification_level: 2,
bookmarked: false,
bookmarks: [],
liked: false,
like_count: 0,
views: 3,
category_id: 1,
featured_link: null,
posters: [
{
extras: null,
description: "Original Poster",
user: {
id: 2,
username: "andrey1",
name: "andrey1",
avatar_template:
"/letter_avatar_proxy/v4/letter/a/c0e974/{size}.png",
},
},
{
extras: "latest",
description: "Most Recent Poster",
user: {
id: 3,
username: "admin1",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/a/bbce88/{size}.png",
},
},
],
},
{
id: 22,
title: "Polls testing. The whole test",
fancy_title: "Polls testing. The whole test",
slug: "polls-testing-the-whole-test",
posts_count: 12,
reply_count: 8,
highest_post_number: 12,
image_url: null,
created_at: "2021-01-21T09:55:20.135Z",
last_posted_at: "2021-01-22T11:59:31.561Z",
bumped: true,
bumped_at: "2021-01-22T11:59:31.561Z",
archetype: "regular",
unseen: false,
last_read_post_number: 12,
unread_posts: 0,
pinned: false,
unpinned: null,
visible: true,
closed: false,
archived: false,
notification_level: 2,
bookmarked: false,
bookmarks: [],
liked: false,
like_count: 0,
views: 4,
category_id: 1,
featured_link: null,
posters: [
{
extras: null,
description: "Original Poster",
user: {
id: 2,
username: "andrey1",
name: "andrey1",
avatar_template:
"/letter_avatar_proxy/v4/letter/a/c0e974/{size}.png",
},
},
{
extras: "latest",
description: "Most Recent Poster",
user: {
id: 3,
username: "admin1",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/a/bbce88/{size}.png",
},
},
],
},
],
id: 25,
title: "Topic with a poll in a post reply history",
fancy_title: "Topic with a poll in a post reply history",
posts_count: 4,
created_at: "2021-01-25T13:07:31.670Z",
views: 2,
reply_count: 2,
like_count: 0,
last_posted_at: "2021-01-25T13:08:27.385Z",
visible: true,
closed: false,
archived: false,
has_summary: false,
archetype: "regular",
slug: "topic-with-a-poll-in-a-post-reply-history",
category_id: 1,
word_count: 25,
deleted_at: null,
user_id: 3,
featured_link: null,
pinned_globally: false,
pinned_at: null,
pinned_until: null,
image_url: null,
slow_mode_seconds: 0,
draft: null,
draft_key: "topic_25",
draft_sequence: 4,
posted: true,
unpinned: null,
pinned: false,
current_post_number: 4,
highest_post_number: 4,
last_read_post_number: 4,
last_read_post_id: 82,
deleted_by: null,
has_deleted: false,
actions_summary: [
{
id: 4,
count: 0,
hidden: false,
can_act: true,
},
{
id: 8,
count: 0,
hidden: false,
can_act: true,
},
{
id: 7,
count: 0,
hidden: false,
can_act: true,
},
],
chunk_size: 20,
bookmarked: false,
bookmarks: [],
topic_timer: null,
message_bus_last_id: 4,
participant_count: 1,
show_read_indicator: false,
thumbnails: null,
details: {
can_edit: true,
notification_level: 3,
notifications_reason_id: 1,
can_move_posts: true,
can_delete: true,
can_remove_allowed_users: true,
can_invite_to: true,
can_invite_via_email: true,
can_create_post: true,
can_reply_as_new_topic: true,
can_flag_topic: true,
can_convert_topic: true,
can_review_topic: true,
can_close_topic: true,
can_archive_topic: true,
can_split_merge_topic: true,
can_edit_staff_notes: true,
can_toggle_topic_visibility: true,
can_moderate_category: true,
can_remove_self_id: 3,
participants: [
{
id: 3,
username: "admin1",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/a/bbce88/{size}.png",
post_count: 4,
primary_group_name: null,
flair_url: null,
flair_color: null,
flair_bg_color: null,
},
],
created_by: {
id: 3,
username: "admin1",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/a/bbce88/{size}.png",
},
last_poster: {
id: 3,
username: "admin1",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/a/bbce88/{size}.png",
},
},
});
});
server.get("/posts/82/reply-history", () => {
return helper.response([
{
id: 80,
name: null,
username: "admin1",
avatar_template:
"/letter_avatar_proxy/v4/letter/a/bbce88/{size}.png",
created_at: "2021-01-25T13:07:58.995Z",
cooked:
'<p>The poll:</p>\n<div class="poll" data-poll-status="open" data-poll-name="poll">\n<div>\n<div class="poll-container">\n<ul>\n<li data-poll-option-id="5b8ee5ba2a43e258f93dbef9264bf1ad">Option A</li>\n<li data-poll-option-id="6872645f5d8ef2311883617a3a7d381b">Option B</li>\n</ul>\n</div>\n<div class="poll-info">\n<p>\n<span class="info-number">0</span>\n<span class="info-label">voters</span>\n</p>\n</div>\n</div>\n</div>',
post_number: 2,
post_type: 1,
updated_at: "2021-01-25T13:07:58.995Z",
reply_count: 2,
reply_to_post_number: null,
quote_count: 0,
incoming_link_count: 0,
reads: 1,
readers_count: 0,
score: 10.2,
yours: false,
topic_id: 25,
topic_slug: "topic-with-a-poll-in-a-post-reply-history",
display_username: null,
primary_group_name: null,
flair_url: null,
flair_bg_color: null,
flair_color: null,
version: 1,
can_edit: false,
can_delete: false,
can_recover: false,
can_wiki: false,
user_title: null,
bookmarked: false,
bookmarks: [],
actions_summary: [],
moderator: false,
admin: true,
staff: true,
user_id: 3,
hidden: false,
trust_level: 1,
deleted_at: null,
user_deleted: false,
edit_reason: null,
can_view_edit_history: true,
wiki: false,
polls: [
{
name: "poll",
type: "regular",
status: "open",
results: "always",
options: [
{
id: "5b8ee5ba2a43e258f93dbef9264bf1ad",
html: "Option A",
votes: 0,
},
{
id: "6872645f5d8ef2311883617a3a7d381b",
html: "Option B",
votes: 0,
},
],
voters: 0,
chart_type: "bar",
title: null,
},
],
},
]);
});
});
test("renders and extends", async function (assert) {
await visit("/t/-/topic_with_poll_in_post_reply_history");
await click(".reply-to-tab");
assert.dom(".poll").exists("poll is rendered");
assert.dom(".poll-buttons").exists("poll is extended");
});
}
);
});