diff options
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 |