import { acceptance, queryAll } from "discourse/tests/helpers/qunit-helpers"; import { clearPopupMenuOptionsCallback } from "discourse/controllers/composer"; import { test } from "qunit"; import { click, visit } from "@ember/test-helpers"; acceptance("Rendering polls with bar charts - desktop", function (needs) { needs.user(); needs.settings({ poll_enabled: true }); needs.hooks.beforeEach(() => { clearPopupMenuOptionsCallback(); }); needs.pretender((server, helper) => { server.get("/polls/voters.json", (request) => { let body = {}; if ( request.queryParams.option_id === "68b434ff88aeae7054e42cd05a4d9056" ) { body = { voters: { "68b434ff88aeae7054e42cd05a4d9056": [ { id: 777, username: "bruce777", avatar_template: "/images/avatar.png", name: "Bruce Wayne", }, ], }, }; } else { body = { voters: Array.from(new Array(5), (_, i) => ({ id: 600 + i, username: `bruce${600 + i}`, avatar_template: "/images/avatar.png", name: "Bruce Wayne", })), }; } return helper.response(body); }); }); test("Polls", async function (assert) { await visit("/t/-/15"); const polls = queryAll(".poll"); assert.strictEqual(polls.length, 2, "it should render the polls correctly"); assert.strictEqual( queryAll(".info-number", polls[0]).text(), "2", "it should display the right number of votes" ); assert.strictEqual( queryAll(".info-number", polls[1]).text(), "3", "it should display the right number of votes" ); }); test("Public poll", async function (assert) { await visit("/t/-/14"); const polls = queryAll(".poll"); assert.strictEqual(polls.length, 1, "it should render the poll correctly"); await click("button.toggle-results"); assert.strictEqual( queryAll(".poll-voters:nth-of-type(1) li").length, 25, "it should display the right number of voters" ); await click(".poll-voters-toggle-expand:nth-of-type(1) a"); assert.strictEqual( queryAll(".poll-voters:nth-of-type(1) li").length, 26, "it should display the right number of voters" ); }); test("Public number poll", async function (assert) { await visit("/t/-/13"); const polls = queryAll(".poll"); assert.strictEqual(polls.length, 1, "it should render the poll correctly"); await click("button.toggle-results"); assert.strictEqual( queryAll(".poll-voters:nth-of-type(1) li").length, 25, "it should display the right number of voters" ); assert.notOk( queryAll(".poll-voters:nth-of-type(1) li:nth-of-type(1) a").attr("href"), "user URL does not exist" ); await click(".poll-voters-toggle-expand:nth-of-type(1) a"); assert.strictEqual( queryAll(".poll-voters:nth-of-type(1) li").length, 30, "it should display the right number of voters" ); }); });