Files
omnibot/test/irc/msg_test.exs

92 lines
2.1 KiB
Elixir
Raw Permalink Normal View History

alias Omnibot.Irc.Msg
defmodule Omnibot.MsgTest do
use ExUnit.Case
# doctest Irc
test "irc message parsing" do
assert %Msg{
prefix: %Msg.Prefix{nick: "example.com"},
command: "PRIVMSG",
params: [],
} == Msg.parse(":example.com PRIVMSG")
assert %Msg{
prefix: %Msg.Prefix{nick: "example.com"},
command: "PRIVMSG",
params: ["#channel", "message text"],
} == Msg.parse(":example.com PRIVMSG #channel :message text")
assert %Msg{
prefix: %Msg.Prefix{nick: "example.com"},
command: "PRIVMSG",
params: ["#channel", "message", "text"],
} == Msg.parse(":example.com PRIVMSG #channel message text")
end
test "irc message prefix parsing" do
alias Msg.Prefix
assert Prefix.parse(":example.com") != %Prefix{}
%Prefix{
nick: "example.com"
} = Prefix.parse("example.com")
%Prefix{
nick: "nick"
} = Prefix.parse("nick")
%Prefix{
nick: "nick",
user: "username"
} = Prefix.parse("nick!username")
%Prefix{
nick: "nick",
user: "username",
host: "example.com"
} = Prefix.parse("nick!username@example.com")
end
test "irc message prefix to_string" do
alias Msg.Prefix
prefixes = [
"example.com",
"nick!username",
"nick!username@example.com"
]
for prefix <- prefixes,
do: assert(Prefix.parse(prefix) |> to_string() == prefix)
end
test "irc message to_string" do
msgs = [
":example.com PRIVMSG #command",
":example.com PRIVMSG #channel :message text"
]
for msg <- msgs, do: assert(Msg.parse(msg) |> to_string() == msg)
end
test "irc message extracts channel properly" do
msg = Msg.parse(":example.com PRIVMSG #channel message text")
assert Msg.channel(msg) == "#channel"
msg = Msg.parse(":example.com JOIN #join")
assert Msg.channel(msg) == "#join"
msg = Msg.parse(":example.com PART #part")
assert Msg.channel(msg) == "#part"
msg = Msg.parse(":example.com KICK #kicked nick")
assert Msg.channel(msg) == "#kicked"
msg = Msg.parse(":example.com PING 1234")
assert Msg.channel(msg) == nil
end
end