Sha256: 4d6e6d5b8d72f6a77977c6bb296c70613ba3e0c31db5b7d40c51d91f4d5bf613

Contents?: true

Size: 765 Bytes

Versions: 6

Compression:

Stored size: 765 Bytes

Contents

# frozen_string_literal: true

require "n_plus_one_control"

module NPlusOneControl
  # Minitest assertions
  module MinitestHelper
    def assert_perform_constant_number_of_queries(
      populate: nil,
      matching: nil,
      scale_factors: nil
    )

      raise ArgumentError, "Block is required" unless block_given?

      queries = NPlusOneControl::Executor.call(
        population: populate || method(:populate),
        matching: matching || /^SELECT/i,
        scale_factors: scale_factors || NPlusOneControl.default_scale_factors
      ) { yield }

      counts = queries.map(&:last).map(&:size)

      assert counts.max == counts.min, NPlusOneControl.failure_message(queries)
    end
  end
end

Minitest::Test.include NPlusOneControl::MinitestHelper

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
n_plus_one_control-0.2.1 lib/n_plus_one_control/minitest.rb
n_plus_one_control-0.1.3 lib/n_plus_one_control/minitest.rb
n_plus_one_control-0.1.2 lib/n_plus_one_control/minitest.rb
n_plus_one_control-0.1.1 lib/n_plus_one_control/minitest.rb
n_plus_one_control-0.1.0 lib/n_plus_one_control/minitest.rb
n_plus_one_control-0.0.3 lib/n_plus_one_control/minitest.rb