From af2c6fd85e13139be3e3b2329a51c3a35acb3c40 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Wed, 5 Aug 2026 23:56:56 +0200 Subject: Search assets and events, and order events by when they happen --- test/models/asset_test.rb | 27 +++++++++++++++++++++++++++ test/models/event_test.rb | 25 +++++++++++++++++++++++++ 2 files changed, 52 insertions(+) (limited to 'test/models') diff --git a/test/models/asset_test.rb b/test/models/asset_test.rb index 2677681b..be4be3b9 100644 --- a/test/models/asset_test.rb +++ b/test/models/asset_test.rb @@ -76,4 +76,31 @@ class AssetTest < ActiveSupport::TestCase assert asset.valid?, asset.errors.full_messages.to_sentence assert_equal "image/png", asset.upload_content_type end + + def build_asset(name:, creator: nil) + asset = Asset.new(:name => name, :creator => creator) + asset.upload = Rack::Test::UploadedFile.new( + file_fixture("test_document.pdf"), "application/pdf") + asset.save! + asset + end + + test "editor_search matches across columns" do + pdf = build_asset(:name => "Offener Brief") + other = build_asset(:name => "Nothing distinctive", :creator => "Someone") + + assert_includes Asset.editor_search("brief"), pdf + assert_not_includes Asset.editor_search("brief"), other + assert_includes Asset.editor_search("pdf"), pdf, + "upload_content_type should be searchable" + assert_includes Asset.editor_search("someone"), other, + "creator should be searchable" + end + + test "editor_search ANDs multiple words" do + build_asset(:name => "Offener Brief") + + assert_not_empty Asset.editor_search("offener brief") + assert_empty Asset.editor_search("offener zzzznomatch") + end end diff --git a/test/models/event_test.rb b/test/models/event_test.rb index a5449a2a..49af8e38 100644 --- a/test/models/event_test.rb +++ b/test/models/event_test.rb @@ -178,4 +178,29 @@ class EventTest < ActiveSupport::TestCase assert event.save assert_equal event.start_time, event.occurrences.first&.start_time end + + test "editor_search matches across columns" do + match = Event.create!(:title => "Chaosradio Spezial", :location => "Zentrale") + other = Event.create!(:title => "Nothing distinctive") + + assert_includes Event.editor_search("chaosradio"), match + assert_not_includes Event.editor_search("chaosradio"), other + assert_includes Event.editor_search("zentrale"), match, + "location should be searchable" + end + + test "editor_search ANDs multiple words" do + Event.create!(:title => "Chaosradio Spezial") + + assert_not_empty Event.editor_search("chaosradio spezial") + assert_empty Event.editor_search("chaosradio zzzznomatch") + end + + test "editor_search finds an event by its tag" do + event = Event.create!(:title => "Nothing distinctive") + event.tag_list.add("open-day") + event.save! + + assert_includes Event.editor_search("open-day"), event + end end -- cgit v1.3