diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-20 19:45:43 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-20 19:45:43 +0200 |
| commit | 836308471f8d31ccdcdd3a5bd88bc76cc1c0831b (patch) | |
| tree | 821a526d4d10870654a38d07a4eb53a2180ba313 /test/controllers | |
| parent | d89e2de48a5e16ff01ec627e79c76b833e4618cf (diff) | |
Make headline images explicit, add asset credits
- related_assets gains a `headline` boolean (DB-enforced: at most one
per page), replacing "first image by position" as the headline
rule. A rake task backfills the current first image on every live
head/draft, so nothing changes visually until an editor changes it.
- The image picker sidebar gets a star toggle reflecting the flag;
the TinyMCE inline-image picker's badge now reads it too, instead
of assuming position 0.
- No headline chosen (or none attached) now falls back to the
gallery-count caption itself becoming the lightbox trigger, instead
of the gallery being unreachable.
- Assets gain creator, source_url, and license_key (against a new
config/asset_licenses.yml dictionary). asset_credit renders a
degrading attribution line, reused as a hidden per-image glightbox
caption so credit is one click away for every image, not only the
headline's always-visible one.
- Fixed: asset thumbnails rendered unconditionally regardless of
whether a real variant exists on disk. Asset#has_variant? checks
file existence, not content type -- some legacy PDFs have real
pre-rewrite thumbnails a content-type check would have hidden.
- assets#new/edit rebuilt onto the same node_description/node_content
layout as assets#show, picking up the three new fields in the
process.
Diffstat (limited to 'test/controllers')
| -rw-r--r-- | test/controllers/related_assets_controller_test.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/controllers/related_assets_controller_test.rb b/test/controllers/related_assets_controller_test.rb index 9d20cbb..2384adc 100644 --- a/test/controllers/related_assets_controller_test.rb +++ b/test/controllers/related_assets_controller_test.rb | |||
| @@ -88,4 +88,50 @@ 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 | ||
| 91 | end | 137 | end |
