diff options
| author | hukl <contact@smyck.org> | 2009-11-11 14:57:26 +0100 |
|---|---|---|
| committer | hukl <contact@smyck.org> | 2009-11-11 14:57:26 +0100 |
| commit | 6d4ce84772e150fd9950819ca2b0e84614e06763 (patch) | |
| tree | 391ad79e8c07b6f9c2b3909c99e1940e1f52db3e | |
| parent | 357efd4a89ef5c39ec81aa75d7bc46d94a5fa257 (diff) | |
implemented that pages now have an author and an editor
| -rw-r--r-- | app/models/node.rb | 8 | ||||
| -rw-r--r-- | app/models/page.rb | 1 | ||||
| -rw-r--r-- | 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 | |||
| 63 | draft | 63 | draft |
| 64 | elsif draft && self.lock_owner.nil? | 64 | elsif draft && self.lock_owner.nil? |
| 65 | lock_for! current_user | 65 | lock_for! current_user |
| 66 | draft.user = current_user if draft.user.nil? | 66 | draft.user = current_user if draft.user.nil? |
| 67 | draft.editor = current_user | ||
| 67 | draft.save | 68 | draft.save |
| 68 | draft | 69 | draft |
| 69 | elsif draft && self.lock_owner != current_user | 70 | elsif draft && self.lock_owner != current_user |
| @@ -79,8 +80,9 @@ class Node < ActiveRecord::Base | |||
| 79 | end | 80 | end |
| 80 | 81 | ||
| 81 | def create_new_draft user | 82 | def create_new_draft user |
| 82 | empty_page = self.pages.create! | 83 | empty_page = self.pages.create! |
| 83 | empty_page.user = (self.head ? self.head.user : user) | 84 | empty_page.user = (self.head ? self.head.user : user) |
| 85 | empty_page.editor = user | ||
| 84 | empty_page.save | 86 | empty_page.save |
| 85 | 87 | ||
| 86 | empty_page.clone_attributes_from self.head | 88 | 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 | |||
| 30 | # Associations | 30 | # Associations |
| 31 | belongs_to :node | 31 | belongs_to :node |
| 32 | belongs_to :user | 32 | belongs_to :user |
| 33 | belongs_to :editor, :class_name => "User" | ||
| 33 | has_many :related_assets | 34 | has_many :related_assets |
| 34 | has_many :assets, :through => :related_assets, :order => "position ASC" | 35 | has_many :assets, :through => :related_assets, :order => "position ASC" |
| 35 | 36 | ||
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 | |||
| 310 | node.reload | 310 | node.reload |
| 311 | assert_equal node.pages[0].user, node.pages[1].user | 311 | assert_equal node.pages[0].user, node.pages[1].user |
| 312 | end | 312 | end |
| 313 | |||
| 314 | test "editor and author are the same on a new node" do | ||
| 315 | login_as :quentin | ||
| 316 | node = create_node_with_draft | ||
| 317 | get :edit, :id => node.id | ||
| 318 | |||
| 319 | node.reload | ||
| 320 | assert_equal "quentin", node.draft.user.login | ||
| 321 | assert_equal "quentin", node.draft.editor.login | ||
| 322 | end | ||
| 323 | |||
| 324 | test "creating new draft alters the editor but keeps the author" do | ||
| 325 | node = create_node_with_published_page | ||
| 326 | assert_equal "quentin", node.head.user.login | ||
| 327 | |||
| 328 | login_as :aaron | ||
| 329 | get :edit, :id => node.id | ||
| 330 | |||
| 331 | node.reload | ||
| 332 | assert_equal "quentin", node.head.user.login | ||
| 333 | assert_equal "aaron", node.draft.editor.login | ||
| 334 | end | ||
| 335 | |||
| 336 | test "unlocking and relocking changes editor if done by another user" do | ||
| 337 | node = create_node_with_published_page | ||
| 338 | draft = node.find_or_create_draft users(:quentin) | ||
| 339 | assert_equal draft.user.login, draft.editor.login | ||
| 340 | assert node.locked? | ||
| 341 | node.unlock! | ||
| 342 | |||
| 343 | login_as :aaron | ||
| 344 | get :edit, :id => node.id | ||
| 345 | |||
| 346 | node.reload | ||
| 347 | assert_equal "quentin", node.draft.user.login | ||
| 348 | assert_equal "aaron", node.draft.editor.login | ||
| 349 | end | ||
| 313 | end | 350 | end |
