styling, require a code for prompts, admin privs, ordering, filtering, jump-to-page
This commit is contained in:
130
test/diffuser/accounts_test.exs
Normal file
130
test/diffuser/accounts_test.exs
Normal file
@@ -0,0 +1,130 @@
|
||||
defmodule Diffuser.AccountsTest do
|
||||
use Diffuser.DataCase
|
||||
|
||||
alias Diffuser.Accounts
|
||||
|
||||
describe "users" do
|
||||
alias Diffuser.Accounts.User
|
||||
|
||||
import Diffuser.AccountsFixtures
|
||||
|
||||
@invalid_attrs %{}
|
||||
|
||||
test "list_users/0 returns all users" do
|
||||
user = user_fixture()
|
||||
assert Accounts.list_users() == [user]
|
||||
end
|
||||
|
||||
test "get_user!/1 returns the user with given id" do
|
||||
user = user_fixture()
|
||||
assert Accounts.get_user!(user.id) == user
|
||||
end
|
||||
|
||||
test "create_user/1 with valid data creates a user" do
|
||||
valid_attrs = %{}
|
||||
|
||||
assert {:ok, %User{} = user} = Accounts.create_user(valid_attrs)
|
||||
end
|
||||
|
||||
test "create_user/1 with invalid data returns error changeset" do
|
||||
assert {:error, %Ecto.Changeset{}} = Accounts.create_user(@invalid_attrs)
|
||||
end
|
||||
|
||||
test "update_user/2 with valid data updates the user" do
|
||||
user = user_fixture()
|
||||
update_attrs = %{}
|
||||
|
||||
assert {:ok, %User{} = user} = Accounts.update_user(user, update_attrs)
|
||||
end
|
||||
|
||||
test "update_user/2 with invalid data returns error changeset" do
|
||||
user = user_fixture()
|
||||
assert {:error, %Ecto.Changeset{}} = Accounts.update_user(user, @invalid_attrs)
|
||||
assert user == Accounts.get_user!(user.id)
|
||||
end
|
||||
|
||||
test "delete_user/1 deletes the user" do
|
||||
user = user_fixture()
|
||||
assert {:ok, %User{}} = Accounts.delete_user(user)
|
||||
assert_raise Ecto.NoResultsError, fn -> Accounts.get_user!(user.id) end
|
||||
end
|
||||
|
||||
test "change_user/1 returns a user changeset" do
|
||||
user = user_fixture()
|
||||
assert %Ecto.Changeset{} = Accounts.change_user(user)
|
||||
end
|
||||
end
|
||||
|
||||
describe "votes" do
|
||||
alias Diffuser.Accounts.Vote
|
||||
|
||||
import Diffuser.AccountsFixtures
|
||||
|
||||
@invalid_attrs %{}
|
||||
|
||||
test "list_votes/0 returns all votes" do
|
||||
vote = vote_fixture()
|
||||
assert Accounts.list_votes() == [vote]
|
||||
end
|
||||
|
||||
test "get_vote!/1 returns the vote with given id" do
|
||||
vote = vote_fixture()
|
||||
assert Accounts.get_vote!(vote.id) == vote
|
||||
end
|
||||
|
||||
test "create_vote/1 with valid data creates a vote" do
|
||||
valid_attrs = %{}
|
||||
|
||||
assert {:ok, %Vote{} = vote} = Accounts.create_vote(valid_attrs)
|
||||
end
|
||||
|
||||
test "create_vote/1 with invalid data returns error changeset" do
|
||||
assert {:error, %Ecto.Changeset{}} = Accounts.create_vote(@invalid_attrs)
|
||||
end
|
||||
|
||||
test "update_vote/2 with valid data updates the vote" do
|
||||
vote = vote_fixture()
|
||||
update_attrs = %{}
|
||||
|
||||
assert {:ok, %Vote{} = vote} = Accounts.update_vote(vote, update_attrs)
|
||||
end
|
||||
|
||||
test "update_vote/2 with invalid data returns error changeset" do
|
||||
vote = vote_fixture()
|
||||
assert {:error, %Ecto.Changeset{}} = Accounts.update_vote(vote, @invalid_attrs)
|
||||
assert vote == Accounts.get_vote!(vote.id)
|
||||
end
|
||||
|
||||
test "delete_vote/1 deletes the vote" do
|
||||
vote = vote_fixture()
|
||||
assert {:ok, %Vote{}} = Accounts.delete_vote(vote)
|
||||
assert_raise Ecto.NoResultsError, fn -> Accounts.get_vote!(vote.id) end
|
||||
end
|
||||
|
||||
test "change_vote/1 returns a vote changeset" do
|
||||
vote = vote_fixture()
|
||||
assert %Ecto.Changeset{} = Accounts.change_vote(vote)
|
||||
end
|
||||
end
|
||||
|
||||
describe "upvote/2" do
|
||||
alias Diffuser.Accounts.Vote
|
||||
|
||||
import Diffuser.AccountsFixtures
|
||||
import Diffuser.GeneratorFixtures
|
||||
|
||||
test "creates upvote and associates it to specific prompt" do
|
||||
%{id: pr_id} = pr = prompt_request_fixture()
|
||||
|
||||
assert {:ok, %Vote{prompt_request_id: ^pr_id}} = Accounts.upvote(pr)
|
||||
|
||||
%{votes: votes} = Diffuser.Generator.get_prompt_request!(pr_id) |> Repo.preload(:votes)
|
||||
assert votes |> length() == 1
|
||||
end
|
||||
|
||||
test "creates upvote and associates it to current user" do
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
end
|
@@ -3,6 +3,7 @@ defmodule DiffuserWeb.PromptRequestLiveTest do
|
||||
|
||||
import Phoenix.LiveViewTest
|
||||
import Diffuser.GeneratorFixtures
|
||||
alias DiffuserWeb.Plugs.UserAuth
|
||||
|
||||
@create_attrs %{prompt: "some prompt"}
|
||||
@update_attrs %{prompt: "some updated prompt"}
|
||||
@@ -26,8 +27,8 @@ defmodule DiffuserWeb.PromptRequestLiveTest do
|
||||
test "saves new prompt_request", %{conn: conn} do
|
||||
{:ok, index_live, _html} = live(conn, Routes.prompt_request_index_path(conn, :index))
|
||||
|
||||
assert index_live |> element("a", "New Prompt request") |> render_click() =~
|
||||
"New Prompt request"
|
||||
assert index_live |> element("a", "New Prompt") |> render_click() =~
|
||||
"New Prompt"
|
||||
|
||||
assert_patch(index_live, Routes.prompt_request_index_path(conn, :new))
|
||||
|
||||
@@ -39,16 +40,18 @@ defmodule DiffuserWeb.PromptRequestLiveTest do
|
||||
index_live
|
||||
|> form("#prompt_request-form", prompt_request: @create_attrs)
|
||||
|> render_submit()
|
||||
|> follow_redirect(conn, Routes.prompt_request_index_path(conn, :index))
|
||||
|> follow_redirect(conn, "#{Routes.prompt_request_index_path(conn, :index)}?page=1")
|
||||
|
||||
assert html =~ "Prompt request created successfully"
|
||||
assert html =~ "some prompt"
|
||||
# assert html =~ user.id
|
||||
end
|
||||
|
||||
test "updates prompt_request in listing", %{conn: conn, prompt_request: prompt_request} do
|
||||
{:ok, index_live, _html} = live(conn, Routes.prompt_request_index_path(conn, :index))
|
||||
|
||||
assert index_live |> element("#prompt_request-#{prompt_request.id} a", "Edit") |> render_click() =~
|
||||
assert index_live
|
||||
|> element("#prompt_request-#{prompt_request.id} a", "Edit")
|
||||
|> render_click() =~
|
||||
"Edit Prompt request"
|
||||
|
||||
assert_patch(index_live, Routes.prompt_request_index_path(conn, :edit, prompt_request))
|
||||
@@ -70,7 +73,10 @@ defmodule DiffuserWeb.PromptRequestLiveTest do
|
||||
test "deletes prompt_request in listing", %{conn: conn, prompt_request: prompt_request} do
|
||||
{:ok, index_live, _html} = live(conn, Routes.prompt_request_index_path(conn, :index))
|
||||
|
||||
assert index_live |> element("#prompt_request-#{prompt_request.id} a", "Delete") |> render_click()
|
||||
assert index_live
|
||||
|> element("#prompt_request-#{prompt_request.id} a", "Delete")
|
||||
|> render_click()
|
||||
|
||||
refute has_element?(index_live, "#prompt_request-#{prompt_request.id}")
|
||||
end
|
||||
end
|
||||
@@ -79,14 +85,16 @@ defmodule DiffuserWeb.PromptRequestLiveTest do
|
||||
setup [:create_prompt_request]
|
||||
|
||||
test "displays prompt_request", %{conn: conn, prompt_request: prompt_request} do
|
||||
{:ok, _show_live, html} = live(conn, Routes.prompt_request_show_path(conn, :show, prompt_request))
|
||||
{:ok, _show_live, html} =
|
||||
live(conn, Routes.prompt_request_show_path(conn, :show, prompt_request))
|
||||
|
||||
assert html =~ "Show Prompt request"
|
||||
assert html =~ prompt_request.prompt
|
||||
end
|
||||
|
||||
test "updates prompt_request within modal", %{conn: conn, prompt_request: prompt_request} do
|
||||
{:ok, show_live, _html} = live(conn, Routes.prompt_request_show_path(conn, :show, prompt_request))
|
||||
{:ok, show_live, _html} =
|
||||
live(conn, Routes.prompt_request_show_path(conn, :show, prompt_request))
|
||||
|
||||
assert show_live |> element("a", "Edit") |> render_click() =~
|
||||
"Edit Prompt request"
|
||||
|
34
test/support/fixtures/accounts_fixtures.ex
Normal file
34
test/support/fixtures/accounts_fixtures.ex
Normal file
@@ -0,0 +1,34 @@
|
||||
defmodule Diffuser.AccountsFixtures do
|
||||
@moduledoc """
|
||||
This module defines test helpers for creating
|
||||
entities via the `Diffuser.Accounts` context.
|
||||
"""
|
||||
|
||||
@doc """
|
||||
Generate a user.
|
||||
"""
|
||||
def user_fixture(attrs \\ %{}) do
|
||||
{:ok, user} =
|
||||
attrs
|
||||
|> Enum.into(%{
|
||||
|
||||
})
|
||||
|> Diffuser.Accounts.create_user()
|
||||
|
||||
user
|
||||
end
|
||||
|
||||
@doc """
|
||||
Generate a vote.
|
||||
"""
|
||||
def vote_fixture(attrs \\ %{}) do
|
||||
{:ok, vote} =
|
||||
attrs
|
||||
|> Enum.into(%{
|
||||
|
||||
})
|
||||
|> Diffuser.Accounts.create_vote()
|
||||
|
||||
vote
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user