From 98d2836eb47b9f56ff22a57acf2e5247854c7363 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Wed, 6 Oct 2021 17:51:46 +0300 Subject: [PATCH] FIX: Disable Show results if nobody voted (#14528) --- .../javascripts/widgets/discourse-poll.js.es6 | 1 + .../acceptance/poll-results-test.js.es6 | 512 ++++++++++++++++++ 2 files changed, 513 insertions(+) diff --git a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 index a68560d0c82..6b476dea10b 100644 --- a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 +++ b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 @@ -651,6 +651,7 @@ createWidget("discourse-poll-buttons", { label: "poll.show-results.label", title: "poll.show-results.title", icon: "far-eye", + disabled: poll.voters === 0, action: "toggleResults", }); } diff --git a/plugins/poll/test/javascripts/acceptance/poll-results-test.js.es6 b/plugins/poll/test/javascripts/acceptance/poll-results-test.js.es6 index 185bfc8c81e..ef547c84607 100644 --- a/plugins/poll/test/javascripts/acceptance/poll-results-test.js.es6 +++ b/plugins/poll/test/javascripts/acceptance/poll-results-test.js.es6 @@ -2,6 +2,7 @@ import { acceptance, count, publishToMessageBus, + query, } from "discourse/tests/helpers/qunit-helpers"; import { test } from "qunit"; import { clearPopupMenuOptionsCallback } from "discourse/controllers/composer"; @@ -660,3 +661,514 @@ acceptance("Poll results", function (needs) { assert.equal(count(".poll-container .d-icon-far-circle"), 2); }); }); + +acceptance("Poll results - no voters", 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, + flair_url: null, + flair_bg_color: null, + flair_color: null, + version: 1, + can_edit: true, + can_delete: false, + can_recover: false, + can_wiki: true, + title_is_group: false, + bookmarked: false, + bookmarks: [], + 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: 0, + }, + { + id: "d8c22ff912e03740d9bc19e133e581e0", + html: + 'Option \u003cspan class="hashtag"\u003e#2\u003c/span\u003e', + votes: 0, + }, + ], + voters: 0, + preloaded_voters: {}, + chart_type: "bar", + title: null, + }, + ], + }); + }); + + 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, + flair_url: null, + flair_bg_color: null, + 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, + 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: 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: 0, + }, + { + id: "d8c22ff912e03740d9bc19e133e581e0", + html: + 'Option \u003cspan class="hashtag"\u003e#2\u003c/span\u003e', + votes: 0, + }, + ], + voters: 0, + preloaded_voters: {}, + chart_type: "bar", + title: null, + }, + ], + }, + ], + 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, + bookmarks: [], + 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, + bookmarks: [], + 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, + bookmarks: [], + 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, + bookmarks: [], + 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, + bookmarks: [], + 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, + flair_url: null, + flair_color: null, + 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: [], + }); + }); + }); + + test("disables show results button", async function (assert) { + await visit("/t/-/load-more-poll-voters"); + assert.ok(query(".toggle-results").disabled); + }); +});