summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-10 04:41:54 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-10 04:41:54 +0200
commit30ed9fd9a8bffb44e6ab91dfedb8c0e33837769a (patch)
tree38ed0ff848d7995951b0e9f0f3b00f2e4f52cea1 /test
parent644744183602c68508abb02dbb9f1f321a63f88f (diff)
Include assets, tags and template in diff between revisions
Diffstat (limited to 'test')
-rw-r--r--test/controllers/revisions_controller_test.rb13
-rw-r--r--test/models/page_test.rb43
2 files changed, 56 insertions, 0 deletions
diff --git a/test/controllers/revisions_controller_test.rb b/test/controllers/revisions_controller_test.rb
index bf92c5b..53927b4 100644
--- a/test/controllers/revisions_controller_test.rb
+++ b/test/controllers/revisions_controller_test.rb
@@ -148,4 +148,17 @@ class RevisionsControllerTest < ActionController::TestCase
148 assert_response :success 148 assert_response :success
149 assert_select "a", "Side by side" 149 assert_select "a", "Side by side"
150 end 150 end
151
152 test "diffing two revisions also shows tag, template, and asset changes" do
153 login_as :quentin
154 @node.find_or_create_draft(@user)
155 @node.draft.tag_list = "update"
156 @node.draft.save!
157
158 post(:diff, params: { :node_id => @node.id, :start_revision => @node.pages.first.revision, :end_revision => @node.pages.last.revision })
159 assert_response :success
160 assert_select "h3", "Tags"
161 assert_select "h3", "Template"
162 assert_select "h3", "Assets"
163 end
151end 164end
diff --git a/test/models/page_test.rb b/test/models/page_test.rb
index 3868a53..bcddc89 100644
--- a/test/models/page_test.rb
+++ b/test/models/page_test.rb
@@ -228,4 +228,47 @@ class PageTest < ActiveSupport::TestCase
228 assert_equal 2, fragment.css('ins.diff_structural').length 228 assert_equal 2, fragment.css('ins.diff_structural').length
229 assert_match "der Zugang erfolgt über den Hinterhof.", fragment.text 229 assert_match "der Zugang erfolgt über den Hinterhof.", fragment.text
230 end 230 end
231
232 test "diff_against reports tag and template changes" do
233 n = Node.root.children.create! :slug => "field_diff_test"
234 d = n.find_or_create_draft @user1
235 d.tag_list = "update"
236 d.template_name = "standard_template"
237 d.save!
238 n.publish_draft!
239
240 d2 = n.find_or_create_draft @user1
241 d2.tag_list = "update, pressemitteilung"
242 d2.template_name = "title_only"
243 d2.save!
244
245 diff = d2.diff_against(n.head)
246
247 assert_equal ["pressemitteilung"], diff[:tags][:added]
248 assert_equal [], diff[:tags][:removed]
249 assert diff[:template_name][:changed]
250 assert_equal "standard_template", diff[:template_name][:from]
251 assert_equal "title_only", diff[:template_name][:to]
252 end
253
254 test "diff_against reports added and removed assets by filename" do
255 n = Node.root.children.create! :slug => "asset_diff_test"
256 d = n.find_or_create_draft @user1
257 d.save!
258 n.publish_draft!
259
260 kept_asset = Asset.create!(:upload_file_name => "kept.png", :upload_content_type => "image/png", :upload_file_size => 1)
261 removed_asset = Asset.create!(:upload_file_name => "removed.pdf", :upload_content_type => "application/pdf", :upload_file_size => 1)
262 n.head.update_assets([kept_asset.id, removed_asset.id])
263
264 d2 = n.find_or_create_draft @user1
265 added_asset = Asset.create!(:upload_file_name => "added.png", :upload_content_type => "image/png", :upload_file_size => 1)
266 d2.update_assets([kept_asset.id, added_asset.id])
267 d2.save!
268
269 diff = d2.diff_against(n.head)
270
271 assert_equal [added_asset], diff[:assets][:added]
272 assert_equal [removed_asset], diff[:assets][:removed]
273 end
231end 274end