こんにちは。
Discourse バージョン 3.5.0 を使用しています。
独自のプラグインがあり、Discourse のさまざまな要素をオーバーライドし、独自の機能を追加しています。
このプラグインでは、特にコンポーザーのツールバーにイベント追加アイコンを追加したいと考えています。これを行うには、以下をインポートする必要があります。
-
plugins/discourse-calendar/assets/javascripts/discourse/models/discourse-post-event-event.jsにあるモデルDiscoursePostEventEvent -
plugins/discourse-calendar/assets/javascripts/discourse/components/modal/post-event-builder.jsにあるコンポーネントPostEventBuilder
さらに、プラグインの /test ディレクトリの下に機能の統合テストを作成しました。
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
acceptance("TOTO", function (needs) {
test("coopaname integration - composer", async function (assert) {
await visit("/");
assert.equal(1, 1, "OK");
});
});
やりたいことは実現できていますが、インポート方法に関わらずテストが失敗します。
ファイルの先頭でのインポート
ファイルの先頭で import メソッドを使用してモデルとコンポーネントをインポートする場合:
import DiscoursePostEventEvent from "discourse/plugins/discourse-calendar/discourse/models/discourse-post-event-event";
import PostEventBuilder from "discourse/plugins/discourse-calendar/discourse/components/modal/post-event-builder";
実行はすべて問題ありませんが、テストを実行すると実行されません。
ファイルの先頭での Require
ファイルの先頭で require メソッドを使用してモデルとコンポーネントをインポートする場合:
const DiscoursePostEventEvent = require("discourse/plugins/discourse-calendar/discourse/models/discourse-post-event-event").default;
const PostEventBuilder = require("discourse/plugins/discourse-calendar/discourse/components/modal/post-event-builder").default;
実行はすべて問題ありませんが、テストを実行すると実行されません。
import の場合と同じ結果になります。
ファイル本文での Require
関数の本文で require メソッドを使用してモデルとコンポーネントをインポートする場合:
import { withPluginApi } from "discourse/lib/plugin-api";
function initializeEventBuilder(api) {
const DiscoursePostEventEvent =
require("discourse/plugins/discourse-calendar/discourse/models/discourse-post-event-event").default;
const PostEventBuilder =
require("discourse/plugins/discourse-calendar/discourse/components/modal/post-event-builder").default;
// ... コードの続き
}
export default {
name: "add-custom-create-event-button",
initialize(container) {
withPluginApi(initializeEventBuilder);
},
};
実行はすべて問題ありませんが、テストを実行すると失敗します。
モデルが見つかりませんでした。
要するに、他のプラグインからモデル、コンポーネントなどを正しくインポートする方法を知りたいです。統合テストを実行できるようにしたいのです。
よろしくお願いします!



