summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhukl <contact@smyck.org>2009-11-17 12:35:04 +0100
committerhukl <contact@smyck.org>2009-11-17 12:35:04 +0100
commitbc6080a332806c2d0d359e05aaee2a7865d08673 (patch)
tree47e811f99c60a82d0dd6004b257d3a88a3d42652
parentc4b8b7f61d0c455aa77f72b96de4ba02ed03aa41 (diff)
don't set the published_at upon creation of the first draft but rather on publish
-rw-r--r--app/models/node.rb2
-rw-r--r--app/models/page.rb10
-rw-r--r--test/test_helper.rb1
-rw-r--r--test/unit/node_test.rb7
4 files changed, 8 insertions, 12 deletions
diff --git a/app/models/node.rb b/app/models/node.rb
index e9d935a..4f67dcb 100644
--- a/app/models/node.rb
+++ b/app/models/node.rb
@@ -95,7 +95,9 @@ class Node < ActiveRecord::Base
95 def publish_draft! 95 def publish_draft!
96 if self.draft 96 if self.draft
97 self.head = self.draft 97 self.head = self.draft
98 self.head.published_at ||= Time.now
98 self.head.save! 99 self.head.save!
100
99 self.draft = nil 101 self.draft = nil
100 102
101 if staged_slug && (staged_slug != slug) 103 if staged_slug && (staged_slug != slug)
diff --git a/app/models/page.rb b/app/models/page.rb
index 22d2c69..00832bd 100644
--- a/app/models/page.rb
+++ b/app/models/page.rb
@@ -36,13 +36,9 @@ class Page < ActiveRecord::Base
36 36
37 # Filter 37 # Filter
38 before_create :set_page_title 38 before_create :set_page_title
39 before_create :set_published_at
40 before_create :set_template 39 before_create :set_template
41 before_save :rewrite_links_in_body 40 before_save :rewrite_links_in_body
42 41
43 # Validations
44 validates_presence_of :published_at, :on => :update
45
46 # Security 42 # Security
47 attr_accessible :title, :abstract, :body, :template_name, :published_at, :user_id 43 attr_accessible :title, :abstract, :body, :template_name, :published_at, :user_id
48 44
@@ -201,12 +197,6 @@ class Page < ActiveRecord::Base
201 end 197 end
202 end 198 end
203 199
204 def set_published_at
205 if self.published_at.nil?
206 self.published_at = Time.now
207 end
208 end
209
210 def set_template 200 def set_template
211 if node && node.update? 201 if node && node.update?
212 self.template_name = "update" 202 self.template_name = "update"
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 22747bb..cda54bc 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -42,7 +42,6 @@ class ActiveSupport::TestCase
42 def create_node_with_published_page 42 def create_node_with_published_page
43 node = create_node_with_draft 43 node = create_node_with_draft
44 draft = node.draft 44 draft = node.draft
45 draft.published_at = Time.now
46 draft.title = "Test" 45 draft.title = "Test"
47 draft.abstract = "Test" 46 draft.abstract = "Test"
48 draft.body = "Test" 47 draft.body = "Test"
diff --git a/test/unit/node_test.rb b/test/unit/node_test.rb
index a106856..514ba3f 100644
--- a/test/unit/node_test.rb
+++ b/test/unit/node_test.rb
@@ -254,7 +254,7 @@ class NodeTest < ActiveSupport::TestCase
254 node = create_node_with_draft 254 node = create_node_with_draft
255 draft = node.draft 255 draft = node.draft
256 draft.user = users(:aaron) 256 draft.user = users(:aaron)
257 draft.save 257 draft.save!
258 node.publish_draft! 258 node.publish_draft!
259 new_draft = node.find_or_create_draft( users(:quentin) ) 259 new_draft = node.find_or_create_draft( users(:quentin) )
260 new_draft.user_id = users(:quentin).id 260 new_draft.user_id = users(:quentin).id
@@ -276,6 +276,11 @@ class NodeTest < ActiveSupport::TestCase
276 assert update.update? 276 assert update.update?
277 end 277 end
278 278
279 test "new nodes should have drafts with no publidhed_at set" do
280 node = Node.root.children.create( :slug => "wow" )
281 assert_nil node.draft.published_at
282 end
283
279 def create_revisions node, count 284 def create_revisions node, count
280 count.times do 285 count.times do
281 node.find_or_create_draft @user1 286 node.find_or_create_draft @user1