This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/tests/integration/widgets/post-small-action-test.js
Martin Brennan ecee9d000b
FEATURE: Allow recovery of deleted small action posts (#14643)
Previously when clicking the Delete button for small action posts
there was no way to recover this post if the action was accidental.
Now if canRecover is true on the post, which it is just after it
is deleted and the post is fetched from the server again, we show
an undo button which calls the recover endpoint for the post.

We also now disallow the editing of the post if it is deleted, and
show the proper deleted red CSS on the small action post when deleted.
2021-10-20 08:13:27 +10:00

81 lines
2.6 KiB
JavaScript

import componentTest, {
setupRenderingTest,
} from "discourse/tests/helpers/component-test";
import { discourseModule, exists } from "discourse/tests/helpers/qunit-helpers";
import hbs from "htmlbars-inline-precompile";
discourseModule(
"Integration | Component | Widget | post-small-action",
function (hooks) {
setupRenderingTest(hooks);
componentTest("does not have delete/edit/recover buttons by default", {
template: hbs`{{mount-widget widget="post-small-action" args=args}}`,
beforeEach() {
this.set("args", { id: 123 });
},
async test(assert) {
assert.ok(!exists(".small-action-desc > .small-action-delete"));
assert.ok(!exists(".small-action-desc > .small-action-recover"));
assert.ok(!exists(".small-action-desc > .small-action-edit"));
},
});
componentTest("shows edit button if canEdit", {
template: hbs`{{mount-widget widget="post-small-action" args=args}}`,
beforeEach() {
this.set("args", { id: 123, canEdit: true });
},
async test(assert) {
assert.ok(
exists(".small-action-desc > .small-action-edit"),
"it adds the edit small action button"
);
},
});
componentTest("does not show edit button if canRecover even if canEdit", {
template: hbs`{{mount-widget widget="post-small-action" args=args}}`,
beforeEach() {
this.set("args", { id: 123, canEdit: true, canRecover: true });
},
async test(assert) {
assert.ok(
!exists(".small-action-desc > .small-action-edit"),
"it does not add the edit small action button"
);
assert.ok(
exists(".small-action-desc > .small-action-recover"),
"it adds the recover small action button"
);
},
});
componentTest("shows delete button if canDelete", {
template: hbs`{{mount-widget widget="post-small-action" args=args}}`,
beforeEach() {
this.set("args", { id: 123, canDelete: true });
},
async test(assert) {
assert.ok(
exists(".small-action-desc > .small-action-delete"),
"it adds the delete small action button"
);
},
});
componentTest("shows undo button if canRecover", {
template: hbs`{{mount-widget widget="post-small-action" args=args}}`,
beforeEach() {
this.set("args", { id: 123, canRecover: true });
},
async test(assert) {
assert.ok(
exists(".small-action-desc > .small-action-recover"),
"it adds the recover small action button"
);
},
});
}
);