Ciao,
Utilizziamo Discourse versione 3.5.0.
Abbiamo un nostro plugin in cui sovrascriviamo vari elementi di Discourse e aggiungiamo le nostre funzionalità.
In questo plugin, vogliamo in particolare aggiungere l’icona di aggiunta di un evento nella barra degli strumenti del composer. Per fare ciò, dobbiamo importare:
-
il modello
DiscoursePostEventEventche si trova inplugins/discourse-calendar/assets/javascripts/discourse/models/discourse-post-event-event.js -
il componente
PostEventBuilderche si trova inplugins/discourse-calendar/assets/javascripts/discourse/components/modal/post-event-builder.js
Inoltre, abbiamo scritto dei test di integrazione per le nostre funzionalità che abbiamo inserito nel nostro plugin nella directory /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");
});
});
Riusciamo a fare ciò che vogliamo, ma i test falliscono indipendentemente dalla modalità di importazione.
Import in testa al file
Quando importiamo il nostro modello e componente tramite il metodo import in testa al file:
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";
Tutto va bene durante l’esecuzione, ma quando avviamo il nostro test, questo non viene eseguito.
Require in testa al file
Quando importiamo il nostro modello e componente tramite il metodo require in testa al file:
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;
Tutto va bene durante l’esecuzione, ma quando avviamo il nostro test, questo non viene eseguito.
Ciò produce lo stesso risultato che con import.
Require nel corpo del file
Quando importiamo il nostro modello e componente tramite il metodo require nel corpo della funzione:
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 codice
}
export default {
name: "add-custom-create-event-button",
initialize(container) {
withPluginApi(initializeEventBuilder);
},
};
Tutto va bene durante l’esecuzione, ma quando avviamo il nostro test, questo fallisce.
Il modello non è stato trovato.
Insomma, vorremmo sapere come importare correttamente modelli, componenti ecc. da altri plugin in modo da poter eseguire i test di integrazione.
Grazie!



