fixes #1897
This commit is contained in:
@@ -136,15 +136,37 @@ class WikiPage < ActiveRecord::Base
|
||||
title.tr("_", " ")
|
||||
end
|
||||
|
||||
def merge_version
|
||||
prev = versions.last
|
||||
prev.update_attributes(
|
||||
:title => title,
|
||||
:body => body,
|
||||
:is_locked => is_locked
|
||||
)
|
||||
end
|
||||
|
||||
def merge_version?
|
||||
prev = versions.last
|
||||
prev && prev.updater_id == CurrentUser.user.id && prev.updated_at > 1.hour.ago
|
||||
end
|
||||
|
||||
def create_new_version
|
||||
versions.create(
|
||||
:updater_id => CurrentUser.user.id,
|
||||
:updater_ip_addr => CurrentUser.ip_addr,
|
||||
:title => title,
|
||||
:body => body,
|
||||
:is_locked => is_locked
|
||||
)
|
||||
end
|
||||
|
||||
def create_version
|
||||
if title_changed? || body_changed? || is_locked_changed?
|
||||
versions.create(
|
||||
:updater_id => CurrentUser.user.id,
|
||||
:updater_ip_addr => CurrentUser.ip_addr,
|
||||
:title => title,
|
||||
:body => body,
|
||||
:is_locked => is_locked
|
||||
)
|
||||
if merge_version?
|
||||
merge_version
|
||||
else
|
||||
create_new_version
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -75,13 +75,17 @@ class WikiPageTest < ActiveSupport::TestCase
|
||||
|
||||
assert_difference("WikiPageVersion.count") do
|
||||
@wiki_page.title = "yyy"
|
||||
@wiki_page.save
|
||||
Timecop.travel(1.day.from_now) do
|
||||
@wiki_page.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
should "revert to a prior version" do
|
||||
@wiki_page.title = "yyy"
|
||||
@wiki_page.save
|
||||
Timecop.travel(1.day.from_now) do
|
||||
@wiki_page.save
|
||||
end
|
||||
version = WikiPageVersion.first
|
||||
@wiki_page.revert_to!(version)
|
||||
@wiki_page.reload
|
||||
|
||||
Reference in New Issue
Block a user