summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLogan Hunt <loganhunt@simponic.xyz>2022-04-06 12:55:12 -0600
committerLogan Hunt <loganhunt@simponic.xyz>2022-04-06 12:55:12 -0600
commit4067339e8cf9dbd624a8fa0183d7a29c73b2e762 (patch)
tree4f995e706c10bf5b9a58c078cfb843c76e31c8a0 /test
parent66d871e5461814dad58872eb832a58f2c3c5111b (diff)
downloadaggiedit-4067339e8cf9dbd624a8fa0183d7a29c73b2e762.tar.gz
aggiedit-4067339e8cf9dbd624a8fa0183d7a29c73b2e762.zip
Models for upload and post; generated liveview controller for posts
Diffstat (limited to 'test')
-rw-r--r--test/aggiedit/rooms_test.exs56
-rw-r--r--test/aggiedit/uploads_test.exs63
-rw-r--r--test/aggiedit_web/live/post_live_test.exs110
-rw-r--r--test/support/fixtures/rooms_fixtures.ex15
-rw-r--r--test/support/fixtures/uploads_fixtures.ex22
5 files changed, 266 insertions, 0 deletions
diff --git a/test/aggiedit/rooms_test.exs b/test/aggiedit/rooms_test.exs
index 2a270e6..7c48e0c 100644
--- a/test/aggiedit/rooms_test.exs
+++ b/test/aggiedit/rooms_test.exs
@@ -56,4 +56,60 @@ defmodule Aggiedit.RoomsTest do
assert %Ecto.Changeset{} = Rooms.change_room(room)
end
end
+
+ describe "posts" do
+ alias Aggiedit.Rooms.Post
+
+ import Aggiedit.RoomsFixtures
+
+ @invalid_attrs %{body: nil, title: nil}
+
+ test "list_posts/0 returns all posts" do
+ post = post_fixture()
+ assert Rooms.list_posts() == [post]
+ end
+
+ test "get_post!/1 returns the post with given id" do
+ post = post_fixture()
+ assert Rooms.get_post!(post.id) == post
+ end
+
+ test "create_post/1 with valid data creates a post" do
+ valid_attrs = %{body: "some body", title: "some title"}
+
+ assert {:ok, %Post{} = post} = Rooms.create_post(valid_attrs)
+ assert post.body == "some body"
+ assert post.title == "some title"
+ end
+
+ test "create_post/1 with invalid data returns error changeset" do
+ assert {:error, %Ecto.Changeset{}} = Rooms.create_post(@invalid_attrs)
+ end
+
+ test "update_post/2 with valid data updates the post" do
+ post = post_fixture()
+ update_attrs = %{body: "some updated body", title: "some updated title"}
+
+ assert {:ok, %Post{} = post} = Rooms.update_post(post, update_attrs)
+ assert post.body == "some updated body"
+ assert post.title == "some updated title"
+ end
+
+ test "update_post/2 with invalid data returns error changeset" do
+ post = post_fixture()
+ assert {:error, %Ecto.Changeset{}} = Rooms.update_post(post, @invalid_attrs)
+ assert post == Rooms.get_post!(post.id)
+ end
+
+ test "delete_post/1 deletes the post" do
+ post = post_fixture()
+ assert {:ok, %Post{}} = Rooms.delete_post(post)
+ assert_raise Ecto.NoResultsError, fn -> Rooms.get_post!(post.id) end
+ end
+
+ test "change_post/1 returns a post changeset" do
+ post = post_fixture()
+ assert %Ecto.Changeset{} = Rooms.change_post(post)
+ end
+ end
end
diff --git a/test/aggiedit/uploads_test.exs b/test/aggiedit/uploads_test.exs
new file mode 100644
index 0000000..270f226
--- /dev/null
+++ b/test/aggiedit/uploads_test.exs
@@ -0,0 +1,63 @@
+defmodule Aggiedit.UploadsTest do
+ use Aggiedit.DataCase
+
+ alias Aggiedit.Uploads
+
+ describe "uploads" do
+ alias Aggiedit.Uploads.Upload
+
+ import Aggiedit.UploadsFixtures
+
+ @invalid_attrs %{file: nil, mime: nil, size: nil}
+
+ test "list_uploads/0 returns all uploads" do
+ upload = upload_fixture()
+ assert Uploads.list_uploads() == [upload]
+ end
+
+ test "get_upload!/1 returns the upload with given id" do
+ upload = upload_fixture()
+ assert Uploads.get_upload!(upload.id) == upload
+ end
+
+ test "create_upload/1 with valid data creates a upload" do
+ valid_attrs = %{file: "some file", mime: "some mime", size: 42}
+
+ assert {:ok, %Upload{} = upload} = Uploads.create_upload(valid_attrs)
+ assert upload.file == "some file"
+ assert upload.mime == "some mime"
+ assert upload.size == 42
+ end
+
+ test "create_upload/1 with invalid data returns error changeset" do
+ assert {:error, %Ecto.Changeset{}} = Uploads.create_upload(@invalid_attrs)
+ end
+
+ test "update_upload/2 with valid data updates the upload" do
+ upload = upload_fixture()
+ update_attrs = %{file: "some updated file", mime: "some updated mime", size: 43}
+
+ assert {:ok, %Upload{} = upload} = Uploads.update_upload(upload, update_attrs)
+ assert upload.file == "some updated file"
+ assert upload.mime == "some updated mime"
+ assert upload.size == 43
+ end
+
+ test "update_upload/2 with invalid data returns error changeset" do
+ upload = upload_fixture()
+ assert {:error, %Ecto.Changeset{}} = Uploads.update_upload(upload, @invalid_attrs)
+ assert upload == Uploads.get_upload!(upload.id)
+ end
+
+ test "delete_upload/1 deletes the upload" do
+ upload = upload_fixture()
+ assert {:ok, %Upload{}} = Uploads.delete_upload(upload)
+ assert_raise Ecto.NoResultsError, fn -> Uploads.get_upload!(upload.id) end
+ end
+
+ test "change_upload/1 returns a upload changeset" do
+ upload = upload_fixture()
+ assert %Ecto.Changeset{} = Uploads.change_upload(upload)
+ end
+ end
+end
diff --git a/test/aggiedit_web/live/post_live_test.exs b/test/aggiedit_web/live/post_live_test.exs
new file mode 100644
index 0000000..0e5a6f0
--- /dev/null
+++ b/test/aggiedit_web/live/post_live_test.exs
@@ -0,0 +1,110 @@
+defmodule AggieditWeb.PostLiveTest do
+ use AggieditWeb.ConnCase
+
+ import Phoenix.LiveViewTest
+ import Aggiedit.RoomsFixtures
+
+ @create_attrs %{body: "some body", title: "some title"}
+ @update_attrs %{body: "some updated body", title: "some updated title"}
+ @invalid_attrs %{body: nil, title: nil}
+
+ defp create_post(_) do
+ post = post_fixture()
+ %{post: post}
+ end
+
+ describe "Index" do
+ setup [:create_post]
+
+ test "lists all posts", %{conn: conn, post: post} do
+ {:ok, _index_live, html} = live(conn, Routes.post_index_path(conn, :index))
+
+ assert html =~ "Listing Posts"
+ assert html =~ post.body
+ end
+
+ test "saves new post", %{conn: conn} do
+ {:ok, index_live, _html} = live(conn, Routes.post_index_path(conn, :index))
+
+ assert index_live |> element("a", "New Post") |> render_click() =~
+ "New Post"
+
+ assert_patch(index_live, Routes.post_index_path(conn, :new))
+
+ assert index_live
+ |> form("#post-form", post: @invalid_attrs)
+ |> render_change() =~ "can&#39;t be blank"
+
+ {:ok, _, html} =
+ index_live
+ |> form("#post-form", post: @create_attrs)
+ |> render_submit()
+ |> follow_redirect(conn, Routes.post_index_path(conn, :index))
+
+ assert html =~ "Post created successfully"
+ assert html =~ "some body"
+ end
+
+ test "updates post in listing", %{conn: conn, post: post} do
+ {:ok, index_live, _html} = live(conn, Routes.post_index_path(conn, :index))
+
+ assert index_live |> element("#post-#{post.id} a", "Edit") |> render_click() =~
+ "Edit Post"
+
+ assert_patch(index_live, Routes.post_index_path(conn, :edit, post))
+
+ assert index_live
+ |> form("#post-form", post: @invalid_attrs)
+ |> render_change() =~ "can&#39;t be blank"
+
+ {:ok, _, html} =
+ index_live
+ |> form("#post-form", post: @update_attrs)
+ |> render_submit()
+ |> follow_redirect(conn, Routes.post_index_path(conn, :index))
+
+ assert html =~ "Post updated successfully"
+ assert html =~ "some updated body"
+ end
+
+ test "deletes post in listing", %{conn: conn, post: post} do
+ {:ok, index_live, _html} = live(conn, Routes.post_index_path(conn, :index))
+
+ assert index_live |> element("#post-#{post.id} a", "Delete") |> render_click()
+ refute has_element?(index_live, "#post-#{post.id}")
+ end
+ end
+
+ describe "Show" do
+ setup [:create_post]
+
+ test "displays post", %{conn: conn, post: post} do
+ {:ok, _show_live, html} = live(conn, Routes.post_show_path(conn, :show, post))
+
+ assert html =~ "Show Post"
+ assert html =~ post.body
+ end
+
+ test "updates post within modal", %{conn: conn, post: post} do
+ {:ok, show_live, _html} = live(conn, Routes.post_show_path(conn, :show, post))
+
+ assert show_live |> element("a", "Edit") |> render_click() =~
+ "Edit Post"
+
+ assert_patch(show_live, Routes.post_show_path(conn, :edit, post))
+
+ assert show_live
+ |> form("#post-form", post: @invalid_attrs)
+ |> render_change() =~ "can&#39;t be blank"
+
+ {:ok, _, html} =
+ show_live
+ |> form("#post-form", post: @update_attrs)
+ |> render_submit()
+ |> follow_redirect(conn, Routes.post_show_path(conn, :show, post))
+
+ assert html =~ "Post updated successfully"
+ assert html =~ "some updated body"
+ end
+ end
+end
diff --git a/test/support/fixtures/rooms_fixtures.ex b/test/support/fixtures/rooms_fixtures.ex
index fd5671e..fe3200e 100644
--- a/test/support/fixtures/rooms_fixtures.ex
+++ b/test/support/fixtures/rooms_fixtures.ex
@@ -17,4 +17,19 @@ defmodule Aggiedit.RoomsFixtures do
room
end
+
+ @doc """
+ Generate a post.
+ """
+ def post_fixture(attrs \\ %{}) do
+ {:ok, post} =
+ attrs
+ |> Enum.into(%{
+ body: "some body",
+ title: "some title"
+ })
+ |> Aggiedit.Rooms.create_post()
+
+ post
+ end
end
diff --git a/test/support/fixtures/uploads_fixtures.ex b/test/support/fixtures/uploads_fixtures.ex
new file mode 100644
index 0000000..b590280
--- /dev/null
+++ b/test/support/fixtures/uploads_fixtures.ex
@@ -0,0 +1,22 @@
+defmodule Aggiedit.UploadsFixtures do
+ @moduledoc """
+ This module defines test helpers for creating
+ entities via the `Aggiedit.Uploads` context.
+ """
+
+ @doc """
+ Generate a upload.
+ """
+ def upload_fixture(attrs \\ %{}) do
+ {:ok, upload} =
+ attrs
+ |> Enum.into(%{
+ file: "some file",
+ mime: "some mime",
+ size: 42
+ })
+ |> Aggiedit.Uploads.create_upload()
+
+ upload
+ end
+end