FIx failing tests

This commit is contained in:
Sérgio Saquetim 2025-06-24 16:21:40 -03:00
parent 25920252f3
commit 0365e44a33
No known key found for this signature in database
GPG Key ID: B4E3D7F11E793062
8 changed files with 59 additions and 32 deletions

View File

@ -21,12 +21,12 @@ export default class SolvedAcceptAnswerButton extends Component {
}
@action
acceptAnswer() {
async acceptAnswer() {
const post = this.args.post;
this.saving = true;
try {
acceptPost(post, this.currentUser);
await acceptPost(post, this.currentUser);
} finally {
this.saving = false;
}

View File

@ -2,6 +2,7 @@ import Component from "@glimmer/component";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import PostQuotedContent from "discourse/components/post/quoted-content";
import concatClass from "discourse/helpers/concat-class";
import { iconHTML } from "discourse/lib/icon-library";
import { formatUsername } from "discourse/lib/utilities";
import { i18n } from "discourse-i18n";
@ -84,26 +85,31 @@ export default class SolvedAcceptedAnswer extends Component {
}
<template>
<PostQuotedContent
class="accepted-answer"
@collapsedContent={{this.collapsedContent}}
@decoratorState={{@decoratorState}}
@id={{this.quoteId}}
@post={{@post}}
@quotedPostNumber={{this.acceptedAnswer.post_number}}
@quotedTopicId={{this.topic.id}}
@quotedUsername={{this.acceptedAnswer.username}}
>
<:title>
<div class="accepted-answer--solver-accepter">
<div class="accepted-answer--solver">
{{this.htmlSolvedBy}}
{{#if this.acceptedAnswer}}
<PostQuotedContent
class={{concatClass
"accepted-answer"
(unless this.collapsedContent "title-only")
}}
@collapsedContent={{this.collapsedContent}}
@decoratorState={{@decoratorState}}
@id={{this.quoteId}}
@post={{@post}}
@quotedPostNumber={{this.acceptedAnswer.post_number}}
@quotedTopicId={{this.topic.id}}
@quotedUsername={{this.acceptedAnswer.username}}
>
<:title>
<div class="accepted-answer--solver-accepter">
<div class="accepted-answer--solver">
{{this.htmlSolvedBy}}
</div>
<div class="accepted-answer--accepter">
{{this.htmlAccepter}}
</div>
</div>
<div class="accepted-answer--accepter">
{{this.htmlAccepter}}
</div>
</div>
</:title>
</PostQuotedContent>
</:title>
</PostQuotedContent>
{{/if}}
</template>
}

View File

@ -63,7 +63,9 @@ function customizePost(api) {
"post-content-cooked-html",
class extends Component {
static shouldRender(args) {
return args.post.post_number === 1 && args.post.topic.accepted_answer;
return (
args.post?.post_number === 1 && args.post?.topic?.accepted_answer
);
}
<template>

View File

@ -62,10 +62,6 @@ aside.quote.accepted-answer {
display: flex;
justify-content: space-between;
align-items: flex-start;
&.quote__title--can-toggle-content {
cursor: pointer;
}
}
.accepted-answer--solver-accepter {

View File

@ -41,6 +41,25 @@ describe "About page", type: :system do
accepted_answer_quote.find("button.quote-toggle").click
expect(accepted_answer_quote["data-expanded"]).to eq("true")
end
it "accepts and unaccepts post as solution" do
sign_in(accepter)
topic_page.visit_topic(topic, post_number: 2)
expect(topic_page).to have_css(".post-action-menu__solved-unaccepted")
find(".post-action-menu__solved-unaccepted").click
expect(topic_page).to have_css(".post-action-menu__solved-accepted")
expect(topic_page).to have_css(".accepted-answer.quote")
expect(topic_page).to have_css(".title .accepted-answer--solver")
expect(topic_page).to have_css(".title .accepted-answer--accepter")
find(".post-action-menu__solved-accepted").click
expect(topic_page).to have_css(".post-action-menu__solved-unaccepted")
expect(topic_page).not_to have_css(".accepted-answer.quote")
expect(topic_page).not_to have_css(".title .accepted-answer--solver")
expect(topic_page).not_to have_css(".title .accepted-answer--accepter")
end
end
end
end

View File

@ -15,7 +15,11 @@ acceptance(
});
needs.pretender((server, helper) => {
server.post("/solution/accept", () => helper.response({ success: "OK" }));
server.post("/solution/accept", () =>
helper.response(
postStreamWithAcceptedAnswerExcerpt(null).accepted_answer
)
);
server.post("/solution/unaccept", () =>
helper.response({ success: "OK" })
);

View File

@ -30,8 +30,9 @@ import { postStreamWithAcceptedAnswerExcerpt } from "../helpers/discourse-solved
assert.dom(".quote blockquote").hasText("this is an excerpt");
await visit("/t/without-excerpt/12");
assert.dom(".quote blockquote").doesNotExist();
assert.dom(".quote .title.title-only").exists();
assert.dom(".quote blockquote").hasNoText();
assert.dom(".quote.title-only .title").exists();
});
test("Full page search displays solved status", async function (assert) {

View File

@ -109,8 +109,7 @@ export const postStreamWithAcceptedAnswerExcerpt = (excerpt) => {
edit_reason: null,
can_view_edit_history: true,
wiki: false,
can_accept_answer: false,
can_unaccept_answer: true,
can_accept_answer: true,
accepted_answer: true,
},
],