diff options
author | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-06 12:55:12 -0600 |
---|---|---|
committer | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-06 12:55:12 -0600 |
commit | 4067339e8cf9dbd624a8fa0183d7a29c73b2e762 (patch) | |
tree | 4f995e706c10bf5b9a58c078cfb843c76e31c8a0 /test | |
parent | 66d871e5461814dad58872eb832a58f2c3c5111b (diff) | |
download | aggiedit-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.exs | 56 | ||||
-rw-r--r-- | test/aggiedit/uploads_test.exs | 63 | ||||
-rw-r--r-- | test/aggiedit_web/live/post_live_test.exs | 110 | ||||
-rw-r--r-- | test/support/fixtures/rooms_fixtures.ex | 15 | ||||
-rw-r--r-- | test/support/fixtures/uploads_fixtures.ex | 22 |
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'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'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'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 |