مرحباً،
نحن نستخدم Discourse الإصدار 3.5.0.
لدينا المكون الإضافي الخاص بنا والذي نعيد فيه كتابة عناصر discourse المختلفة ونضيف وظائفنا الخاصة.
في هذا المكون الإضافي، نريد على وجه الخصوص إضافة أيقونة إضافة حدث إلى شريط أدوات المنشئ. للقيام بذلك، نحتاج إلى استيراد:
-
النموذج
DiscoursePostEventEventالموجود فيplugins/discourse-calendar/assets/javascripts/discourse/models/discourse-post-event-event.js -
المكون
PostEventBuilderالموجود فيplugins/discourse-calendar/assets/javascripts/discourse/components/modal/post-event-builder.js
بالإضافة إلى ذلك، لقد كتبنا اختبارات تكامل لوظائفنا التي وضعناها في المكون الإضافي الخاص بنا تحت الدليل /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");
});
});
نحن قادرون على فعل ما نريد، ولكن الاختبارات تفشل بغض النظر عن طريقة الاستيراد.
الاستيراد في بداية الملف
عندما نستورد النموذج والمكون الخاص بنا باستخدام طريقة import في بداية الملف:
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";
كل شيء على ما يرام عند التنفيذ، ولكن عندما نقوم بتشغيل اختبارنا، فإنه لا يتم تنفيذه
Require في بداية الملف
عندما نستورد النموذج والمكون الخاص بنا باستخدام طريقة require في بداية الملف:
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;
كل شيء على ما يرام عند التنفيذ، ولكن عندما نقوم بتشغيل اختبارنا، فإنه لا يتم تنفيذه
هذا ينتج نفس الشيء كما هو الحال مع import.
Require في جسم الملف
عندما نستورد النموذج والمكون الخاص بنا باستخدام طريقة require في جسم الدالة:
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;
... بقية الكود
}
export default {
name: "add-custom-create-event-button",
initialize(container) {
withPluginApi(initializeEventBuilder);
},
};
كل شيء على ما يرام عند التنفيذ، ولكن عندما نقوم بتشغيل اختبارنا، فإنه يفشل.
لم يتم العثور على النموذج.
باختصار، نريد أن نعرف كيفية استيراد النماذج والمكونات وما إلى ذلك بشكل صحيح من المكونات الإضافية الأخرى حتى نتمكن من تشغيل اختبارات التكامل.
شكرا!



