mirror of
https://github.com/discourse/discourse-solved.git
synced 2026-09-18 23:31:35 -04:00
DEV: Added compatibility with the Glimmer Post Menu (#313)
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import { click, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "I18n";
|
||||
import { postStreamWithAcceptedAnswerExcerpt } from "../helpers/discourse-solved-helpers";
|
||||
|
||||
acceptance(
|
||||
"Discourse Solved | Post Menu | Accept and Unaccept",
|
||||
function (needs) {
|
||||
needs.user({
|
||||
admin: true,
|
||||
});
|
||||
|
||||
needs.settings({
|
||||
glimmer_post_menu_mode: "enabled",
|
||||
solved_enabled: true,
|
||||
allow_solved_on_all_topics: true,
|
||||
});
|
||||
|
||||
needs.pretender((server, helper) => {
|
||||
server.post("/solution/accept", () => helper.response({ success: "OK" }));
|
||||
server.post("/solution/unaccept", () =>
|
||||
helper.response({ success: "OK" })
|
||||
);
|
||||
|
||||
server.get("/t/12.json", () => {
|
||||
return helper.response(postStreamWithAcceptedAnswerExcerpt(null));
|
||||
});
|
||||
});
|
||||
|
||||
test("accepting and unaccepting a post works", async function (assert) {
|
||||
await visit("/t/without-excerpt/12");
|
||||
|
||||
assert
|
||||
.dom("#post_2 .post-action-menu__solved-accepted")
|
||||
.exists("Unaccept button is visible")
|
||||
.hasText(I18n.t("solved.solution"), "Unaccept button has correct text");
|
||||
|
||||
await click("#post_2 .post-action-menu__solved-accepted");
|
||||
|
||||
assert
|
||||
.dom("#post_2 .post-action-menu__solved-unaccepted")
|
||||
.exists("Accept button is visible");
|
||||
|
||||
await click("#post_2 .post-action-menu__solved-unaccepted");
|
||||
|
||||
assert
|
||||
.dom("#post_2 .post-action-menu__solved-accepted")
|
||||
.exists("Unccept button is visible again");
|
||||
});
|
||||
}
|
||||
);
|
||||
@@ -3,221 +3,12 @@ import { test } from "qunit";
|
||||
import { fixturesByUrl } from "discourse/tests/helpers/create-pretender";
|
||||
import { acceptance, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { cloneJSON } from "discourse-common/lib/object";
|
||||
import { postStreamWithAcceptedAnswerExcerpt } from "../helpers/discourse-solved-helpers";
|
||||
|
||||
acceptance("Discourse Solved Plugin", function (needs) {
|
||||
needs.user();
|
||||
|
||||
needs.pretender((server, helper) => {
|
||||
const postStreamWithAcceptedAnswerExcerpt = (excerpt) => {
|
||||
return {
|
||||
post_stream: {
|
||||
posts: [
|
||||
{
|
||||
id: 21,
|
||||
name: null,
|
||||
username: "kzh",
|
||||
avatar_template:
|
||||
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
created_at: "2017-08-08T20:11:32.542Z",
|
||||
cooked: "<p>How do I declare a variable in ruby?</p>",
|
||||
post_number: 1,
|
||||
post_type: 1,
|
||||
updated_at: "2017-08-08T21:03:30.521Z",
|
||||
reply_count: 0,
|
||||
reply_to_post_number: null,
|
||||
quote_count: 0,
|
||||
avg_time: null,
|
||||
incoming_link_count: 0,
|
||||
reads: 1,
|
||||
score: 0,
|
||||
yours: true,
|
||||
topic_id: 23,
|
||||
topic_slug: "test-solved",
|
||||
display_username: null,
|
||||
primary_group_name: null,
|
||||
primary_group_flair_url: null,
|
||||
primary_group_flair_bg_color: null,
|
||||
primary_group_flair_color: null,
|
||||
version: 2,
|
||||
can_edit: true,
|
||||
can_delete: false,
|
||||
can_recover: null,
|
||||
can_wiki: true,
|
||||
read: true,
|
||||
user_title: null,
|
||||
actions_summary: [
|
||||
{ id: 3, can_act: true },
|
||||
{ id: 4, can_act: true },
|
||||
{ id: 5, hidden: true, can_act: true },
|
||||
{ id: 7, can_act: true },
|
||||
{ id: 8, can_act: true },
|
||||
],
|
||||
moderator: false,
|
||||
admin: true,
|
||||
staff: true,
|
||||
user_id: 1,
|
||||
hidden: false,
|
||||
hidden_reason_id: null,
|
||||
trust_level: 4,
|
||||
deleted_at: null,
|
||||
user_deleted: false,
|
||||
edit_reason: null,
|
||||
can_view_edit_history: true,
|
||||
wiki: false,
|
||||
can_accept_answer: false,
|
||||
can_unaccept_answer: false,
|
||||
accepted_answer: false,
|
||||
},
|
||||
{
|
||||
id: 22,
|
||||
name: null,
|
||||
username: "kzh",
|
||||
avatar_template:
|
||||
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
created_at: "2017-08-08T20:12:04.657Z",
|
||||
cooked:
|
||||
"<p>this is a long answer that potentially solves the question</p>",
|
||||
post_number: 2,
|
||||
post_type: 1,
|
||||
updated_at: "2017-08-08T21:20:24.417Z",
|
||||
reply_count: 0,
|
||||
reply_to_post_number: null,
|
||||
quote_count: 0,
|
||||
avg_time: null,
|
||||
incoming_link_count: 0,
|
||||
reads: 1,
|
||||
score: 0,
|
||||
yours: true,
|
||||
topic_id: 23,
|
||||
topic_slug: "test-solved",
|
||||
display_username: null,
|
||||
primary_group_name: null,
|
||||
primary_group_flair_url: null,
|
||||
primary_group_flair_bg_color: null,
|
||||
primary_group_flair_color: null,
|
||||
version: 2,
|
||||
can_edit: true,
|
||||
can_delete: true,
|
||||
can_recover: null,
|
||||
can_wiki: true,
|
||||
read: true,
|
||||
user_title: null,
|
||||
actions_summary: [
|
||||
{ id: 3, can_act: true },
|
||||
{ id: 4, can_act: true },
|
||||
{ id: 5, hidden: true, can_act: true },
|
||||
{ id: 7, can_act: true },
|
||||
{ id: 8, can_act: true },
|
||||
],
|
||||
moderator: false,
|
||||
admin: true,
|
||||
staff: true,
|
||||
user_id: 1,
|
||||
hidden: false,
|
||||
hidden_reason_id: null,
|
||||
trust_level: 4,
|
||||
deleted_at: null,
|
||||
user_deleted: false,
|
||||
edit_reason: null,
|
||||
can_view_edit_history: true,
|
||||
wiki: false,
|
||||
can_accept_answer: false,
|
||||
can_unaccept_answer: true,
|
||||
accepted_answer: true,
|
||||
},
|
||||
],
|
||||
stream: [21, 22],
|
||||
},
|
||||
timeline_lookup: [[1, 0]],
|
||||
id: 23,
|
||||
title: "Test solved",
|
||||
fancy_title: "Test solved",
|
||||
posts_count: 2,
|
||||
created_at: "2017-08-08T20:11:32.098Z",
|
||||
views: 6,
|
||||
reply_count: 0,
|
||||
participant_count: 1,
|
||||
like_count: 0,
|
||||
last_posted_at: "2017-08-08T20:12:04.657Z",
|
||||
visible: true,
|
||||
closed: false,
|
||||
archived: false,
|
||||
has_summary: false,
|
||||
archetype: "regular",
|
||||
slug: "test-solved",
|
||||
category_id: 1,
|
||||
word_count: 18,
|
||||
deleted_at: null,
|
||||
pending_posts_count: 0,
|
||||
user_id: 1,
|
||||
pm_with_non_human_user: false,
|
||||
draft: null,
|
||||
draft_key: "topic_23",
|
||||
draft_sequence: 6,
|
||||
posted: true,
|
||||
unpinned: null,
|
||||
pinned_globally: false,
|
||||
pinned: false,
|
||||
pinned_at: null,
|
||||
pinned_until: null,
|
||||
details: {
|
||||
created_by: {
|
||||
id: 1,
|
||||
username: "kzh",
|
||||
avatar_template:
|
||||
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
},
|
||||
last_poster: {
|
||||
id: 1,
|
||||
username: "kzh",
|
||||
avatar_template:
|
||||
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
},
|
||||
participants: [
|
||||
{
|
||||
id: 1,
|
||||
username: "kzh",
|
||||
avatar_template:
|
||||
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
post_count: 2,
|
||||
primary_group_name: null,
|
||||
primary_group_flair_url: null,
|
||||
primary_group_flair_color: null,
|
||||
primary_group_flair_bg_color: null,
|
||||
},
|
||||
],
|
||||
notification_level: 3,
|
||||
notifications_reason_id: 1,
|
||||
can_move_posts: true,
|
||||
can_edit: 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,
|
||||
},
|
||||
highest_post_number: 2,
|
||||
last_read_post_number: 2,
|
||||
last_read_post_id: 22,
|
||||
deleted_by: null,
|
||||
has_deleted: false,
|
||||
actions_summary: [
|
||||
{ id: 4, count: 0, hidden: false, can_act: true },
|
||||
{ id: 7, count: 0, hidden: false, can_act: true },
|
||||
{ id: 8, count: 0, hidden: false, can_act: true },
|
||||
],
|
||||
chunk_size: 20,
|
||||
bookmarked: false,
|
||||
tags: [],
|
||||
featured_link: null,
|
||||
topic_timer: null,
|
||||
message_bus_last_id: 0,
|
||||
accepted_answer: { post_number: 2, username: "kzh", excerpt },
|
||||
};
|
||||
};
|
||||
|
||||
server.get("/t/11.json", () => {
|
||||
return helper.response(
|
||||
postStreamWithAcceptedAnswerExcerpt("this is an excerpt")
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
import { click, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "I18n";
|
||||
import { postStreamWithAcceptedAnswerExcerpt } from "../helpers/discourse-solved-helpers";
|
||||
|
||||
acceptance(
|
||||
"Discourse Solved | Widget Post Menu |Accept and Unaccept",
|
||||
function (needs) {
|
||||
needs.user({
|
||||
admin: true,
|
||||
});
|
||||
|
||||
needs.settings({
|
||||
glimmer_post_menu_mode: "disabled",
|
||||
solved_enabled: true,
|
||||
allow_solved_on_all_topics: true,
|
||||
});
|
||||
|
||||
needs.pretender((server, helper) => {
|
||||
server.post("/solution/accept", () => helper.response({ success: "OK" }));
|
||||
server.post("/solution/unaccept", () =>
|
||||
helper.response({ success: "OK" })
|
||||
);
|
||||
|
||||
server.get("/t/12.json", () => {
|
||||
return helper.response(postStreamWithAcceptedAnswerExcerpt(null));
|
||||
});
|
||||
});
|
||||
|
||||
test("accepting and unaccepting a post works", async function (assert) {
|
||||
await visit("/t/without-excerpt/12");
|
||||
|
||||
assert
|
||||
.dom("#post_2 .accepted")
|
||||
.exists("Unaccept button is visible")
|
||||
.hasText(I18n.t("solved.solution"), "Unaccept button has correct text");
|
||||
|
||||
await click("#post_2 .accepted");
|
||||
|
||||
assert.dom("#post_2 .unaccepted").exists("Accept button is visible");
|
||||
|
||||
await click("#post_2 .unaccepted");
|
||||
|
||||
assert.dom("#post_2 .accepted").exists("Unccept button is visible again");
|
||||
});
|
||||
}
|
||||
);
|
||||
@@ -0,0 +1,204 @@
|
||||
export const postStreamWithAcceptedAnswerExcerpt = (excerpt) => {
|
||||
return {
|
||||
post_stream: {
|
||||
posts: [
|
||||
{
|
||||
id: 21,
|
||||
name: null,
|
||||
username: "kzh",
|
||||
avatar_template: "/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
created_at: "2017-08-08T20:11:32.542Z",
|
||||
cooked: "<p>How do I declare a variable in ruby?</p>",
|
||||
post_number: 1,
|
||||
post_type: 1,
|
||||
updated_at: "2017-08-08T21:03:30.521Z",
|
||||
reply_count: 0,
|
||||
reply_to_post_number: null,
|
||||
quote_count: 0,
|
||||
avg_time: null,
|
||||
incoming_link_count: 0,
|
||||
reads: 1,
|
||||
score: 0,
|
||||
yours: true,
|
||||
topic_id: 23,
|
||||
topic_slug: "test-solved",
|
||||
display_username: null,
|
||||
primary_group_name: null,
|
||||
primary_group_flair_url: null,
|
||||
primary_group_flair_bg_color: null,
|
||||
primary_group_flair_color: null,
|
||||
version: 2,
|
||||
can_edit: true,
|
||||
can_delete: false,
|
||||
can_recover: null,
|
||||
can_wiki: true,
|
||||
read: true,
|
||||
user_title: null,
|
||||
actions_summary: [
|
||||
{ id: 3, can_act: true },
|
||||
{ id: 4, can_act: true },
|
||||
{ id: 5, hidden: true, can_act: true },
|
||||
{ id: 7, can_act: true },
|
||||
{ id: 8, can_act: true },
|
||||
],
|
||||
moderator: false,
|
||||
admin: true,
|
||||
staff: true,
|
||||
user_id: 1,
|
||||
hidden: false,
|
||||
hidden_reason_id: null,
|
||||
trust_level: 4,
|
||||
deleted_at: null,
|
||||
user_deleted: false,
|
||||
edit_reason: null,
|
||||
can_view_edit_history: true,
|
||||
wiki: false,
|
||||
can_accept_answer: false,
|
||||
can_unaccept_answer: false,
|
||||
accepted_answer: false,
|
||||
},
|
||||
{
|
||||
id: 22,
|
||||
name: null,
|
||||
username: "kzh",
|
||||
avatar_template: "/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
created_at: "2017-08-08T20:12:04.657Z",
|
||||
cooked:
|
||||
"<p>this is a long answer that potentially solves the question</p>",
|
||||
post_number: 2,
|
||||
post_type: 1,
|
||||
updated_at: "2017-08-08T21:20:24.417Z",
|
||||
reply_count: 0,
|
||||
reply_to_post_number: null,
|
||||
quote_count: 0,
|
||||
avg_time: null,
|
||||
incoming_link_count: 0,
|
||||
reads: 1,
|
||||
score: 0,
|
||||
yours: true,
|
||||
topic_id: 23,
|
||||
topic_slug: "test-solved",
|
||||
display_username: null,
|
||||
primary_group_name: null,
|
||||
primary_group_flair_url: null,
|
||||
primary_group_flair_bg_color: null,
|
||||
primary_group_flair_color: null,
|
||||
version: 2,
|
||||
can_edit: true,
|
||||
can_delete: true,
|
||||
can_recover: null,
|
||||
can_wiki: true,
|
||||
read: true,
|
||||
user_title: null,
|
||||
actions_summary: [
|
||||
{ id: 3, can_act: true },
|
||||
{ id: 4, can_act: true },
|
||||
{ id: 5, hidden: true, can_act: true },
|
||||
{ id: 7, can_act: true },
|
||||
{ id: 8, can_act: true },
|
||||
],
|
||||
moderator: false,
|
||||
admin: true,
|
||||
staff: true,
|
||||
user_id: 1,
|
||||
hidden: false,
|
||||
hidden_reason_id: null,
|
||||
trust_level: 4,
|
||||
deleted_at: null,
|
||||
user_deleted: false,
|
||||
edit_reason: null,
|
||||
can_view_edit_history: true,
|
||||
wiki: false,
|
||||
can_accept_answer: false,
|
||||
can_unaccept_answer: true,
|
||||
accepted_answer: true,
|
||||
},
|
||||
],
|
||||
stream: [21, 22],
|
||||
},
|
||||
timeline_lookup: [[1, 0]],
|
||||
id: 23,
|
||||
title: "Test solved",
|
||||
fancy_title: "Test solved",
|
||||
posts_count: 2,
|
||||
created_at: "2017-08-08T20:11:32.098Z",
|
||||
views: 6,
|
||||
reply_count: 0,
|
||||
participant_count: 1,
|
||||
like_count: 0,
|
||||
last_posted_at: "2017-08-08T20:12:04.657Z",
|
||||
visible: true,
|
||||
closed: false,
|
||||
archived: false,
|
||||
has_summary: false,
|
||||
archetype: "regular",
|
||||
slug: "test-solved",
|
||||
category_id: 1,
|
||||
word_count: 18,
|
||||
deleted_at: null,
|
||||
pending_posts_count: 0,
|
||||
user_id: 1,
|
||||
pm_with_non_human_user: false,
|
||||
draft: null,
|
||||
draft_key: "topic_23",
|
||||
draft_sequence: 6,
|
||||
posted: true,
|
||||
unpinned: null,
|
||||
pinned_globally: false,
|
||||
pinned: false,
|
||||
pinned_at: null,
|
||||
pinned_until: null,
|
||||
details: {
|
||||
created_by: {
|
||||
id: 1,
|
||||
username: "kzh",
|
||||
avatar_template: "/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
},
|
||||
last_poster: {
|
||||
id: 1,
|
||||
username: "kzh",
|
||||
avatar_template: "/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
},
|
||||
participants: [
|
||||
{
|
||||
id: 1,
|
||||
username: "kzh",
|
||||
avatar_template: "/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
post_count: 2,
|
||||
primary_group_name: null,
|
||||
primary_group_flair_url: null,
|
||||
primary_group_flair_color: null,
|
||||
primary_group_flair_bg_color: null,
|
||||
},
|
||||
],
|
||||
notification_level: 3,
|
||||
notifications_reason_id: 1,
|
||||
can_move_posts: true,
|
||||
can_edit: 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,
|
||||
},
|
||||
highest_post_number: 2,
|
||||
last_read_post_number: 2,
|
||||
last_read_post_id: 22,
|
||||
deleted_by: null,
|
||||
has_deleted: false,
|
||||
actions_summary: [
|
||||
{ id: 4, count: 0, hidden: false, can_act: true },
|
||||
{ id: 7, count: 0, hidden: false, can_act: true },
|
||||
{ id: 8, count: 0, hidden: false, can_act: true },
|
||||
],
|
||||
chunk_size: 20,
|
||||
bookmarked: false,
|
||||
tags: [],
|
||||
featured_link: null,
|
||||
topic_timer: null,
|
||||
message_bus_last_id: 0,
|
||||
accepted_answer: { post_number: 2, username: "kzh", excerpt },
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user