diff options
Diffstat (limited to 'test/controllers/related_assets_controller_test.rb')
| -rw-r--r-- | test/controllers/related_assets_controller_test.rb | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/test/controllers/related_assets_controller_test.rb b/test/controllers/related_assets_controller_test.rb index 9d20cbb..ced4b74 100644 --- a/test/controllers/related_assets_controller_test.rb +++ b/test/controllers/related_assets_controller_test.rb | |||
| @@ -88,4 +88,75 @@ class RelatedAssetsControllerTest < ActionController::TestCase | |||
| 88 | ordered_asset_ids = node.draft.reload.related_assets.map(&:asset_id) | 88 | ordered_asset_ids = node.draft.reload.related_assets.map(&:asset_id) |
| 89 | assert_equal [second.id, first.id], ordered_asset_ids | 89 | assert_equal [second.id, first.id], ordered_asset_ids |
| 90 | end | 90 | end |
| 91 | |||
| 92 | test "update sets the headline flag" do | ||
| 93 | login_as :quentin | ||
| 94 | node = Node.root.children.create!(:slug => "related_assets_headline_test") | ||
| 95 | asset = Asset.create!(:name => "headline-photo", :upload_content_type => "image/png") | ||
| 96 | node.draft.assets << asset | ||
| 97 | related = node.draft.related_assets.find_by(:asset_id => asset.id) | ||
| 98 | |||
| 99 | patch :update, params: { :node_id => node.id, :id => related.id, :headline => "true" } | ||
| 100 | |||
| 101 | assert_response :success | ||
| 102 | assert related.reload.headline? | ||
| 103 | end | ||
| 104 | |||
| 105 | test "update with headline=true clears any previous headline on the same page" do | ||
| 106 | login_as :quentin | ||
| 107 | node = Node.root.children.create!(:slug => "related_assets_headline_swap_test") | ||
| 108 | first = Asset.create!(:name => "first-headline", :upload_content_type => "image/png") | ||
| 109 | second = Asset.create!(:name => "second-headline", :upload_content_type => "image/png") | ||
| 110 | node.draft.assets << first | ||
| 111 | node.draft.assets << second | ||
| 112 | |||
| 113 | first_related = node.draft.related_assets.find_by(:asset_id => first.id) | ||
| 114 | second_related = node.draft.related_assets.find_by(:asset_id => second.id) | ||
| 115 | first_related.update!(:headline => true) | ||
| 116 | |||
| 117 | patch :update, params: { :node_id => node.id, :id => second_related.id, :headline => "true" } | ||
| 118 | |||
| 119 | assert_response :success | ||
| 120 | assert_not first_related.reload.headline? | ||
| 121 | assert second_related.reload.headline? | ||
| 122 | end | ||
| 123 | |||
| 124 | test "update with headline=false clears the headline" do | ||
| 125 | login_as :quentin | ||
| 126 | node = Node.root.children.create!(:slug => "related_assets_headline_unset_test") | ||
| 127 | asset = Asset.create!(:name => "unset-headline", :upload_content_type => "image/png") | ||
| 128 | node.draft.assets << asset | ||
| 129 | related = node.draft.related_assets.find_by(:asset_id => asset.id) | ||
| 130 | related.update!(:headline => true) | ||
| 131 | |||
| 132 | patch :update, params: { :node_id => node.id, :id => related.id, :headline => "false" } | ||
| 133 | |||
| 134 | assert_response :success | ||
| 135 | assert_not related.reload.headline? | ||
| 136 | end | ||
| 137 | |||
| 138 | test "search includes PDF assets as headline-eligible candidates" do | ||
| 139 | login_as :quentin | ||
| 140 | node = Node.root.children.create!(:slug => "related_assets_search_pdf_test") | ||
| 141 | asset = Asset.create!(:name => "expert-opinion-searchable", :upload_content_type => "application/pdf") | ||
| 142 | |||
| 143 | get :search, params: { :node_id => node.id, :search_term => "expert-opinion-searchable" } | ||
| 144 | |||
| 145 | assert_response :success | ||
| 146 | ids = JSON.parse(response.body).map { |r| r["id"] } | ||
| 147 | assert_includes ids, asset.id | ||
| 148 | end | ||
| 149 | |||
| 150 | test "search matches by filename as well as name" do | ||
| 151 | login_as :quentin | ||
| 152 | node = Node.root.children.create!(:slug => "related_assets_search_filename_test") | ||
| 153 | asset = Asset.create!(:name => "Untitled", :upload_content_type => "application/pdf", | ||
| 154 | :upload_file_name => "Stellungnahme_Patientendaten_Schutz.pdf") | ||
| 155 | |||
| 156 | get :search, params: { :node_id => node.id, :search_term => "Patientendaten" } | ||
| 157 | |||
| 158 | assert_response :success | ||
| 159 | ids = JSON.parse(response.body).map { |r| r["id"] } | ||
| 160 | assert_includes ids, asset.id | ||
| 161 | end | ||
| 91 | end | 162 | end |
