diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/controllers/revisions_controller_test.rb | 22 | ||||
| -rw-r--r-- | test/models/page_test.rb | 28 |
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) |
