Finish removing Omnibot.State functions

Omnibot.State shouldn't be used anywhere anymore except as a GenServer
being started up in the supervisor.

Also, configuration must be loaded through Config.load/1 rather than
being constructed, because everything expects a tuple of {plugin,
config} now.

Finally, Omnibot.Core must be added to the configuration in order for
basic functionality.

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2020-08-11 15:23:53 -07:00
parent 2165167954
commit 2f378dd438
7 changed files with 110 additions and 102 deletions

63
test/config_test.exs Normal file
View File

@@ -0,0 +1,63 @@
defmodule Omnibot.ConfigTest do
use ExUnit.Case, async: true
doctest Omnibot.Config
alias Omnibot.Config
test "channel_plugins works correctly" do
cfg = %Config {
server: "test",
plugins: [
{FooBar, channels: ["#foo", "#bar"]},
{Foo, channels: ["#foo"]},
{Bar, channels: ["#bar"]},
{Baz, channels: ["#baz"]},
{All, channels: :all},
]
}
plugins = Config.channel_plugins(cfg, "#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)
plugins = Config.channel_plugins(cfg, "#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)
plugins = Config.channel_plugins(cfg, "#baz")
|> Enum.map(fn {plugin, _} -> plugin end)
assert length(plugins) == 2
assert Enum.member?(plugins, Baz)
assert Enum.member?(plugins, All)
plugins = Config.channel_plugins(cfg, nil)
|> Enum.map(fn {plugin, _} -> plugin end)
assert length(plugins) == 1
assert Enum.member?(plugins, All)
end
test "all_channels works correctly" do
cfg = %Config {
server: "testing",
plugins: [
{FooBar, channels: ["#foo", "#bar"]},
{Foo, channels: ["#foo"]},
{Bar, channels: ["#bar"]},
{Baz, channels: ["#baz"]},
{All, channels: :all},
],
}
channels = Config.all_channels(cfg)
assert length(channels) == 3
assert Enum.member?(channels, "#foo")
assert Enum.member?(channels, "#bar")
assert Enum.member?(channels, "#baz")
end
end

View File

@@ -1,65 +0,0 @@
defmodule StateTest do
use ExUnit.Case
alias Omnibot.State
setup do
state = start_supervised!(State)
{:ok, state: state}
end
test "state channel_plugins works correctly", %{state: state} do
plugins = [
{FooBar, channels: ["#foo", "#bar"]},
{Foo, channels: ["#foo"]},
{Bar, channels: ["#bar"]},
{Baz, channels: ["#baz"]},
{All, channels: :all},
]
plugins |> Enum.each(fn plugin -> State.add_loaded_plugin(state, plugin) end)
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)
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)
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)
plugins = State.channel_plugins(state, nil)
|> Enum.map(fn {plugin, _} -> plugin end)
assert length(plugins) == 1
assert Enum.member?(plugins, All)
end
test "state all_channels works correctly", %{state: state} do
plugins = [
{FooBar, channels: ["#foo", "#bar"]},
{Foo, channels: ["#foo"]},
{Bar, channels: ["#bar"]},
{Baz, channels: ["#baz"]},
{All, channels: :all},
]
plugins |> Enum.each(fn plugin -> State.add_loaded_plugin(state, plugin) end)
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