lib/rubocop/cop/minitest/multiple_assertions.rb in rubocop-minitest-0.34.2 vs lib/rubocop/cop/minitest/multiple_assertions.rb in rubocop-minitest-0.34.3
- old
+ new
@@ -51,23 +51,35 @@
private
def assertions_count(node)
return 0 unless node.is_a?(RuboCop::AST::Node)
- assertions =
- case node.type
- when :if, :case, :case_match
- assertions_count_in_branches(node.branches)
- when :rescue
- assertions_count(node.body) + assertions_count_in_branches(node.branches)
- when :block, :numblock
- assertions_count(node.body)
- else
- node.each_child_node.sum { |child| assertions_count(child) }
- end
-
+ assertions = assertions_count_based_on_type(node)
assertions += 1 if assertion_method?(node)
assertions
+ end
+
+ def assertions_count_based_on_type(node)
+ case node.type
+ when :if, :case, :case_match
+ assertions_count_in_branches(node.branches)
+ when :rescue
+ assertions_count(node.body) + assertions_count_in_branches(node.branches)
+ when :block, :numblock
+ assertions_count(node.body)
+ when *RuboCop::AST::Node::ASSIGNMENTS
+ assertions_count_in_assignment(node)
+ else
+ node.each_child_node.sum { |child| assertions_count(child) }
+ end
+ end
+
+ def assertions_count_in_assignment(node)
+ # checking the direct expression is handled by assertion_method?
+ return 0 unless node.expression.block_type? || node.expression.numblock_type?
+
+ # this will only trigger the branches for :block and :numblock type nodes
+ assertions_count_based_on_type(node.expression)
end
def assertions_count_in_branches(branches)
branches.map { |branch| assertions_count(branch) }.max
end