summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/controllers/revisions_controller_test.rb22
-rw-r--r--test/models/page_test.rb28
2 files changed, 47 insertions, 3 deletions
diff --git a/test/controllers/revisions_controller_test.rb b/test/controllers/revisions_controller_test.rb
index 34f00a4f..d9f49e58 100644
--- a/test/controllers/revisions_controller_test.rb
+++ b/test/controllers/revisions_controller_test.rb
@@ -151,19 +151,35 @@ class RevisionsControllerTest < ActionController::TestCase
151 assert_select "input[type='hidden'][name='end_revision'][value='draft']" 151 assert_select "input[type='hidden'][name='end_revision'][value='draft']"
152 end 152 end
153 153
154 test "diffing two revisions also shows tag, template, and asset changes" do 154 test "diffing shows tag, template, external URL and asset changes" do
155 login_as :quentin 155 login_as :quentin
156 find_or_create_draft(@node, @user) 156 find_or_create_draft(@node, @user)
157 @node.draft.tag_list = "update" 157 draft = @node.draft
158 @node.draft.save! 158 draft.tag_list = "update"
159 draft.template_name = "title_only"
160 draft.external_url = "https://example.org/"
161 draft.save!
162 draft.related_assets.create!(:asset => Asset.create!(:name => "diffed",
163 :upload_file_name => "diffed.png",
164 :upload_content_type => "image/png"))
159 165
160 post(:diff, params: { :node_id => @node.id, :start_revision => @node.pages.first.revision, :end_revision => @node.pages.last.revision }) 166 post(:diff, params: { :node_id => @node.id, :start_revision => @node.pages.first.revision, :end_revision => @node.pages.last.revision })
161 assert_response :success 167 assert_response :success
162 assert_select "h3", Page.human_attribute_name(:tag_list) 168 assert_select "h3", Page.human_attribute_name(:tag_list)
163 assert_select "h3", Page.human_attribute_name(:template_name) 169 assert_select "h3", Page.human_attribute_name(:template_name)
170 assert_select "h3", Page.human_attribute_name(:external_url)
164 assert_select "h3", Page.human_attribute_name(:assets) 171 assert_select "h3", Page.human_attribute_name(:assets)
165 end 172 end
166 173
174 test "a diff with no metadata changes says so once" do
175 login_as :quentin
176
177 post(:diff, params: { :node_id => @node.id, :start_revision => @node.pages.first.revision, :end_revision => @node.pages.last.revision })
178 assert_response :success
179 assert_select ".diff_meta .diff_unchanged"
180 assert_select ".diff_meta h3", false
181 end
182
167 test "revisions#index links back to the node" do 183 test "revisions#index links back to the node" do
168 login_as :quentin 184 login_as :quentin
169 get :index, params: { :node_id => @node.id } 185 get :index, params: { :node_id => @node.id }
diff --git a/test/models/page_test.rb b/test/models/page_test.rb
index b737e8b0..f095a7e1 100644
--- a/test/models/page_test.rb
+++ b/test/models/page_test.rb
@@ -302,6 +302,34 @@ class PageTest < ActiveSupport::TestCase
302 assert_equal "title_only", diff[:template_name][:to] 302 assert_equal "title_only", diff[:template_name][:to]
303 end 303 end
304 304
305 test "diff_against reports external URL, publication date and author changes" do
306 n = Node.root.children.create! :slug => "meta_diff_test"
307 d = find_or_create_draft(n, @user1)
308 d.external_url = "https://old.example.org/"
309 d.published_at = Time.utc(2026, 1, 1, 12, 0, 0)
310 d.save!
311 n.publish_draft!
312
313 new_author = User.where.not(:id => n.head.user_id).first
314 d2 = find_or_create_draft(n, @user1)
315 d2.external_url = "https://new.example.org/"
316 d2.published_at = Time.utc(2026, 3, 1, 12, 0, 0)
317 d2.user = new_author
318 d2.save!
319
320 diff = d2.diff_against(n.head)
321
322 assert diff[:external_url][:changed]
323 assert_equal "https://old.example.org/", diff[:external_url][:from]
324 assert_equal "https://new.example.org/", diff[:external_url][:to]
325
326 assert diff[:published_at][:changed]
327 assert_equal Time.utc(2026, 3, 1, 12, 0, 0).to_i, diff[:published_at][:to].to_i
328
329 assert diff[:user][:changed]
330 assert_equal new_author.login, diff[:user][:to].login
331 end
332
305 test "diff_against reports added and removed assets by filename" do 333 test "diff_against reports added and removed assets by filename" do
306 n = Node.root.children.create! :slug => "asset_diff_test" 334 n = Node.root.children.create! :slug => "asset_diff_test"
307 d = find_or_create_draft(n, @user1) 335 d = find_or_create_draft(n, @user1)