Hola,
Usamos Discourse versión 3.5.0.
Tenemos nuestro propio plugin en el que sobrescribimos varios elementos de Discourse y agregamos nuestras propias funcionalidades.
En este plugin, queremos agregar específicamente el ícono para agregar un evento en la barra de herramientas del composer. Para hacer esto, necesitamos importar:
-
el modelo
DiscoursePostEventEventque se encuentra enplugins/discourse-calendar/assets/javascripts/discourse/models/discourse-post-event-event.js -
el componente
PostEventBuilderque se encuentra enplugins/discourse-calendar/assets/javascripts/discourse/components/modal/post-event-builder.js
Además, hemos escrito pruebas de integración para nuestras funcionalidades que hemos colocado en nuestro plugin bajo el directorio /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");
});
});
Logramos hacer lo que queremos, pero las pruebas fallan independientemente del método de importación.
Importar al principio del archivo
Cuando importamos nuestro modelo y componente usando el método import al principio del archivo:
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";
Todo va bien en la ejecución, pero cuando ejecutamos nuestra prueba, no se ejecuta.
Require al principio del archivo
Cuando importamos nuestro modelo y componente usando el método require al principio del archivo:
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;
Todo va bien en la ejecución, pero cuando ejecutamos nuestra prueba, no se ejecuta.
Esto produce lo mismo que con import.
Require en el cuerpo del archivo
Cuando importamos nuestro modelo y componente usando el método require en el cuerpo de la función:
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;
... Resto del código
}
export default {
name: "add-custom-create-event-button",
initialize(container) {
withPluginApi(initializeEventBuilder);
},
};
Todo va bien en la ejecución, pero cuando ejecutamos nuestra prueba, falla.
El modelo no fue encontrado.
En resumen, nos gustaría saber cómo importar modelos, componentes, etc. correctamente desde otros plugins para que podamos ejecutar las pruebas de integración.
¡Gracias!



