FIX: Poll: critical display issue when results are only shown upon vote (#27732)

This commit is contained in:
Robert 2024-07-05 09:55:14 +01:00 committed by GitHub
parent bb0daa33cd
commit 8b963986b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 73 additions and 7 deletions

View File

@ -109,10 +109,18 @@ export default class PollInfoComponent extends Component {
);
}
get resultsOnVoteTitle() {
return htmlSafe(I18n.t("poll.results.vote.title"));
}
get resultsOnClose() {
return this.args.results === ON_CLOSE && !this.args.closed;
}
get resultsOnCloseTitle() {
return htmlSafe(I18n.t("poll.results.close.title"));
}
get resultsStaffOnly() {
return (
this.args.results === STAFF_ONLY &&
@ -120,6 +128,10 @@ export default class PollInfoComponent extends Component {
);
}
get resultsStaffOnlyTitle() {
return htmlSafe(I18n.t("poll.results.staff.title"));
}
get publicTitle() {
return (
!this.args.closed &&
@ -179,21 +191,21 @@ export default class PollInfoComponent extends Component {
{{/if}}
{{/if}}
{{#if this.resultsOnVote}}
<li>
<li class="results-on-vote">
{{icon "check"}}
<span>{{I18n "poll.results.vote.title"}}</span>
<span>{{this.resultsOnVoteTitle}}</span>
</li>
{{/if}}
{{#if this.resultsOnClose}}
<li>
<li class="results-on-close">
{{icon "lock"}}
<span>{{I18n "poll.results.closed.title"}}</span>
<span>{{this.resultsOnCloseTitle}}</span>
</li>
{{/if}}
{{#if this.resultsStaffOnly}}
<li>
<li class="results-staff-only">
{{icon "shield-alt"}}
<span>{{I18n "poll.results.staff.title"}}</span>
<span>{{this.resultsStaffOnlyTitle}}</span>
</li>
{{/if}}
{{#if this.publicTitle}}

View File

@ -14,7 +14,7 @@ const OPTIONS = [
module("Poll | Component | poll-info", function (hooks) {
setupRenderingTest(hooks);
test("multiple poll", async function (assert) {
test("public multiple poll with results anytime", async function (assert) {
this.setProperties({
isMultiple: true,
min: 1,
@ -59,4 +59,58 @@ module("Poll | Component | poll-info", function (hooks) {
"displays the public label"
);
});
test("public multiple poll with results only shown on vote", async function (assert) {
this.setProperties({
isMultiple: true,
min: 1,
max: 2,
options: OPTIONS,
close: null,
closed: false,
results: "on_vote",
showResults: false,
postUserId: 59,
isPublic: true,
hasVoted: false,
voters: [],
});
await render(hbs`<PollInfo
@options={{this.options}}
@min={{this.min}}
@max={{this.max}}
@isMultiple={{this.isMultiple}}
@close={{this.close}}
@closed={{this.closed}}
@results={{this.results}}
@showResults={{this.showResults}}
@postUserId={{this.postUserId}}
@isPublic={{this.isPublic}}
@hasVoted={{this.hasVoted}}
@voters={{this.voters}}
/>`);
assert.strictEqual(
query(".poll-info_instructions li.multiple-help-text").textContent.trim(),
I18n.t("poll.multiple.help.up_to_max_options", {
count: this.max,
}).replace(/<\/?[^>]+(>|$)/g, ""),
"displays the multiple help text"
);
assert.strictEqual(
query(
".poll-info_instructions li.results-on-vote span"
).textContent.trim(),
I18n.t("poll.results.vote.title").replace(/<\/?[^>]+(>|$)/g, ""),
"displays the results on vote label"
);
assert.strictEqual(
query(".poll-info_instructions li.is-public").textContent.trim(),
I18n.t("poll.public.title").replace(/<\/?[^>]+(>|$)/g, ""),
"displays the public label"
);
});
});