Bonjour,
Nous utilisons Discourse version 3.5.0.
Nous avons notre propre plugin dans lequel nous surchargeons divers éléments de discourse et ajoutons nos propres fonctionnalités.
Dans ce plugin, nous souhaitons notamment ajouter l’icône d’ajout d’un événement dans la barre des outils du composer. Pour ce faire, nous avons besoin d’importer :
-
le modèle
DiscoursePostEventEvent
qui se situe dansplugins/discourse-calendar/assets/javascripts/discourse/models/discourse-post-event-event.js
-
le composant
PostEventBuilder
qui se situe dansplugins/discourse-calendar/assets/javascripts/discourse/components/modal/post-event-builder.js
Par ailleurs, nous avons écrit des tests d’intégration pour nos fonctionnalités que nous avons mis dans notre plugin sous le répertoire /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")
});
});
Nous arrivons à faire ce que nous voulons, mais les tests échouent quelque soit le mode d’import.
Import en tête de fichier
Lorsque nous importons nos modèle et composant via la méthode import
en entête de fichier:
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";
Tout va bien à l’exécution, mais lorsque nous lançons notre test, il n’est pas exécuté
Require en tête de fichier
Lorsque nous importons nos modèle et composant via la méthode require
en entête de fichier:
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;
Tout va bien à l’exécution, mais lorsque nous lançons notre test, il n’est pas exécuté
Cela produit la même chose qu’avec import
.
Require dans le corps du fichier
Lorsque nous importons nos modèle et composant via la méthode require
dans le corps de la fonction :
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;
... Suite du code
}
export default {
name: "add-custom-create-event-button",
initialize(container) {
withPluginApi(initializeEventBuilder);
},
};
Tout va bien à l’exécution, mais lorsque nous lançons notre test, il échoue.
Le modèle n’a pas été trouvé.
Bref, nous voudrions savoir comment importer des modèles, composants etc… correctement depuis d’autres plugins pour qu’on puisse exécuter les tests d’intégration.
Merci !