Здравствуйте,
Мы используем версию Discourse 3.5.0.
У нас есть собственный плагин, в котором мы переопределяем различные элементы Discourse и добавляем свои собственные функции.
В этом плагине мы хотим, в частности, добавить иконку создания события в панель инструментов композера. Для этого нам необходимо импортировать:
-
модель
DiscoursePostEventEvent, которая находится вplugins/discourse-calendar/assets/javascripts/discourse/models/discourse-post-event-event.js -
компонент
PostEventBuilder, который находится вplugins/discourse-calendar/assets/javascripts/discourse/components/modal/post-event-builder.js
Кроме того, мы написали интеграционные тесты для наших функций и разместили их в нашем плагине в директории /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);
},
};
Всё работает корректно при выполнении, но при запуске нашего теста он не проходит.
Модель не найдена.
В общем, мы хотели бы узнать, как правильно импортировать модели, компоненты и т.д. из других плагинов, чтобы можно было выполнять интеграционные тесты.
Спасибо!



