Add start of controller testing
This commit is contained in:
parent
598af7a884
commit
096c99df92
14 changed files with 106 additions and 87 deletions
|
@ -1,40 +0,0 @@
|
|||
defmodule MatrixServerWeb.ChannelCase do
|
||||
@moduledoc """
|
||||
This module defines the test case to be used by
|
||||
channel tests.
|
||||
|
||||
Such tests rely on `Phoenix.ChannelTest` and also
|
||||
import other functionality to make it easier
|
||||
to build common data structures and query the data layer.
|
||||
|
||||
Finally, if the test case interacts with the database,
|
||||
we enable the SQL sandbox, so changes done to the database
|
||||
are reverted at the end of every test. If you are using
|
||||
PostgreSQL, you can even run database tests asynchronously
|
||||
by setting `use MatrixServerWeb.ChannelCase, async: true`, although
|
||||
this option is not recommended for other databases.
|
||||
"""
|
||||
|
||||
use ExUnit.CaseTemplate
|
||||
|
||||
using do
|
||||
quote do
|
||||
# Import conveniences for testing with channels
|
||||
import Phoenix.ChannelTest
|
||||
import MatrixServerWeb.ChannelCase
|
||||
|
||||
# The default endpoint for testing
|
||||
@endpoint MatrixServerWeb.Endpoint
|
||||
end
|
||||
end
|
||||
|
||||
setup tags do
|
||||
:ok = Ecto.Adapters.SQL.Sandbox.checkout(MatrixServer.Repo)
|
||||
|
||||
unless tags[:async] do
|
||||
Ecto.Adapters.SQL.Sandbox.mode(MatrixServer.Repo, {:shared, self()})
|
||||
end
|
||||
|
||||
:ok
|
||||
end
|
||||
end
|
|
@ -40,4 +40,12 @@ defmodule MatrixServerWeb.ConnCase do
|
|||
|
||||
{:ok, conn: Phoenix.ConnTest.build_conn()}
|
||||
end
|
||||
|
||||
defmacro post_json(conn, path, params) do
|
||||
quote do
|
||||
unquote(conn)
|
||||
|> put_req_header("content-type", "application/json")
|
||||
|> post(unquote(path), Jason.encode!(unquote(params)))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
24
test/support/factory.ex
Normal file
24
test/support/factory.ex
Normal file
|
@ -0,0 +1,24 @@
|
|||
defmodule MatrixServer.Factory do
|
||||
use ExMachina.Ecto, repo: MatrixServer.Repo
|
||||
|
||||
alias MatrixServer.{Account, Device}
|
||||
|
||||
def account_factory do
|
||||
%Account{
|
||||
localpart: sequence(:localpart, &"account#{&1}"),
|
||||
password_hash: Bcrypt.hash_pwd_salt("lemmein")
|
||||
}
|
||||
end
|
||||
|
||||
def device_factory do
|
||||
%Account{localpart: localpart} = account = build(:account)
|
||||
device_id = sequence(:device_id, &"device#{&1}")
|
||||
|
||||
%Device{
|
||||
device_id: device_id,
|
||||
access_token: Device.generate_access_token(localpart, device_id),
|
||||
display_name: sequence(:display_name, &"Device #{&1}"),
|
||||
account: account
|
||||
}
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue