diff options
author | Johan Sørensen <johan@johansorensen.com> | 2009-12-08 10:00:01 +0100 |
---|---|---|
committer | Johan Sørensen <johan@johansorensen.com> | 2009-12-08 10:00:01 +0100 |
commit | 0a6bfdc51dc1492ffe6f841c1d6b2fae9a53ce71 (patch) | |
tree | 435e6e99425457a98fa7a4d34510b69977348fe7 | |
parent | d80d50a7d8aebb8cb78da01237a81d9073304d5f (diff) | |
download | gitorious-mainline-outdated-0a6bfdc51dc1492ffe6f841c1d6b2fae9a53ce71.zip gitorious-mainline-outdated-0a6bfdc51dc1492ffe6f841c1d6b2fae9a53ce71.tar.gz gitorious-mainline-outdated-0a6bfdc51dc1492ffe6f841c1d6b2fae9a53ce71.tar.bz2 |
Make sure that we can remove a repository's description
Make Repository#replace_value accept an allow_blank parameter to
control whether blank values are ok or not.
-rw-r--r-- | app/controllers/repositories_controller.rb | 2 | ||||
-rw-r--r-- | app/models/repository.rb | 6 | ||||
-rw-r--r-- | test/functional/repositories_controller_test.rb | 8 | ||||
-rw-r--r-- | test/unit/repository_test.rb | 9 |
4 files changed, 22 insertions, 3 deletions
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 9a7db2f..696655a 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -170,7 +170,7 @@ class RepositoriesController < ApplicationController @repository.log_changes_with_user(current_user) do @repository.replace_value(:name, params[:repository][:name]) - @repository.replace_value(:description, params[:repository][:description]) + @repository.replace_value(:description, params[:repository][:description], true) end @repository.deny_force_pushing = params[:repository][:deny_force_pushing] @repository.notify_committers_on_new_merge_request = params[:repository][:notify_committers_on_new_merge_request] diff --git a/app/models/repository.rb b/app/models/repository.rb index 7de3851..bd73518 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -578,9 +578,11 @@ class Repository < ActiveRecord::Base end # Replaces a value within a log_changes_with_user block - def replace_value(field, value) + def replace_value(field, value, allow_blank = false) old_value = read_attribute(field) - return if value.blank? or old_value == value + if !allow_blank && value.blank? || old_value == value + return + end self.send("#{field}=", value) valid? if !errors.on(field) diff --git a/test/functional/repositories_controller_test.rb b/test/functional/repositories_controller_test.rb index 3e4b491..28acf31 100644 --- a/test/functional/repositories_controller_test.rb +++ b/test/functional/repositories_controller_test.rb @@ -1063,6 +1063,14 @@ class RepositoriesControllerTest < ActionController::TestCase assert_equal "blablabla", @repository.reload.description end + should "be able to remove the repository description" do + @repository.update_attribute(:description, "blabla bla") + put :update, :project_id => @project.to_param, :id => @repository.to_param, + :repository => {:description => ""} + assert @repository.reload.description.blank?, + "descr: #{@repository.description.inspect}" + end + should 'update the repository name and create an event if a new name is provided' do description = @repository.description assert_incremented_by(@repository.events, :size, 1) do diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb index 4bf55ca..112b99e 100644 --- a/test/unit/repository_test.rb +++ b/test/unit/repository_test.rb @@ -866,6 +866,15 @@ class RepositoryTest < ActiveSupport::TestCase end end + should "allow blank updates if we say it's ok" do + @repository.update_attribute(:description, "asdf") + @repository.log_changes_with_user(users(:johan)) do + @repository.replace_value(:description, "", true) + end + @repository.save! + assert @repository.reload.description.blank?, "desc: #{@repository.description.inspect}" + end + should 'not generate events when invalid values are provided' do assert_incremented_by(@repository.events, :size, 0) do @repository.log_changes_with_user(users(:johan)) do |