2020-06-13 17:13:05 -04:00
|
|
|
defmodule StateTest do
|
|
|
|
|
use ExUnit.Case
|
|
|
|
|
|
|
|
|
|
alias Omnibot.State
|
|
|
|
|
|
|
|
|
|
setup do
|
|
|
|
|
state = start_supervised!(State)
|
|
|
|
|
{:ok, state: state}
|
|
|
|
|
end
|
|
|
|
|
|
2020-07-02 18:30:46 -07:00
|
|
|
test "state channel_plugins works correctly", %{state: state} do
|
|
|
|
|
plugins = [
|
2020-06-13 17:13:05 -04:00
|
|
|
{FooBar, channels: ["#foo", "#bar"]},
|
|
|
|
|
{Foo, channels: ["#foo"]},
|
|
|
|
|
{Bar, channels: ["#bar"]},
|
|
|
|
|
{Baz, channels: ["#baz"]},
|
|
|
|
|
{All, channels: :all},
|
|
|
|
|
]
|
|
|
|
|
|
2020-07-02 18:30:46 -07:00
|
|
|
plugins |> Enum.each(fn plugin -> State.add_loaded_plugin(state, plugin) end)
|
2020-06-13 17:13:05 -04:00
|
|
|
|
2020-07-02 18:30:46 -07:00
|
|
|
plugins = State.channel_plugins(state, "#foo")
|
|
|
|
|
|> Enum.map(fn {plugin, _} -> plugin end)
|
|
|
|
|
assert length(plugins) == 3
|
|
|
|
|
assert Enum.member?(plugins, FooBar)
|
|
|
|
|
assert Enum.member?(plugins, Foo)
|
|
|
|
|
assert Enum.member?(plugins, All)
|
2020-06-13 17:13:05 -04:00
|
|
|
|
2020-07-02 18:30:46 -07:00
|
|
|
plugins = State.channel_plugins(state, "#bar")
|
|
|
|
|
|> Enum.map(fn {plugin, _} -> plugin end)
|
|
|
|
|
assert length(plugins) == 3
|
|
|
|
|
assert Enum.member?(plugins, FooBar)
|
|
|
|
|
assert Enum.member?(plugins, Bar)
|
|
|
|
|
assert Enum.member?(plugins, All)
|
2020-06-13 17:13:05 -04:00
|
|
|
|
2020-07-02 18:30:46 -07:00
|
|
|
plugins = State.channel_plugins(state, "#baz")
|
|
|
|
|
|> Enum.map(fn {plugin, _} -> plugin end)
|
|
|
|
|
assert length(plugins) == 2
|
|
|
|
|
assert Enum.member?(plugins, Baz)
|
|
|
|
|
assert Enum.member?(plugins, All)
|
2020-06-13 17:13:05 -04:00
|
|
|
|
2020-07-02 18:30:46 -07:00
|
|
|
plugins = State.channel_plugins(state, nil)
|
|
|
|
|
|> Enum.map(fn {plugin, _} -> plugin end)
|
|
|
|
|
assert length(plugins) == 1
|
|
|
|
|
assert Enum.member?(plugins, All)
|
2020-06-13 17:13:05 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "state all_channels works correctly", %{state: state} do
|
2020-07-02 18:30:46 -07:00
|
|
|
plugins = [
|
2020-06-13 17:13:05 -04:00
|
|
|
{FooBar, channels: ["#foo", "#bar"]},
|
|
|
|
|
{Foo, channels: ["#foo"]},
|
|
|
|
|
{Bar, channels: ["#bar"]},
|
|
|
|
|
{Baz, channels: ["#baz"]},
|
|
|
|
|
{All, channels: :all},
|
|
|
|
|
]
|
|
|
|
|
|
2020-07-02 18:30:46 -07:00
|
|
|
plugins |> Enum.each(fn plugin -> State.add_loaded_plugin(state, plugin) end)
|
2020-06-13 17:13:05 -04:00
|
|
|
channels = State.all_channels(state)
|
|
|
|
|
|
|
|
|
|
assert length(channels) == 3
|
|
|
|
|
assert Enum.member?(channels, "#foo")
|
|
|
|
|
assert Enum.member?(channels, "#bar")
|
|
|
|
|
assert Enum.member?(channels, "#baz")
|
|
|
|
|
end
|
|
|
|
|
end
|