From 6961f36a451dc6b6f80ddb50cf2cab7e01d4ec63 Mon Sep 17 00:00:00 2001 From: Jorge Manrubia Date: Tue, 6 May 2025 14:57:51 +0200 Subject: [PATCH] Add tests for assignment --- app/models/command/parser/context.rb | 2 +- test/models/command/assign_test.rb | 46 ++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 test/models/command/assign_test.rb 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