diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb index f1f80e272..cb7ce7dca 100644 --- a/test/unit/repository_test.rb +++ b/test/unit/repository_test.rb @@ -202,4 +202,37 @@ class RepositoryTest < ActiveSupport::TestCase assert klass.scm_adapter_class assert_equal true, klass.scm_available end + + def test_merge_extra_info + repo = Repository::Subversion.new(:project => Project.find(3)) + assert !repo.save + repo.url = "svn://localhost" + assert repo.save + repo.reload + project = Project.find(3) + assert_equal repo, project.repository + assert_nil repo.extra_info + h1 = {"test_1" => {"test_11" => "test_value_11"}} + repo.merge_extra_info(h1) + assert_equal h1, repo.extra_info + h2 = {"test_2" => { + "test_21" => "test_value_21", + "test_22" => "test_value_22", + }} + repo.merge_extra_info(h2) + assert_equal (h = {"test_11" => "test_value_11"}), + repo.extra_info["test_1"] + assert_equal "test_value_21", + repo.extra_info["test_2"]["test_21"] + h3 = {"test_2" => { + "test_23" => "test_value_23", + "test_24" => "test_value_24", + }} + repo.merge_extra_info(h3) + assert_equal (h = {"test_11" => "test_value_11"}), + repo.extra_info["test_1"] + assert_nil repo.extra_info["test_2"]["test_21"] + assert_equal "test_value_23", + repo.extra_info["test_2"]["test_23"] + end end