discourse/plugins/chat/test/javascripts/unit/utility/plugin-api-test.js
dependabot[bot] e7d3c344d1
Build(deps-dev): Bump the lint group across 1 directory with 4 updates (#33881)
Bumps the lint group with 4 updates in the / directory:
[@discourse/lint-configs](https://github.com/discourse/lint-configs),
[ember-template-lint](https://github.com/ember-template-lint/ember-template-lint),
[eslint](https://github.com/eslint/eslint) and
[stylelint](https://github.com/stylelint/stylelint).


Updates `@discourse/lint-configs` from 2.22.0 to 2.28.0
- [Commits](https://github.com/discourse/lint-configs/commits)

Updates `ember-template-lint` from 7.7.0 to 7.9.1
- [Release
notes](https://github.com/ember-template-lint/ember-template-lint/releases)
-
[Changelog](https://github.com/ember-template-lint/ember-template-lint/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/ember-template-lint/ember-template-lint/commits)

Updates `eslint` from 9.27.0 to 9.32.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.27.0...v9.32.0)

Updates `stylelint` from 16.19.1 to 16.22.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
-
[Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/stylelint/stylelint/compare/16.19.1...16.22.0)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Discourse CI <ci@ci.invalid>
Co-authored-by: Jarek Radosz <jarek@cvx.dev>
2025-07-28 18:02:41 +02:00

72 lines
2.5 KiB
JavaScript

import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
import { withPluginApi } from "discourse/lib/plugin-api";
import pretender from "discourse/tests/helpers/create-pretender";
import { logIn } from "discourse/tests/helpers/qunit-helpers";
import ChatMessageInteractor, {
resetRemovedChatComposerSecondaryActions,
} from "discourse/plugins/chat/discourse/lib/chat-message-interactor";
import ChatFabricators from "discourse/plugins/chat/discourse/lib/fabricators";
module("Chat | Unit | Utility | plugin-api", function (hooks) {
setupTest(hooks);
test("#sendChatMessage", async function (assert) {
const done = assert.async();
pretender.post("/chat/1", (request) => {
assert.strictEqual(request.url, "/chat/1");
assert.strictEqual(request.requestBody, "thread_id=2&message=hello");
done();
return [200, {}, {}];
});
withPluginApi(async (api) => {
await api.sendChatMessage(1, { message: "hello", threadId: 2 });
});
});
test("#removeChatComposerSecondaryActions", async function (assert) {
withPluginApi(async (api) => {
// assert that the api method is defined
assert.strictEqual(
typeof api.removeChatComposerSecondaryActions,
"function"
);
const user = logIn(this.owner);
const message = new ChatFabricators(this.owner).message({ user });
const interactor = new ChatMessageInteractor(
this.owner,
message,
"channel"
);
// assert that the initial secondary actions are present
const secondaryActions = interactor.secondaryActions;
assert.true(secondaryActions.length > 0);
try {
// remove the first secondary action listed
api.removeChatComposerSecondaryActions(secondaryActions[0].id);
const updatedSecondaryActions = interactor.secondaryActions;
// assert that the secondary action was removed
assert.true(
updatedSecondaryActions.length < secondaryActions.length,
"the updated secondary actions must contain less items than the original"
);
assert.false(
updatedSecondaryActions
.map((v) => v.id)
.includes(secondaryActions[0]),
"the updated secondary actions must not include the removed action"
);
} finally {
// reset the secondary actions removed to prevent leakage to other tests
resetRemovedChatComposerSecondaryActions();
}
});
});
});