From be67c8529ffcce0ec646b2cf755f4d150e7600d8 Mon Sep 17 00:00:00 2001 From: Kohei Suzuki Date: Mon, 8 Dec 2014 21:46:42 +0900 Subject: [PATCH] Clear tags when no tags are given Fixes #8 --- app/controllers/site_problems_controller.rb | 2 +- .../shared_examples/site_problems_controller.rb | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/controllers/site_problems_controller.rb b/app/controllers/site_problems_controller.rb index f5812fc..ee2e1a0 100644 --- a/app/controllers/site_problems_controller.rb +++ b/app/controllers/site_problems_controller.rb @@ -62,7 +62,7 @@ def edit_tags def update_tags site_problem = SiteProblem.find_or_create_by(site: site, problem_id: params[:problem_id]) - site_problem.tags = params[:tags].map { |tag| Tag.find_by!(name: tag) } + site_problem.tags = (params[:tags] || []).map { |tag| Tag.find_by!(name: tag) } site_problem.save! Activity.create(user: @current_user, target: site_problem, kind: :tags_update, parameters: site_problem.tags.pluck(:id)) redirect_to send(:"#{site}_path", params[:problem_id]) diff --git a/spec/support/shared_examples/site_problems_controller.rb b/spec/support/shared_examples/site_problems_controller.rb index 4a82f1c..4f67a64 100644 --- a/spec/support/shared_examples/site_problems_controller.rb +++ b/spec/support/shared_examples/site_problems_controller.rb @@ -124,17 +124,27 @@ def create_wa(problem, user, submitted_at) end context 'with sign-in' do + include SiteProblemsHelper + before do session[:user_id] = user.id end it 'works' do - extend SiteProblemsHelper post :update_tags, problem_id: problem1.problem_id, tags: [tag1.name, tag2.name] expect(response).to redirect_to(problem_path(problem1)) problem1.reload expect(problem1.tags.map(&:name)).to match_array([tag2.name, tag1.name]) end + + context 'when no tags are given' do + it 'clears tags' do + post :update_tags, problem_id: problem1.problem_id + expect(response).to redirect_to(problem_path(problem1)) + problem1.reload + expect(problem1.tags).to be_empty + end + end end end end