Sha256: acd85ff3979aa884e422a8b732a47ecc8d7157ac844a0cb59d22b019816a17ac

Contents?: true

Size: 1.94 KB

Versions: 2

Compression:

Stored size: 1.94 KB

Contents

# frozen_string_literal: true

require 'test_helper'
require 'statsd/instrument/rubocop/metaprogramming_positional_arguments'

module Rubocop
  class MetaprogrammingPositionalArgumentsTest < Minitest::Test
    include RubocopHelper

    def setup
      @cop = RuboCop::Cop::StatsD::MetaprogrammingPositionalArguments.new
    end

    def test_ok_with_two_arguments
      assert_no_offenses("ClassName.statsd_count_if(:method, 'metric') { foo }")
      assert_no_offenses("ClassName.statsd_measure :method, 'metric'")
      assert_no_offenses(<<~RUBY)
        class Foo
          statsd_count :method, 'metric'
        end
      RUBY
    end

    def test_ok_with_keyword_arguments_and_blocks
      assert_no_offenses("ClassName.statsd_measure :method, 'metric', foo: 'bar'")
      assert_no_offenses("ClassName.statsd_count_success(:method, 'metric', **kwargs)")
      assert_no_offenses("ClassName.statsd_measure(:method, 'metric', foo: 'bar', &block)")
      assert_no_offenses(<<~RUBY)
        class Foo
          statsd_count_if(:method, 'metric', foo: 'bar', baz: 'quc') do |result|
            result == 'ok'
          end
        end
      RUBY
    end

    def test_offense_with_positional_arguments
      assert_offense("ClassName.statsd_measure(:method, 'metric', 1)")
      assert_offense("ClassName.statsd_measure(:method, 'metric', 1, ['tag'])")
      assert_offense("ClassName.statsd_measure(:method, 'metric', 1, tag: 'value')")
      assert_offense(<<~RUBY)
        class Foo
          extend StatsD::Instrument
          statsd_measure(:method, 'metric', 1)
        end
      RUBY
    end

    def test_offense_with_splat
      assert_offense("ClassName.statsd_measure(:method, 'metric', *options)")
    end

    def test_offense_with_constant_or_method_as_third_argument
      assert_offense("ClassName.statsd_measure(:method, 'metric', SAMPLE_RATE_CONSTANT)")
      assert_offense("ClassName.statsd_measure(:method, 'metric', method_returning_a_hash)")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
statsd-instrument-2.5.1 test/rubocop/metaprogramming_positional_arguments_test.rb
statsd-instrument-2.5.0 test/rubocop/metaprogramming_positional_arguments_test.rb