From 734bc63f7064729fadc1f580ed4c14ae8a70e52f Mon Sep 17 00:00:00 2001 From: Emin Kocan Date: Tue, 3 Sep 2024 20:25:33 +0200 Subject: [PATCH] Add search functionality tests to DiaryEntriesController --- app/controllers/diary_entries_controller.rb | 44 +++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/app/controllers/diary_entries_controller.rb b/app/controllers/diary_entries_controller.rb index e5c1570dba..1db7a0f002 100644 --- a/app/controllers/diary_entries_controller.rb +++ b/app/controllers/diary_entries_controller.rb @@ -244,3 +244,47 @@ def set_map_location end end end + +def test_index_search + user = create(:user) + create(:diary_entry, :user => user, :title => "First Entry", :body => "This is the first diary entry.") + create(:diary_entry, :user => user, :title => "Second Entry", :body => "This is the second diary entry.") + create(:diary_entry, :user => user, :title => "Third Entry", :body => "Nothing related to the search term.") + + # Test search by title + get diary_entries_path(:query => "First") + assert_response :success + assert_select "article.diary_post", 1 + assert_select "h2", :text => /First Entry/ + + # Test search by body + get diary_entries_path(:query => "second") + assert_response :success + assert_select "article.diary_post", 1 + assert_select "h2", :text => /Second Entry/ + + # Test no results + get diary_entries_path(:query => "Nonexistent") + assert_response :success + assert_select "h4", :text => /No entries/, :count => 1 +end + +def test_index_search_language + user = create(:user) + create(:language, :code => "en") + create(:language, :code => "de") + + create(:diary_entry, :user => user, :title => "English Entry", :language_code => "en") + create(:diary_entry, :user => user, :title => "German Entry", :language_code => "de") + + # Search within a specific language + get diary_entries_path(:query => "Entry", :language => "en") + assert_response :success + assert_select "article.diary_post", 1 + assert_select "h2", :text => /English Entry/ + + get diary_entries_path(:query => "Entry", :language => "de") + assert_response :success + assert_select "article.diary_post", 1 + assert_select "h2", :text => /German Entry/ +end