diff --git a/app/models/command/parser/context.rb b/app/models/command/parser/context.rb index c4c0721c2..19ddc883d 100644 --- a/app/models/command/parser/context.rb +++ b/app/models/command/parser/context.rb @@ -15,7 +15,7 @@ class Command::Parser::Context end def filter - user.filters.from_params params.reverse_merge(**FilterScoped::DEFAULT_PARAMS) + user.filters.from_params(params.slice(*Filter::Params::PERMITTED_PARAMS).reverse_merge(**FilterScoped::DEFAULT_PARAMS)) end private diff --git a/test/models/command/assign_test.rb b/test/models/command/assign_test.rb new file mode 100644 index 000000000..c551da602 --- /dev/null +++ b/test/models/command/assign_test.rb @@ -0,0 +1,46 @@ +require "test_helper" + +class Command::AssignTest < ActionDispatch::IntegrationTest + include CommandTestHelper + + setup do + Current.session = sessions(:david) + @card = cards(:text) + end + + test "assigns card on perma" do + assert_difference -> { @card.assignees.count }, +2 do + execute_command "/assign @kevin @david", context_url: collection_card_url(@card.collection, @card) + end + + assert_includes @card.assignees.reload, users(:david) + assert_includes @card.assignees, users(:kevin) + end + + test "assigns card on cards' index page" do + execute_command "/assign @kevin @david", context_url: collection_cards_url(@card.collection) + + cards(:logo, :text, :layout).each do |card| + assert_includes card.assignees.reload, users(:david) + assert_includes card.assignees, users(:kevin) + end + end + + test "undo assignment" do + Assignment.destroy_all + command = parse_command "/assign @kevin @david", context_url: collection_cards_url(@card.collection) + + command.execute + + cards(:logo, :text, :layout).each do |card| + assert_includes card.assignees.reload, users(:david) + assert_includes card.assignees, users(:kevin) + end + + command.reload.undo + + cards(:logo, :text, :layout).each do |card| + assert_empty card.reload.assignees.reload + end + end +end