entry_live_test.exs (4193B)
1 defmodule DailyTrackerWeb.EntryLiveTest do 2 use DailyTrackerWeb.ConnCase 3 4 import Phoenix.LiveViewTest 5 import DailyTracker.TrackerFixtures 6 7 @create_attrs %{date: "2026-05-29", period: true, mood: "some mood", headache: true, water_glasses: 42, worked_out: true, bowel_movement: true, hunger_level: 42, notes: "some notes"} 8 @update_attrs %{date: "2026-05-30", period: false, mood: "some updated mood", headache: false, water_glasses: 43, worked_out: false, bowel_movement: false, hunger_level: 43, notes: "some updated notes"} 9 @invalid_attrs %{date: nil, period: false, mood: nil, headache: false, water_glasses: nil, worked_out: false, bowel_movement: false, hunger_level: nil, notes: nil} 10 defp create_entry(_) do 11 entry = entry_fixture() 12 13 %{entry: entry} 14 end 15 16 describe "Index" do 17 setup [:create_entry] 18 19 test "lists all entries", %{conn: conn, entry: entry} do 20 {:ok, _index_live, html} = live(conn, ~p"/entries") 21 22 assert html =~ "Listing Entries" 23 assert html =~ entry.mood 24 end 25 26 test "saves new entry", %{conn: conn} do 27 {:ok, index_live, _html} = live(conn, ~p"/entries") 28 29 assert {:ok, form_live, _} = 30 index_live 31 |> element("a", "New Entry") 32 |> render_click() 33 |> follow_redirect(conn, ~p"/entries/new") 34 35 assert render(form_live) =~ "New Entry" 36 37 assert form_live 38 |> form("#entry-form", entry: @invalid_attrs) 39 |> render_change() =~ "can't be blank" 40 41 assert {:ok, index_live, _html} = 42 form_live 43 |> form("#entry-form", entry: @create_attrs) 44 |> render_submit() 45 |> follow_redirect(conn, ~p"/entries") 46 47 html = render(index_live) 48 assert html =~ "Entry created successfully" 49 assert html =~ "some mood" 50 end 51 52 test "updates entry in listing", %{conn: conn, entry: entry} do 53 {:ok, index_live, _html} = live(conn, ~p"/entries") 54 55 assert {:ok, form_live, _html} = 56 index_live 57 |> element("#entries-#{entry.id} a", "Edit") 58 |> render_click() 59 |> follow_redirect(conn, ~p"/entries/#{entry}/edit") 60 61 assert render(form_live) =~ "Edit Entry" 62 63 assert form_live 64 |> form("#entry-form", entry: @invalid_attrs) 65 |> render_change() =~ "can't be blank" 66 67 assert {:ok, index_live, _html} = 68 form_live 69 |> form("#entry-form", entry: @update_attrs) 70 |> render_submit() 71 |> follow_redirect(conn, ~p"/entries") 72 73 html = render(index_live) 74 assert html =~ "Entry updated successfully" 75 assert html =~ "some updated mood" 76 end 77 78 test "deletes entry in listing", %{conn: conn, entry: entry} do 79 {:ok, index_live, _html} = live(conn, ~p"/entries") 80 81 assert index_live |> element("#entries-#{entry.id} a", "Delete") |> render_click() 82 refute has_element?(index_live, "#entries-#{entry.id}") 83 end 84 end 85 86 describe "Show" do 87 setup [:create_entry] 88 89 test "displays entry", %{conn: conn, entry: entry} do 90 {:ok, _show_live, html} = live(conn, ~p"/entries/#{entry}") 91 92 assert html =~ "Show Entry" 93 assert html =~ entry.mood 94 end 95 96 test "updates entry and returns to show", %{conn: conn, entry: entry} do 97 {:ok, show_live, _html} = live(conn, ~p"/entries/#{entry}") 98 99 assert {:ok, form_live, _} = 100 show_live 101 |> element("a", "Edit") 102 |> render_click() 103 |> follow_redirect(conn, ~p"/entries/#{entry}/edit?return_to=show") 104 105 assert render(form_live) =~ "Edit Entry" 106 107 assert form_live 108 |> form("#entry-form", entry: @invalid_attrs) 109 |> render_change() =~ "can't be blank" 110 111 assert {:ok, show_live, _html} = 112 form_live 113 |> form("#entry-form", entry: @update_attrs) 114 |> render_submit() 115 |> follow_redirect(conn, ~p"/entries/#{entry}") 116 117 html = render(show_live) 118 assert html =~ "Entry updated successfully" 119 assert html =~ "some updated mood" 120 end 121 end 122 end