Module: NPlusOneControl::MinitestHelper
- Defined in:
- lib/n_plus_one_control/minitest.rb
Overview
Minitest assertions
Instance Method Summary collapse
- #assert_perform_constant_number_of_queries(exact = nil, populate: nil, matching: nil, scale_factors: nil, warmup: nil) ⇒ Object
- #assert_perform_linear_number_of_queries(slope: 1, populate: nil, matching: nil, scale_factors: nil, warmup: nil) ⇒ Object
- #current_scale ⇒ Object
Instance Method Details
#assert_perform_constant_number_of_queries(exact = nil, populate: nil, matching: nil, scale_factors: nil, warmup: nil) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/n_plus_one_control/minitest.rb', line 8 def assert_perform_constant_number_of_queries( exact = nil, populate: nil, matching: nil, scale_factors: nil, warmup: nil ) raise ArgumentError, "Block is required" unless block_given? warming_up warmup @executor = NPlusOneControl::Executor.new( population: populate || population_method, matching: matching || NPlusOneControl.default_matching, scale_factors: scale_factors || NPlusOneControl.default_scale_factors ) queries = @executor.call { yield } counts = queries.map(&:last).map(&:size) if exact assert counts.all? { _1 == exact }, NPlusOneControl.(:number_of_queries, queries) else assert counts.max == counts.min, NPlusOneControl.(:constant_queries, queries) end end |
#assert_perform_linear_number_of_queries(slope: 1, populate: nil, matching: nil, scale_factors: nil, warmup: nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/n_plus_one_control/minitest.rb', line 37 def assert_perform_linear_number_of_queries( slope: 1, populate: nil, matching: nil, scale_factors: nil, warmup: nil ) raise ArgumentError, "Block is required" unless block_given? warming_up warmup @executor = NPlusOneControl::Executor.new( population: populate || population_method, matching: matching || NPlusOneControl.default_matching, scale_factors: scale_factors || NPlusOneControl.default_scale_factors ) queries = @executor.call { yield } assert linear?(queries, slope: slope), NPlusOneControl.(:linear_queries, queries) end |
#current_scale ⇒ Object
60 61 62 |
# File 'lib/n_plus_one_control/minitest.rb', line 60 def current_scale @executor&.current_scale end |