Hallo,
wir verwenden Discourse Version 3.5.0.
Wir haben unser eigenes Plugin, in dem wir verschiedene Discourse-Elemente überschreiben und eigene Funktionen hinzufügen.
In diesem Plugin möchten wir insbesondere das Symbol zum Hinzufügen eines Ereignisses zur Symbolleiste des Komponisten hinzufügen. Dazu müssen wir Folgendes importieren:
-
das Modell
DiscoursePostEventEvent, das sich unterplugins/discourse-calendar/assets/javascripts/discourse/models/discourse-post-event-event.jsbefindet -
die Komponente
PostEventBuilder, die sich unterplugins/discourse-calendar/assets/javascripts/discourse/components/modal/post-event-builder.jsbefindet
Darüber hinaus haben wir Integrationstests für unsere Funktionen geschrieben, die wir in unserem Plugin unter dem Verzeichnis /test abgelegt haben.
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");
});
});
Wir schaffen es, das zu tun, was wir wollen, aber die Tests schlagen fehl, unabhängig von der Importmethode.
Import am Dateianfang
Wenn wir unsere Modelle und Komponenten über die import-Methode am Dateianfang importieren:
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";
Beim Ausführen ist alles in Ordnung, aber wenn wir unseren Test starten, wird er nicht ausgeführt.
Require am Dateianfang
Wenn wir unsere Modelle und Komponenten über die require-Methode am Dateianfang importieren:
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;
Beim Ausführen ist alles in Ordnung, aber wenn wir unseren Test starten, wird er nicht ausgeführt.
Dies führt zum gleichen Ergebnis wie bei import.
Require im Dateikörper
Wenn wir unsere Modelle und Komponenten über die require-Methode im Körper der Funktion importieren:
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;
... Rest des Codes
}
export default {
name: "add-custom-create-event-button",
initialize(container) {
withPluginApi(initializeEventBuilder);
},
};
Beim Ausführen ist alles in Ordnung, aber wenn wir unseren Test starten, schlägt er fehl.
Das Modell wurde nicht gefunden.
Kurz gesagt, wir möchten wissen, wie man Modelle, Komponenten usw. korrekt aus anderen Plugins importiert, damit wir die Integrationstests ausführen können.
Vielen Dank!



