Olá,
Estamos usando o Discourse versão 3.5.0.
Temos nosso próprio plugin no qual substituímos vários elementos do Discourse e adicionamos nossas próprias funcionalidades.
Neste plugin, queremos adicionar o ícone de adição de um evento na barra de ferramentas do composer. Para fazer isso, precisamos importar:
-
o modelo
DiscoursePostEventEventque está emplugins/discourse-calendar/assets/javascripts/discourse/models/discourse-post-event-event.js -
o componente
PostEventBuilderque está emplugins/discourse-calendar/assets/javascripts/discourse/components/modal/post-event-builder.js
Além disso, escrevemos testes de integração para nossas funcionalidades que colocamos em nosso plugin no diretório /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");
});
});
Conseguimos fazer o que queremos, mas os testes falham independentemente do método de importação.
Importação no topo do arquivo
Quando importamos nosso modelo e componente usando o método import no topo do arquivo:
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";
Tudo corre bem na execução, mas quando executamos nosso teste, ele não é executado.
Require no topo do arquivo
Quando importamos nosso modelo e componente usando o método require no topo do arquivo:
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;
Tudo corre bem na execução, mas quando executamos nosso teste, ele não é executado.
Isso produz o mesmo resultado que com import.
Require no corpo do arquivo
Quando importamos nosso modelo e componente usando o método require no corpo da função:
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;
... Restante do código
}
export default {
name: "add-custom-create-event-button",
initialize(container) {
withPluginApi(initializeEventBuilder);
},
};
Tudo corre bem na execução, mas quando executamos nosso teste, ele falha.
O modelo não foi encontrado.
Em resumo, gostaríamos de saber como importar modelos, componentes, etc. corretamente de outros plugins para que possamos executar os testes de integração.
Obrigado!



