diff --git a/app/models/approve_article.rb b/app/models/approve_article.rb index 44444ac..4475cb2 100644 --- a/app/models/approve_article.rb +++ b/app/models/approve_article.rb @@ -52,7 +52,7 @@ class ApproveArticle < Task end def article_parent= value - article_parent_id = value.id + self.article_parent_id = value.id end def highlighted= value diff --git a/app/models/published_article.rb b/app/models/published_article.rb index 421c7e2..e3c3fe8 100644 --- a/app/models/published_article.rb +++ b/app/models/published_article.rb @@ -18,7 +18,7 @@ class PublishedArticle < Article before_validation_on_create :update_name def update_name - self.name ||= self.reference_article.name + self.name = self.reference_article.name if self.name.blank? end def author diff --git a/test/functional/tasks_controller_test.rb b/test/functional/tasks_controller_test.rb index 37737d9..7b82093 100644 --- a/test/functional/tasks_controller_test.rb +++ b/test/functional/tasks_controller_test.rb @@ -203,4 +203,24 @@ class TasksControllerTest < Test::Unit::TestCase assert_not_nil PublishedArticle.find(:first) end + should 'handle blank names for published articles' do + c = Community.create!(:name => 'test comm') + @controller.stubs(:profile).returns(c) + c.affiliate(profile, Profile::Roles.all_roles(c.environment)) + person = create_user('test_user').person + p_blog = Blog.create!(:profile => person) + c_blog1 = Blog.create!(:profile => c) + c_blog2 = Blog.new(:profile => c); c_blog2.name = 'blog2'; c_blog2.save! + + article = person.articles.create!(:name => 'test article', :parent => p_blog) + a = ApproveArticle.create!(:article => article, :target => c, :requestor => person) + assert_includes c.tasks, a + + assert_difference PublishedArticle, :count do + post :close, {"commit"=>"Ok!", "id"=> a.id.to_s, "task"=>{"name"=>"", "closing_statment"=>"", "highlighted"=>"0", "article_parent_id"=>c_blog2.id.to_s}, "decision"=>"finish"} + end + assert p_article = PublishedArticle.find_by_reference_article_id(article.id) + assert_includes c_blog2.children(true), p_article + end + end diff --git a/test/unit/approve_article_test.rb b/test/unit/approve_article_test.rb index 754764c..4e53d49 100644 --- a/test/unit/approve_article_test.rb +++ b/test/unit/approve_article_test.rb @@ -63,4 +63,22 @@ class ApproveArticleTest < ActiveSupport::TestCase assert_match /text was removed/, a.description end + should 'preserve article_parent' do + profile = create_user('test_user').person + article = profile.articles.create!(:name => 'test article') + a = ApproveArticle.new(:article_parent => article) + + assert_equal article, a.article_parent + end + + should 'handle blank names' do + profile = create_user('test_user').person + article = profile.articles.create!(:name => 'test article') + community = Community.create!(:name => 'test comm') + a = ApproveArticle.create!(:name => '', :article => article, :target => community, :requestor => profile) + + assert_difference PublishedArticle, :count do + a.finish + end + end end -- libgit2 0.21.2