aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/admin_public_body_category_controller.rb6
-rw-r--r--app/views/admin_public_body_category/_form.html.erb17
-rw-r--r--spec/controllers/admin_public_body_category_controller_spec.rb18
3 files changed, 33 insertions, 8 deletions
diff --git a/app/controllers/admin_public_body_category_controller.rb b/app/controllers/admin_public_body_category_controller.rb
index 635e664ee..c4f342ddb 100644
--- a/app/controllers/admin_public_body_category_controller.rb
+++ b/app/controllers/admin_public_body_category_controller.rb
@@ -17,9 +17,13 @@ class AdminPublicBodyCategoryController < AdminController
def update
I18n.with_locale(I18n.default_locale) do
@category = PublicBodyCategory.find(params[:id])
- if @category.update_attributes(params[:public_body_category])
+
+ if params[:public_body_category][:category_tag] && PublicBody.find_by_tag(@category.category_tag).count > 0 && @category.category_tag != params[:public_body_category][:category_tag]
+ flash[:notice] = 'There are authorities associated with this category, so the tag can\'t be renamed'
+ elsif @category.update_attributes(params[:public_body_category])
flash[:notice] = 'Category was successfully updated.'
end
+
render :action => 'edit'
end
end
diff --git a/app/views/admin_public_body_category/_form.html.erb b/app/views/admin_public_body_category/_form.html.erb
index 91f6285de..5cda60e54 100644
--- a/app/views/admin_public_body_category/_form.html.erb
+++ b/app/views/admin_public_body_category/_form.html.erb
@@ -44,12 +44,15 @@ end
</div>
</div>
-<h3>Common Fields</h3>
+<% if PublicBody.find_by_tag(@category.category_tag).count == 0 %>
-<div class="control-group">
- <label for="public_body_category_category_tag" class="control-label">Category tag</label>
- <div class="controls">
- <%= f.text_field :category_tag, :class => "span4" %>
- </div>
-</div>
+ <h3>Common Fields</h3>
+
+ <div class="control-group">
+ <label for="public_body_category_category_tag" class="control-label">Category tag</label>
+ <div class="controls">
+ <%= f.text_field :category_tag, :class => "span4" %>
+ </div>
+ </div>
+<% end %>
<!--[eoform:public_body_category]-->
diff --git a/spec/controllers/admin_public_body_category_controller_spec.rb b/spec/controllers/admin_public_body_category_controller_spec.rb
index d65a85d9e..dbc72ac93 100644
--- a/spec/controllers/admin_public_body_category_controller_spec.rb
+++ b/spec/controllers/admin_public_body_category_controller_spec.rb
@@ -117,6 +117,24 @@ describe AdminPublicBodyCategoryController do
pbc.title.should == "Useless ministries"
end
end
+
+ it "does not save edits to category_tag if the category has associated bodies" do
+ post :update, { :id => @category.id,
+ :public_body_category => { :category_tag => "renamed" } }
+ request.flash[:notice].should include('can\'t')
+ pbc = PublicBodyCategory.find(@category.id)
+ pbc.category_tag.should == "useless_agency"
+ end
+
+
+ it "save edits to category_tag if the category has no associated bodies" do
+ category = PublicBodyCategory.create(:title => "Empty Category", :category_tag => "empty", :description => "-")
+ post :update, { :id => category.id,
+ :public_body_category => { :category_tag => "renamed" } }
+ request.flash[:notice].should include('success')
+ pbc = PublicBodyCategory.find(category.id)
+ pbc.category_tag.should == "renamed"
+ end
end
context 'when destroying a public body category' do