File size: 1,164 Bytes
6778ee0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
defmodule ObanErrorReporterTest do
  use ExUnit.Case, async: true

  describe "handle_event/4" do
    setup do
      :telemetry.attach_many(
        "oban-errors-test",
        [[:oban, :job, :exception], [:oban, :notifier, :exception], [:oban, :plugin, :exception]],
        &ObanErrorReporter.handle_event/4,
        %{}
      )

      on_exit(fn -> :ok = :telemetry.detach("oban-errors-test") end)
    end

    @tag :capture_log
    test "doesn't detach on failure" do
      :ok =
        :telemetry.execute(
          [:oban, :job, :exception],
          _bad_measurements = %{},
          _bad_metadata = %{job: :bad_job}
        )

      handlers = :telemetry.list_handlers([:oban, :job, :exception])
      assert Enum.any?(handlers, &(&1.id == "oban-errors-test"))
    end

    test "logs an error on failure" do
      log =
        ExUnit.CaptureLog.capture_log(fn ->
          :ok =
            :telemetry.execute(
              [:oban, :job, :exception],
              _bad_measurements = %{},
              _bad_metadata = %{job: :bad_job}
            )
        end)

      assert log =~ "(BadMapError)"
      assert log =~ ":bad_job"
    end
  end
end