From bc6080a332806c2d0d359e05aaee2a7865d08673 Mon Sep 17 00:00:00 2001 From: hukl Date: Tue, 17 Nov 2009 12:35:04 +0100 Subject: don't set the published_at upon creation of the first draft but rather on publish --- app/models/node.rb | 2 ++ app/models/page.rb | 10 ---------- test/test_helper.rb | 1 - test/unit/node_test.rb | 7 ++++++- 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 def publish_draft! if self.draft self.head = self.draft + self.head.published_at ||= Time.now self.head.save! + self.draft = nil 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 # Filter before_create :set_page_title - before_create :set_published_at before_create :set_template before_save :rewrite_links_in_body - # Validations - validates_presence_of :published_at, :on => :update - # Security attr_accessible :title, :abstract, :body, :template_name, :published_at, :user_id @@ -201,12 +197,6 @@ class Page < ActiveRecord::Base end end - def set_published_at - if self.published_at.nil? - self.published_at = Time.now - end - end - def set_template if node && node.update? 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 def create_node_with_published_page node = create_node_with_draft draft = node.draft - draft.published_at = Time.now draft.title = "Test" draft.abstract = "Test" 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 node = create_node_with_draft draft = node.draft draft.user = users(:aaron) - draft.save + draft.save! node.publish_draft! new_draft = node.find_or_create_draft( users(:quentin) ) new_draft.user_id = users(:quentin).id @@ -276,6 +276,11 @@ class NodeTest < ActiveSupport::TestCase assert update.update? end + test "new nodes should have drafts with no publidhed_at set" do + node = Node.root.children.create( :slug => "wow" ) + assert_nil node.draft.published_at + end + def create_revisions node, count count.times do node.find_or_create_draft @user1 -- cgit v1.3