diff --git a/config/initializers/acts_as_taggable_on.rb b/config/initializers/acts_as_taggable_on.rb index dcccf9429..7ad1bbb22 100644 --- a/config/initializers/acts_as_taggable_on.rb +++ b/config/initializers/acts_as_taggable_on.rb @@ -2,7 +2,7 @@ ActsAsTaggableOn::Tagging.class_eval do after_destroy :touch_taggable def touch_taggable - taggable.touch + taggable.touch if taggable.present? end end \ No newline at end of file diff --git a/spec/features/admin/tags_spec.rb b/spec/features/admin/tags_spec.rb new file mode 100644 index 000000000..a56f10ffa --- /dev/null +++ b/spec/features/admin/tags_spec.rb @@ -0,0 +1,84 @@ +require 'rails_helper' + +feature 'Admin tags' do + + background do + @tag1 = create(:tag) + login_as(create(:administrator).user) + end + + scenario 'Index' do + create(:debate, tag_list: 'supertag') + visit admin_tags_path + + expect(page).to have_content @tag1.name + expect(page).to have_content 'supertag' + end + + scenario 'Create' do + visit admin_tags_path + + expect(page).to_not have_content 'important issues' + + within("form.new_tag") do + fill_in "tag_name", with: 'important issues' + click_button 'Create Topic' + end + + visit admin_tags_path + + expect(page).to have_content 'important issues' + end + + scenario 'Update' do + visit admin_tags_path + featured_checkbox = find("#tag_featured_#{@tag1.id}") + expect(featured_checkbox.checked?).to be_nil + + within("#edit_tag_#{@tag1.id}") do + check "tag_featured_#{@tag1.id}" + click_button 'Update Topic' + end + + visit admin_tags_path + featured_checkbox = find("#tag_featured_#{@tag1.id}") + expect(featured_checkbox.checked?).to eq('checked') + end + + scenario 'Delete' do + tag2 = create(:tag, name: 'bad tag') + create(:debate, tag_list: tag2.name) + visit admin_tags_path + + expect(page).to have_content @tag1.name + expect(page).to have_content tag2.name + + within("#edit_tag_#{tag2.id}") do + click_link 'Delete Topic' + end + + visit admin_tags_path + expect(page).to have_content @tag1.name + expect(page).to_not have_content tag2.name + end + + scenario 'Delete tag with hidden taggables' do + tag2 = create(:tag, name: 'bad tag') + debate = create(:debate, tag_list: tag2.name) + debate.hide + + visit admin_tags_path + + expect(page).to have_content @tag1.name + expect(page).to have_content tag2.name + + within("#edit_tag_#{tag2.id}") do + click_link 'Delete Topic' + end + + visit admin_tags_path + expect(page).to have_content @tag1.name + expect(page).to_not have_content tag2.name + end + +end \ No newline at end of file