summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2009-12-08 10:00:01 +0100
committerJohan Sørensen <johan@johansorensen.com>2009-12-08 10:00:01 +0100
commit0a6bfdc51dc1492ffe6f841c1d6b2fae9a53ce71 (patch)
tree435e6e99425457a98fa7a4d34510b69977348fe7
parentd80d50a7d8aebb8cb78da01237a81d9073304d5f (diff)
downloadgitorious-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.rb2
-rw-r--r--app/models/repository.rb6
-rw-r--r--test/functional/repositories_controller_test.rb8
-rw-r--r--test/unit/repository_test.rb9
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