Packages
commanded
0.16.0-rc.0
1.4.10
1.4.9
1.4.8
1.4.7
1.4.6
1.4.3
1.4.2
1.4.1
1.4.0
1.4.0-rc.0
1.3.1
1.3.0
1.2.0
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-rc.1
1.0.0-rc.0
0.19.1
0.19.0
0.18.1
0.18.0
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.16.0-rc.1
0.16.0-rc.0
0.15.1
0.15.0
0.14.0
0.14.0-rc.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.5
0.8.4
0.8.3
0.8.1
0.8.0
0.7.1
0.6.2
0.6.1
0.6.0
0.4.0
0.3.1
0.3.0
0.2.1
0.2.0
0.1.0
Use Commanded to build your own Elixir applications following the CQRS/ES pattern.
Current section
Files
Jump to
Current section
Files
test/event/handler_config_test.exs
defmodule Commanded.Event.HandlerConfigTest do
use Commanded.StorageCase
defmodule DefaultConfigHandler do
use Commanded.Event.Handler,
name: __MODULE__
end
test "should default to `:eventual` consistency and start from `:origin`" do
{:ok, handler} = DefaultConfigHandler.start_link()
assert_config handler, [consistency: :eventual, start_from: :origin]
end
describe "global config change to default consistency" do
test "should default to `:eventual` consistency and start from `:origin`" do
Mix.Config.persist(commanded: [default_consistency: :strong])
{:ok, handler} = DefaultConfigHandler.start_link()
assert_config handler, [consistency: :strong, start_from: :origin]
Mix.Config.persist(commanded: [default_consistency: :eventual])
end
end
defmodule ExampleHandler do
use Commanded.Event.Handler,
name: __MODULE__,
consistency: :strong,
start_from: :current
end
describe "config provided to `start_link/1`" do
test "should use config defined in handler" do
{:ok, handler} = ExampleHandler.start_link()
assert_config handler, [consistency: :strong, start_from: :current]
end
test "should use overriden config when provided" do
{:ok, handler} = ExampleHandler.start_link(consistency: :eventual, start_from: :origin)
assert_config handler, [consistency: :eventual, start_from: :origin]
end
test "should use default config when not provided" do
{:ok, handler} = ExampleHandler.start_link(start_from: :origin)
assert_config handler, [consistency: :strong, start_from: :origin]
end
end
describe "config provided to `child_spec`" do
test "should use config defined in handler" do
{:ok, sup} = Supervisor.start_link([
ExampleHandler,
], strategy: :one_for_one)
[{_, handler, _, _}] = Supervisor.which_children(sup)
assert_config handler, [consistency: :strong, start_from: :current]
end
test "should use overriden config when provided" do
{:ok, sup} = Supervisor.start_link([
{ExampleHandler, [consistency: :eventual, start_from: :origin]},
], strategy: :one_for_one)
[{_, handler, _, _}] = Supervisor.which_children(sup)
assert_config handler, [consistency: :eventual, start_from: :origin]
end
end
defmodule InvalidConfiguredHandler do
use Commanded.Event.Handler,
name: __MODULE__,
invalid_config_option: "invalid"
end
test "should validate provided config" do
assert_raise RuntimeError, "Commanded.Event.HandlerConfigTest.InvalidConfiguredHandler specifies invalid options: [:invalid_config_option]", fn ->
Code.eval_string """
alias Commanded.Event.HandlerConfigTest.InvalidConfiguredHandler
{:ok, _pid} = InvalidConfiguredHandler.start_link()
"""
end
end
defp assert_config(handler, expected_config) do
actual_config = GenServer.call(handler, :config)
assert actual_config == expected_config
end
end