From 6d4ce84772e150fd9950819ca2b0e84614e06763 Mon Sep 17 00:00:00 2001 From: hukl Date: Wed, 11 Nov 2009 14:57:26 +0100 Subject: implemented that pages now have an author and an editor --- app/models/node.rb | 8 ++++--- app/models/page.rb | 1 + test/functional/nodes_controller_test.rb | 37 ++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app/models/node.rb b/app/models/node.rb index 44e6c47..9bfea52 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -63,7 +63,8 @@ class Node < ActiveRecord::Base draft elsif draft && self.lock_owner.nil? lock_for! current_user - draft.user = current_user if draft.user.nil? + draft.user = current_user if draft.user.nil? + draft.editor = current_user draft.save draft elsif draft && self.lock_owner != current_user @@ -79,8 +80,9 @@ class Node < ActiveRecord::Base end def create_new_draft user - empty_page = self.pages.create! - empty_page.user = (self.head ? self.head.user : user) + empty_page = self.pages.create! + empty_page.user = (self.head ? self.head.user : user) + empty_page.editor = user empty_page.save empty_page.clone_attributes_from self.head diff --git a/app/models/page.rb b/app/models/page.rb index ee30480..b17c32b 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -30,6 +30,7 @@ class Page < ActiveRecord::Base # Associations belongs_to :node belongs_to :user + belongs_to :editor, :class_name => "User" has_many :related_assets has_many :assets, :through => :related_assets, :order => "position ASC" diff --git a/test/functional/nodes_controller_test.rb b/test/functional/nodes_controller_test.rb index 4088986..113697a 100644 --- a/test/functional/nodes_controller_test.rb +++ b/test/functional/nodes_controller_test.rb @@ -310,4 +310,41 @@ class NodesControllerTest < ActionController::TestCase node.reload assert_equal node.pages[0].user, node.pages[1].user end + + test "editor and author are the same on a new node" do + login_as :quentin + node = create_node_with_draft + get :edit, :id => node.id + + node.reload + assert_equal "quentin", node.draft.user.login + assert_equal "quentin", node.draft.editor.login + end + + test "creating new draft alters the editor but keeps the author" do + node = create_node_with_published_page + assert_equal "quentin", node.head.user.login + + login_as :aaron + get :edit, :id => node.id + + node.reload + assert_equal "quentin", node.head.user.login + assert_equal "aaron", node.draft.editor.login + end + + test "unlocking and relocking changes editor if done by another user" do + node = create_node_with_published_page + draft = node.find_or_create_draft users(:quentin) + assert_equal draft.user.login, draft.editor.login + assert node.locked? + node.unlock! + + login_as :aaron + get :edit, :id => node.id + + node.reload + assert_equal "quentin", node.draft.user.login + assert_equal "aaron", node.draft.editor.login + end end -- cgit v1.3