summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/node.rb2
-rw-r--r--test/models/node_test.rb32
2 files changed, 33 insertions, 1 deletions
diff --git a/app/models/node.rb b/app/models/node.rb
index 6f435ee..535d8f1 100644
--- a/app/models/node.rb
+++ b/app/models/node.rb
@@ -80,7 +80,7 @@ class Node < ApplicationRecord
80 80
81 unless self.autosave 81 unless self.autosave
82 self.autosave = Page.create!(:editor => current_user) 82 self.autosave = Page.create!(:editor => current_user)
83 self.autosave.assets = (self.draft || self.head).assets if self.draft || self.head 83 self.autosave.clone_attributes_from(self.draft || self.head) if self.draft || self.head
84 self.save! 84 self.save!
85 end 85 end
86 self.autosave.assign_attributes(attributes) 86 self.autosave.assign_attributes(attributes)
diff --git a/test/models/node_test.rb b/test/models/node_test.rb
index a1da82c..91a4a6d 100644
--- a/test/models/node_test.rb
+++ b/test/models/node_test.rb
@@ -614,4 +614,36 @@ class NodeTest < ActiveSupport::TestCase
614 assert_includes node.autosave.reload.assets, original 614 assert_includes node.autosave.reload.assets, original
615 assert_includes node.autosave.reload.assets, extra 615 assert_includes node.autosave.reload.assets, extra
616 end 616 end
617
618 test "autosave! carries over other-locale translations to the newly created autosave row" do
619 node = Node.root.children.create!(:slug => "autosave_translation_carryover_test")
620 user = User.find_by_login("quentin")
621
622 Globalize.with_locale(:en) { node.draft.update!(:title => "English title") }
623
624 node.lock_for_editing!(user)
625 Globalize.with_locale(:de) { node.autosave!({:title => "German edit"}, user) }
626
627 autosave = node.autosave.reload
628 assert_includes autosave.translated_locales, :en
629 assert_equal "English title", Globalize.with_locale(:en) { autosave.title }
630 assert_equal "German edit", Globalize.with_locale(:de) { autosave.title }
631 end
632
633 test "autosave! does not reset other-locale translations already attached directly to an existing autosave" do
634 node = Node.root.children.create!(:slug => "autosave_translation_no_reset_test")
635 user = User.find_by_login("quentin")
636
637 Globalize.with_locale(:en) { node.draft.update!(:title => "Original English title") }
638
639 node.lock_for_editing!(user)
640 Globalize.with_locale(:de) { node.autosave!({:title => "v1"}, user) }
641 Globalize.with_locale(:en) { node.autosave.update!(:title => "Edited directly on autosave") }
642
643 Globalize.with_locale(:de) { node.autosave!({:title => "v2"}, user) }
644
645 autosave = node.autosave.reload
646 assert_equal "Edited directly on autosave", Globalize.with_locale(:en) { autosave.title }
647 assert_equal "v2", Globalize.with_locale(:de) { autosave.title }
648 end
617end 649end