46 lines
1.4 KiB
Elixir
46 lines
1.4 KiB
Elixir
defmodule LogsrvTest do
|
|
use ExUnit.Case
|
|
doctest Logsrv
|
|
|
|
test "greets the world" do
|
|
assert Logsrv.hello() == :world
|
|
end
|
|
end
|
|
|
|
defmodule LogsrvTest.Router do
|
|
# Bringing ExUnit's case module to scope and configure it to run
|
|
# tests in this module concurrently with tests in other modules
|
|
# https://hexdocs.pm/ex_unit/ExUnit.Case.html
|
|
use ExUnit.Case, async: true
|
|
|
|
# This makes the conn object avaiable in the scope of the tests,
|
|
# which can be used to make the HTTP request
|
|
# https://hexdocs.pm/plug/Plug.Test.html
|
|
use Plug.Test
|
|
|
|
# We call the Plug init/1 function with the options then store
|
|
# returned options in a Module attribute opts.
|
|
# Note: @ is module attribute unary operator
|
|
# https://hexdocs.pm/elixir/main/Kernel.html#@/1
|
|
# https://hexdocs.pm/plug/Plug.html#c:init/1
|
|
@opts Logsrv.Router.init([])
|
|
|
|
|
|
# Create a test with the name "return ok"
|
|
test "return ok" do
|
|
# Build a connection which is GET request on / url
|
|
conn = conn(:get, "/")
|
|
|
|
# Then call Plug.call/2 with the connection and options
|
|
# https://hexdocs.pm/plug/Plug.html#c:call/2
|
|
conn = Logsrv.Router.call(conn, @opts)
|
|
|
|
# Finally we are using the assert/2 function to check for the
|
|
# correctness of the response
|
|
# https://hexdocs.pm/ex_unit/ExUnit.Assertions.html#assert/2
|
|
assert conn.state == :sent
|
|
assert conn.status == 200
|
|
assert conn.resp_body == "OK"
|
|
end
|
|
end
|