//////////////////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2017, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////////////////

define(["sources/gettext", "translations"], function (gettext, translations) {
  describe("translate", function () {
    describe("when there is no translation", function () {
      it("returns the original string", function () {
        expect(gettext("something to be translated")).toEqual("something to be translated");
      });

      describe("when there are substitutions", function () {
        it("interpolates a substitution", function () {
          expect(gettext("translate text for %(person)s", {"person": "Sarah"})).toEqual("translate text for Sarah")
        });

        it("interpolates multiple substitutions", function () {
          expect(gettext("translate '%(text)s' for %(person)s",
            {
              "text": "constitution",
              "person": "Sarah"
            }
          )).toEqual("translate 'constitution' for Sarah")
        });
      });

    });

    describe("when there is a translation", function () {
      beforeEach(function () {
        translations['something to be translated'] = 'etwas zum uebersetzen';
        translations['another translation for %(person)s'] = 'eine weitere Uebersetzung fuer %(person)s';
      });

      it("returns the translation", function () {
        expect(gettext("something to be translated")).toEqual("etwas zum uebersetzen");
      });

      describe("when there is a substitution", function () {
        it("interpolates the substitution", function () {
          expect(gettext("another translation for %(person)s", {"person": "Sarah"}))
            .toEqual("eine weitere Uebersetzung fuer Sarah");
        });
      });
    });
  });
});