From 72804ccd84f7e96cc921074dd5ea55fe64a2d361 Mon Sep 17 00:00:00 2001 From: Kerdo Kurs <kerdokurs@gmail.com> Date: Tue, 3 Dec 2024 15:28:57 +0200 Subject: [PATCH] add TDD #29 --- .../controllers/search_controller_test.exs | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/test/proptrackr_web/controllers/search_controller_test.exs b/test/proptrackr_web/controllers/search_controller_test.exs index e936228..3823265 100644 --- a/test/proptrackr_web/controllers/search_controller_test.exs +++ b/test/proptrackr_web/controllers/search_controller_test.exs @@ -3,6 +3,8 @@ defmodule PropTrackrWeb.SearchControllerTest do alias PropTrackr.Accounts.User alias PropTrackr.Properties.Property alias PropTrackr.Repo + alias PropTrackr.Search + import Ecto.Query, only: [from: 2] setup do user = %User{ @@ -377,6 +379,81 @@ defmodule PropTrackrWeb.SearchControllerTest do assert get_flash(conn, :error) =~ ~r/You are not logged in/ end + test "4.4 The last 5 searches of authenticated user should be saved", %{ conn: conn, user: user, properties: properties } do + conn = conn |> setup_session(user) + + searches = Repo.all(from s in Search, where: s.user_id == ^user.id, order_by: [asc: s.inserted_at]) + assert length(searches) == 0 + + conn = post(conn, ~p"/search", %{search: %{ + type: :any, + location: "Estonia", + areas: ["Tartu", "Tallinn"], + min_price: 100.0, + max_price: 10000000.0, + min_rooms: 1, + max_rooms: 100, + }}) + + conn = post(conn, ~p"/search", %{search: %{ + type: :any, + location: "Estonia", + areas: ["Tartu"], + min_price: 100.0, + max_price: 10000000.0, + min_rooms: 1, + max_rooms: 100, + }}) + + conn = post(conn, ~p"/search", %{search: %{ + type: :any, + location: "Estonia", + areas: ["Tallinn"], + min_price: 100.0, + max_price: 10000000.0, + min_rooms: 1, + max_rooms: 100, + }}) + + conn = post(conn, ~p"/search", %{search: %{ + type: :any, + location: "Estonia", + areas: ["Tartu", "Tallinn"], + min_price: 100.0, + max_price: 10000000.0, + min_rooms: 1, + max_rooms: 100, + }}) + + conn = post(conn, ~p"/search", %{search: %{ + type: :any, + location: "Estonia", + areas: ["Tartu"], + min_price: 100.0, + max_price: 10000000.0, + min_rooms: 1, + max_rooms: 100, + }}) + + conn = post(conn, ~p"/search", %{search: %{ + type: :any, + location: "Estonia", + areas: ["Jأµgeva"], + min_price: 100.0, + max_price: 10000000.0, + min_rooms: 1, + max_rooms: 100, + }}) + + conn = get conn, "/search" + + result = html_response(conn, 200) + assert result =~ ~r/Previous searches/ + + searches = Repo.all(from s in Search, where: s.user_id == ^user.id, order_by: [asc: s.inserted_at]) + assert length(searches) == 5 + end + defp setup_session(conn, user) do conn = conn |> post("/login", email: user.email, password: user.password) conn = get conn, redirected_to(conn) -- GitLab