defmodule Ejabberd.Config.ValidationTest do
  use ExUnit.Case

  alias Ejabberd.Config
  alias Ejabberd.Config.Store
  alias Ejabberd.Config.Validation

  setup_all do
    pid = Process.whereis(Ejabberd.Config.Store)
    unless pid != nil and Process.alive?(pid) do
      Store.start_link

      File.cd("test/elixir-config/shared")
      config_file_path = File.cwd! <> "/ejabberd_for_validation.exs"
      Config.init(config_file_path)
    end

    {:ok, %{}}
  end

  test "validates correctly the modules" do
    [mod_configure, mod_time] = Store.get(:modules)

    [{:error, _mod, errors}] = Validation.validate(mod_configure)
    assert %{dependency: [mod_adhoc: :not_found]} == errors

    [{:error, _mod, errors}] = Validation.validate(mod_time)
    assert %{attribute: [{{:attr_not_supported, true}, :attr_not_supported}]} == errors

  end
end
