プラグインのフロントエンドテスト中に、Siteオブジェクトを独自のフィクスチャでオーバーライドすることは可能ですか?

現在、このPRに取り組んでいます: FIX: presenting formatted location on User Card by merefield · Pull Request #73 · merefield/discourse-locations · GitHub

新しいフロントエンドテストで変更をカバーしようとしています。

しかし、必要なデータ属性が定義されていないため、テストの実行に失敗します。

現在直面している問題は、ここに保持されているフィクスチャを使用して、Siteのデータを正常にオーバーライドする方法です。

これは、Locations Pluginが存在する場合にSiteが保持する追加の属性が含まれています。

…そして、テスト全体でそれを永続させます!

新しいテストはここにあります。

フィクスチャを使用してSiteを正常にロードしているようです。

ブラウザでqunitの実行中にこのデバッガポイントで停止し、正しくロードされていることがわかります。

  test("user card location - shows correct format", async function (assert) {
    const siteAttrs = {
      ...siteFixtures["site.json"].site,
    };
    PreloadStore.store("site", cloneJSON(siteAttrs));
    Site.resetCurrent();
    debugger;
    PreloadStore.get("site")

image

しかし、User Cardがクリックされると、データは期待どおりではなく、特にcountry_codes属性が欠落しているため、テストはここで停止します。

オーバーライドしたSiteデータが失われているのはなぜですか?

「いいね!」 1

OK、これはイライラします。

Site オブジェクトの値はここで設定されているようです。

そして上書きできないのでしょうか?

コアのフィクスチャ(こちら: https://github.com/discourse/discourse/blob/93a4012ecb3af7306de0c51283d6dd2b2e90818c/app/assets/javascripts/discourse/tests/fixtures/site-fixtures.js)を変更して確認しましたが、私の変更が反映されています。

しかし、そうではなく、私のプラグイン内のフィクスチャで上書きしたいのです。

繰り返しになりますが、テスト コード のスコープではそれが可能ですが、プラグインコードが実行されると、コアのテストヘルパーによってロードされたフィクスチャに関連するサイトオブジェクトがスコープによって取得されているようです…

:thinking:

これを解決しました。他のオブジェクトと同様に needs を使用できることがわかりました。

手がかりはこちら:

最終的なコード:

  needs.site(cloneJSON(siteFixtures["country_codes.json"]));
「いいね!」 3

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.