안녕하세요,
현재 Discourse 버전 3.5.0을 사용하고 있습니다.
저희는 Discourse의 다양한 요소를 오버라이드하고 자체 기능을 추가하는 자체 플러그인을 보유하고 있습니다.
이 플러그인에서 특히 composer의 도구바에 이벤트 추가 아이콘을 추가하려고 합니다. 이를 위해 다음을 가져와야 합니다:
-
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
파일 헤더에서 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);
},
};
실행 시에는 문제가 없지만, 테스트를 실행하면 실패합니다.
모델을 찾을 수 없다고 합니다.
요약하자면, 통합 테스트를 실행할 수 있도록 다른 플러그인에서 모델, 컴포넌트 등을 올바르게 가져오는 방법에 대해 알고 싶습니다.
감사합니다!



