daily-tracker

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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