if not Enum.empty?(Path.wildcard("lib/**/*_test.exs")) do
  raise "Oops, test(s) found in `lib/` directory. Move them to `test/`."
end

{:ok, _} = Application.ensure_all_started(:ex_machina)
Mox.defmock(Plausible.HTTPClient.Mock, for: Plausible.HTTPClient.Interface)
Application.ensure_all_started(:double)

# Temporary flag to test `experimental_reduced_joins` flag on all tests.
if System.get_env("TEST_EXPERIMENTAL_REDUCED_JOINS") == "1" do
  FunWithFlags.enable(:experimental_reduced_joins)
  FunWithFlags.enable(:experimental_session_count)
else
  FunWithFlags.disable(:experimental_reduced_joins)
  FunWithFlags.disable(:experimental_session_count)
end

Ecto.Adapters.SQL.Sandbox.mode(Plausible.Repo, :manual)

# warn about minio if it's included in tests but not running
if :minio in Keyword.fetch!(ExUnit.configuration(), :include) do
  Plausible.TestUtils.ensure_minio()
end

if Mix.env() == :ce_test do
  IO.puts("Test mode: Communnity Edition")
  ExUnit.configure(exclude: [:slow, :minio, :ee_only])
else
  IO.puts("Test mode: Enterprise Edition")
  ExUnit.configure(exclude: [:slow, :minio, :ce_build_only])
end
