mobilizon.chapril.org-mobil.../test/service/error_reporting/error_reporting_test.exs

81 lines
2.1 KiB
Elixir

defmodule Mobilizon.Service.ErrorReportingTest do
@moduledoc """
Mpdule to test loading and configuring error reporting adapters
"""
use ExUnit.Case, async: true
import Mox
alias Mobilizon.Service.ErrorReporting
defmock(ErrorReportingMock, for: ErrorReporting)
describe "adapter/0 returns the enabled adapter" do
test "adapter/0 returns the configured adapter if enabled" do
expect(ErrorReportingMock, :enabled?, fn ->
true
end)
Mobilizon.Config.put([Mobilizon.Service.ErrorReporting, :adapter], ErrorReportingMock)
assert ErrorReportingMock == ErrorReporting.adapter()
end
test "adapter/0 returns nothing if configured adapter is not enabled" do
expect(ErrorReportingMock, :enabled?, fn ->
false
end)
Mobilizon.Config.put([Mobilizon.Service.ErrorReporting, :adapter], ErrorReportingMock)
assert nil == ErrorReporting.adapter()
end
test "adapter/0 returns nothing if not adapter is configured adapter is configured" do
expect(ErrorReportingMock, :enabled?, fn ->
true
end)
Mobilizon.Config.put([Mobilizon.Service.ErrorReporting, :adapter], nil)
assert nil == ErrorReporting.adapter()
end
end
describe "forwards to the configured adapter the method" do
setup do
expect(ErrorReportingMock, :enabled?, fn ->
true
end)
Mobilizon.Config.put([Mobilizon.Service.ErrorReporting, :adapter], ErrorReportingMock)
:ok
end
test "attach/0" do
expect(ErrorReportingMock, :attach, fn ->
:attached
end)
assert :attached == ErrorReporting.attach()
end
test "handle_event/4" do
expect(ErrorReportingMock, :handle_event, fn arg1, arg2, arg3, arg4 ->
{:handled_event, [arg1, arg2, arg3, arg4]}
end)
assert {:handled_event, [:one, :two, :three, :four]} ==
ErrorReporting.handle_event(:one, :two, :three, :four)
end
test "configure/0" do
expect(ErrorReportingMock, :configure, fn ->
:configured
end)
assert :configured == ErrorReporting.configure()
end
end
end