discourse/plugins/poll/test/javascripts/acceptance/poll-results-test.js.es6
Alan Guo Xiang Tan 37b8ce79c9
FEATURE: Add last visit indication to topic view page. (#13471)
This PR also removes grey old unread bubble from the topic badges by
dropping `TopicUser#highest_seen_post_number`.
2021-07-05 14:17:31 +08:00

625 lines
21 KiB
JavaScript

import {
acceptance,
publishToMessageBus,
} from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
import { clearPopupMenuOptionsCallback } from "discourse/controllers/composer";
import { visit } from "@ember/test-helpers";
acceptance("Poll results", function (needs) {
needs.user();
needs.settings({ poll_enabled: true });
needs.hooks.beforeEach(() => {
clearPopupMenuOptionsCallback();
});
needs.pretender((server, helper) => {
server.get("/posts/by_number/134/1", () => {
return helper.response({
id: 156,
name: null,
username: "bianca",
avatar_template: "/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
created_at: "2021-06-08T21:56:55.166Z",
cooked:
'\u003cdiv class="poll" data-poll-status="open" data-poll-public="true" data-poll-results="always" data-poll-charttype="bar" data-poll-type="regular" data-poll-name="poll"\u003e\n\u003cdiv\u003e\n\u003cdiv class="poll-container"\u003e\n\u003cul\u003e\n\u003cli data-poll-option-id="db753fe0bc4e72869ac1ad8765341764"\u003eOption \u003cspan class="hashtag"\u003e#1\u003c/span\u003e\n\u003c/li\u003e\n\u003cli data-poll-option-id="d8c22ff912e03740d9bc19e133e581e0"\u003eOption \u003cspan class="hashtag"\u003e#2\u003c/span\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cdiv class="poll-info"\u003e\n\u003cp\u003e\n\u003cspan class="info-number"\u003e0\u003c/span\u003e\n\u003cspan class="info-label"\u003evoters\u003c/span\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e',
post_number: 1,
post_type: 1,
updated_at: "2021-06-08T21:59:16.444Z",
reply_count: 0,
reply_to_post_number: null,
quote_count: 0,
incoming_link_count: 0,
reads: 2,
readers_count: 1,
score: 0,
yours: true,
topic_id: 134,
topic_slug: "load-more-poll-voters",
display_username: null,
primary_group_name: null,
primary_group_flair_url: null,
primary_group_flair_bg_color: null,
primary_group_flair_color: null,
version: 1,
can_edit: true,
can_delete: false,
can_recover: false,
can_wiki: true,
title_is_group: false,
bookmarked: false,
raw:
"[poll type=regular results=always public=true chartType=bar]\n* Option #1\n* Option #2\n[/poll]",
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: 1,
hidden: false,
trust_level: 0,
deleted_at: null,
user_deleted: false,
edit_reason: null,
can_view_edit_history: true,
wiki: false,
reviewable_id: null,
reviewable_score_count: 0,
reviewable_score_pending_count: 0,
calendar_details: [],
can_accept_answer: false,
can_unaccept_answer: false,
accepted_answer: false,
polls: [
{
name: "poll",
type: "regular",
status: "open",
public: true,
results: "always",
options: [
{
id: "db753fe0bc4e72869ac1ad8765341764",
html:
'Option \u003cspan class="hashtag"\u003e#1\u003c/span\u003e',
votes: 1,
},
{
id: "d8c22ff912e03740d9bc19e133e581e0",
html:
'Option \u003cspan class="hashtag"\u003e#2\u003c/span\u003e',
votes: 0,
},
],
voters: 1,
preloaded_voters: {
db753fe0bc4e72869ac1ad8765341764: [
{
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
},
],
},
chart_type: "bar",
title: null,
},
],
polls_votes: { poll: ["db753fe0bc4e72869ac1ad8765341764"] },
});
});
server.get("/t/load-more-poll-voters.json", () => {
return helper.response({
post_stream: {
posts: [
{
id: 156,
name: null,
username: "bianca",
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
created_at: "2021-06-08T21:56:55.166Z",
cooked:
'\u003cdiv class="poll" data-poll-status="open" data-poll-public="true" data-poll-results="always" data-poll-charttype="bar" data-poll-type="regular" data-poll-name="poll"\u003e\n\u003cdiv\u003e\n\u003cdiv class="poll-container"\u003e\n\u003cul\u003e\n\u003cli data-poll-option-id="db753fe0bc4e72869ac1ad8765341764"\u003eOption \u003cspan class="hashtag"\u003e#1\u003c/span\u003e\n\u003c/li\u003e\n\u003cli data-poll-option-id="d8c22ff912e03740d9bc19e133e581e0"\u003eOption \u003cspan class="hashtag"\u003e#2\u003c/span\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cdiv class="poll-info"\u003e\n\u003cp\u003e\n\u003cspan class="info-number"\u003e0\u003c/span\u003e\n\u003cspan class="info-label"\u003evoters\u003c/span\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e',
post_number: 1,
post_type: 1,
updated_at: "2021-06-08T21:59:16.444Z",
reply_count: 0,
reply_to_post_number: null,
quote_count: 0,
incoming_link_count: 0,
reads: 2,
readers_count: 1,
score: 0,
yours: true,
topic_id: 134,
topic_slug: "load-more-poll-voters",
display_username: null,
primary_group_name: null,
primary_group_flair_url: null,
primary_group_flair_bg_color: null,
primary_group_flair_color: null,
version: 1,
can_edit: true,
can_delete: false,
can_recover: false,
can_wiki: true,
read: true,
title_is_group: false,
bookmarked: false,
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: 1,
hidden: false,
trust_level: 0,
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,
calendar_details: [],
can_accept_answer: false,
can_unaccept_answer: false,
accepted_answer: false,
polls: [
{
name: "poll",
type: "regular",
status: "open",
public: true,
results: "always",
options: [
{
id: "db753fe0bc4e72869ac1ad8765341764",
html:
'Option \u003cspan class="hashtag"\u003e#1\u003c/span\u003e',
votes: 1,
},
{
id: "d8c22ff912e03740d9bc19e133e581e0",
html:
'Option \u003cspan class="hashtag"\u003e#2\u003c/span\u003e',
votes: 0,
},
],
voters: 1,
preloaded_voters: {
db753fe0bc4e72869ac1ad8765341764: [
{
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
},
],
},
chart_type: "bar",
title: null,
},
],
polls_votes: { poll: ["db753fe0bc4e72869ac1ad8765341764"] },
},
],
stream: [156],
},
timeline_lookup: [[1, 0]],
suggested_topics: [
{
id: 7,
title: "Welcome to Discourse",
fancy_title: "Welcome to Discourse",
slug: "welcome-to-discourse",
posts_count: 9,
reply_count: 0,
highest_post_number: 9,
image_url:
"//localhost:3000/uploads/default/original/1X/ba1a510603f5112dcaf06cf42c2eb671bff83681.png",
created_at: "2021-06-02T16:21:38.347Z",
last_posted_at: "2021-06-08T20:36:29.235Z",
bumped: true,
bumped_at: "2021-06-08T20:36:29.235Z",
archetype: "regular",
unseen: false,
last_read_post_number: 9,
unread_posts: 0,
pinned: false,
unpinned: true,
visible: true,
closed: false,
archived: false,
notification_level: 2,
bookmarked: false,
liked: false,
tags: [],
like_count: 0,
views: 2,
category_id: 1,
featured_link: null,
has_accepted_answer: false,
posters: [
{
extras: null,
description: "Original Poster",
user: {
id: -1,
username: "system",
name: "system",
avatar_template: "/images/discourse-logo-sketch-small.png",
},
},
{
extras: "latest",
description: "Most Recent Poster",
user: {
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
},
},
],
},
{
id: 129,
title: "This is another test topic",
fancy_title: "This is another test topic",
slug: "this-is-another-test-topic",
posts_count: 1,
reply_count: 0,
highest_post_number: 1,
image_url: null,
created_at: "2021-06-03T15:48:27.262Z",
last_posted_at: "2021-06-03T15:48:27.537Z",
bumped: true,
bumped_at: "2021-06-08T12:52:36.650Z",
archetype: "regular",
unseen: false,
last_read_post_number: 1,
unread_posts: 0,
pinned: false,
unpinned: null,
visible: true,
closed: false,
archived: false,
notification_level: 2,
bookmarked: false,
liked: false,
tags: [],
like_count: 0,
views: 7,
category_id: 1,
featured_link: null,
has_accepted_answer: false,
posters: [
{
extras: "latest single",
description: "Original Poster, Most Recent Poster",
user: {
id: 12,
username: "bar",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/b77776/{size}.png",
},
},
],
},
{
id: 131,
title:
"Welcome to Discourse — thanks for starting a new conversation!",
fancy_title:
"Welcome to Discourse — thanks for starting a new conversation!",
slug: "welcome-to-discourse-thanks-for-starting-a-new-conversation",
posts_count: 1,
reply_count: 0,
highest_post_number: 1,
image_url: null,
created_at: "2021-06-04T08:51:19.807Z",
last_posted_at: "2021-06-04T08:51:19.928Z",
bumped: true,
bumped_at: "2021-06-04T14:37:46.939Z",
archetype: "regular",
unseen: false,
last_read_post_number: 1,
unread_posts: 0,
pinned: false,
unpinned: null,
visible: true,
closed: false,
archived: false,
notification_level: 3,
bookmarked: false,
liked: false,
tags: ["abc", "e", "b"],
like_count: 0,
views: 3,
category_id: 1,
featured_link: null,
has_accepted_answer: false,
posters: [
{
extras: "latest single",
description: "Original Poster, Most Recent Poster",
user: {
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
},
},
],
},
{
id: 133,
title: "This is a new tpoic",
fancy_title: "This is a new tpoic",
slug: "this-is-a-new-tpoic",
posts_count: 12,
reply_count: 0,
highest_post_number: 12,
image_url: null,
created_at: "2021-06-08T14:44:03.664Z",
last_posted_at: "2021-06-08T19:57:35.853Z",
bumped: true,
bumped_at: "2021-06-08T19:57:35.853Z",
archetype: "regular",
unseen: false,
last_read_post_number: 12,
unread_posts: 0,
pinned: false,
unpinned: null,
visible: true,
closed: false,
archived: false,
notification_level: 3,
bookmarked: false,
liked: false,
tags: [],
like_count: 0,
views: 1,
category_id: 1,
featured_link: null,
has_accepted_answer: false,
posters: [
{
extras: "latest single",
description: "Original Poster, Most Recent Poster",
user: {
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
},
},
],
},
],
tags: [],
id: 134,
title: "Load more poll voters",
fancy_title: "Load more poll voters",
posts_count: 1,
created_at: "2021-06-08T21:56:55.073Z",
views: 4,
reply_count: 0,
like_count: 0,
last_posted_at: "2021-06-08T21:56:55.166Z",
visible: true,
closed: false,
archived: false,
has_summary: false,
archetype: "regular",
slug: "load-more-poll-voters",
category_id: 1,
word_count: 14,
deleted_at: null,
user_id: 1,
featured_link: null,
pinned_globally: false,
pinned_at: null,
pinned_until: null,
image_url: null,
slow_mode_seconds: 0,
draft: null,
draft_key: "topic_134",
draft_sequence: 7,
posted: true,
unpinned: null,
pinned: false,
current_post_number: 1,
highest_post_number: 1,
last_read_post_number: 1,
last_read_post_id: 156,
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,
topic_timer: null,
message_bus_last_id: 5,
participant_count: 1,
queued_posts_count: 0,
show_read_indicator: false,
thumbnails: null,
slow_mode_enabled_until: 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_pin_unpin_topic: true,
can_moderate_category: true,
can_remove_self_id: 1,
participants: [
{
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
post_count: 1,
primary_group_name: null,
primary_group_flair_url: null,
primary_group_flair_color: null,
primary_group_flair_bg_color: null,
admin: true,
trust_level: 0,
},
],
created_by: {
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
},
last_poster: {
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
},
},
pending_posts: [],
});
});
server.get("/polls/voters.json", (request) => {
if (
request.queryParams.option_id === "d8c22ff912e03740d9bc19e133e581e0"
) {
return helper.response({
voters: {
d8c22ff912e03740d9bc19e133e581e0: [
{
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
title: null,
},
],
},
});
} else {
return helper.response({
voters: {
[request.queryParams.option_id]: [],
},
});
}
});
});
test("can load more voters", async function (assert) {
await visit("/t/-/load-more-poll-voters");
assert.equal(
find(".poll-container .results li:nth-child(1) .poll-voters li").length,
1
);
publishToMessageBus("/polls/134", {
post_id: "156",
polls: [
{
name: "poll",
type: "regular",
status: "open",
public: true,
results: "always",
options: [
{
id: "db753fe0bc4e72869ac1ad8765341764",
html: 'Option <span class="hashtag">#1</span>',
votes: 1,
},
{
id: "d8c22ff912e03740d9bc19e133e581e0",
html: 'Option <span class="hashtag">#2</span>',
votes: 1,
},
],
voters: 2,
preloaded_voters: {
db753fe0bc4e72869ac1ad8765341764: [
{
id: 1,
username: "bianca",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/b/3be4f8/{size}.png",
},
],
d8c22ff912e03740d9bc19e133e581e0: [
{
id: 7,
username: "foo",
name: null,
avatar_template:
"/letter_avatar_proxy/v4/letter/f/b19c9b/{size}.png",
title: null,
},
],
},
chart_type: "bar",
title: null,
},
],
});
await visit("/t/-/load-more-poll-voters");
await click(".poll-voters-toggle-expand a");
assert.equal(
find(".poll-container .results li:nth-child(1) .poll-voters li").length,
0
);
assert.equal(
find(".poll-container .results li:nth-child(2) .poll-voters li").length,
1
);
});
});