defmodule AprsmeWeb.GettextTest do
  use ExUnit.Case, async: false

  alias AprsmeWeb.Gettext

  setup do
    original = Elixir.Gettext.get_locale(Gettext)
    on_exit(fn -> Elixir.Gettext.put_locale(Gettext, original) end)
    :ok
  end

  describe "supported_locales/0" do
    test "returns the declared list" do
      assert Gettext.supported_locales() == ~w(en es de fr)
    end
  end

  describe "put_locale/1" do
    test "sets the process-wide Gettext locale for supported values" do
      Gettext.put_locale("es")
      assert Elixir.Gettext.get_locale(Gettext) == "es"

      Gettext.put_locale("fr")
      assert Elixir.Gettext.get_locale(Gettext) == "fr"
    end

    test "raises FunctionClauseError for unsupported locales" do
      assert_raise FunctionClauseError, fn ->
        Gettext.put_locale("zz")
      end
    end
  end
end
