import PreloadStore from "preload-store";
import LocalizationInitializer from "discourse/initializers/localization";

QUnit.module("initializer:localization", {
  _locale: I18n.locale,
  _translations: I18n.translations,

  beforeEach() {
    I18n.locale = "fr";

    I18n.translations = {
      fr: {
        js: {
          composer: {
            reply: "RĂ©pondre"
          }
        }
      },
      en: {
        js: {
          topic: {
            reply: {
              help: "begin composing a reply to this topic"
            }
          }
        }
      }
    };
  },

  afterEach() {
    I18n.locale = this._locale;
    I18n.translations = this._translations;
  }
});

QUnit.test("translation overrides", function(assert) {
  PreloadStore.store("translationOverrides", {
    "js.composer.reply": "WAT",
    "js.topic.reply.help": "foobar"
  });
  LocalizationInitializer.initialize(this.registry);

  assert.equal(
    I18n.t("composer.reply"),
    "WAT",
    "overrides existing translation in current locale"
  );
  assert.equal(
    I18n.t("topic.reply.help"),
    "foobar",
    "overrides translation in default locale"
  );
});

QUnit.test(
  "skip translation override if parent node is not an object",
  function(assert) {
    PreloadStore.store("translationOverrides", {
      "js.composer.reply": "WAT",
      "js.composer.reply.help": "foobar"
    });
    LocalizationInitializer.initialize(this.registry);

    assert.equal(I18n.t("composer.reply.help"), "[fr.composer.reply.help]");
  }
);