module RuboCop::Cop::RSpec::AggregateExamples::MetadataHelpers
@internal
Support methods for example metadata. Examples with similar metadata are grouped. Depending on the configuration, `aggregate_failures` metadata is added to aggregated examples.
Private Instance Methods
add_aggregate_failures_metadata?()
click to toggle source
# File lib/test_prof/cops/rspec/aggregate_examples/metadata_helpers.rb, line 60 def add_aggregate_failures_metadata? cop_config.fetch("AddAggregateFailuresMetadata", false) end
example_metadata(example)
click to toggle source
# File lib/test_prof/cops/rspec/aggregate_examples/metadata_helpers.rb, line 42 def example_metadata(example) example.send_node.arguments end
metadata_for_aggregated_example(metadata)
click to toggle source
# File lib/test_prof/cops/rspec/aggregate_examples/metadata_helpers.rb, line 16 def metadata_for_aggregated_example(metadata) metadata_to_add = metadata.compact.map(&:source) if add_aggregate_failures_metadata? metadata_to_add.unshift(":aggregate_failures") end if metadata_to_add.any? "(#{metadata_to_add.join(", ")})" else "" end end
metadata_pairs_without_aggegate_failures(metadata)
click to toggle source
# File lib/test_prof/cops/rspec/aggregate_examples/metadata_helpers.rb, line 52 def metadata_pairs_without_aggegate_failures(metadata) map = metadata.find(&:hash_type?) pairs = map&.pairs || [] pairs.reject do |pair| pair.key.value == :aggregate_failures && pair.value.true_type? end end
metadata_symbols_without_aggregate_failures(metadata)
click to toggle source
# File lib/test_prof/cops/rspec/aggregate_examples/metadata_helpers.rb, line 46 def metadata_symbols_without_aggregate_failures(metadata) metadata .select(&:sym_type?) .reject { |item| item.value == :aggregate_failures } end
metadata_without_aggregate_failures(example)
click to toggle source
Used to group examples for aggregation. `aggregate_failures` and `aggregate_failures: true` metadata are not taken in consideration, as it is dynamically set basing on cofiguration. If `aggregate_failures: false` is set on the example, it's preserved and is treated as regular metadata.
# File lib/test_prof/cops/rspec/aggregate_examples/metadata_helpers.rb, line 33 def metadata_without_aggregate_failures(example) metadata = example_metadata(example) || [] symbols = metadata_symbols_without_aggregate_failures(metadata) pairs = metadata_pairs_without_aggegate_failures(metadata) [*symbols, pairs].flatten.compact end