Class: GLRubocop::GLCops::VcrCassetteNames

Inherits:
RuboCop::Cop::Base
  • Object
show all
Defined in:
lib/gl_rubocop/gl_cops/vcr_cassette_names.rb

Overview

This cop ensures that VCR cassettes have names.

Good:

VCR.use_cassette('cassette_name') { ... }
VCR.use_cassette("cassette_name") { ... }
describe '.create', vcr: { cassette_name: :chariot_connect_create } do

Bad:

VCR.use_cassette { ... }
VCR.use_cassette() { ... }
describe 'something', :vcr do

Constant Summary collapse

MSG =
'VCR cassettes must have a name. Example: VCR.use_cassette("cassette_name") { ... }'
RSPEC_MSG =
'VCR cassettes must have a name. ' \
'Example: describe "test", vcr: { cassette_name: :my_cassette } do'
RSPEC_METHODS =
%i[describe context it specify example].freeze

Instance Method Summary collapse

Instance Method Details

#on_send(node) ⇒ Object



43
44
45
46
# File 'lib/gl_rubocop/gl_cops/vcr_cassette_names.rb', line 43

def on_send(node)
  check_vcr_use_cassette(node)
  (node)
end

#rspec_vcr_symbol?(node) ⇒ Object



34
35
36
# File 'lib/gl_rubocop/gl_cops/vcr_cassette_names.rb', line 34

def_node_matcher :rspec_vcr_symbol?, <<~PATTERN
  (sym :vcr)
PATTERN

#vcr_hash_without_cassette_name?(node) ⇒ Object



39
40
41
# File 'lib/gl_rubocop/gl_cops/vcr_cassette_names.rb', line 39

def_node_matcher :vcr_hash_without_cassette_name?, <<~PATTERN
  (pair (sym :vcr) !{(hash <(pair (sym :cassette_name) _) ...>)})
PATTERN

#vcr_use_cassette?(node) ⇒ Object



24
25
26
# File 'lib/gl_rubocop/gl_cops/vcr_cassette_names.rb', line 24

def_node_matcher :vcr_use_cassette?, <<~PATTERN
  (send (const nil? :VCR) :use_cassette ...)
PATTERN

#vcr_use_cassette_with_name?(node) ⇒ Object



29
30
31
# File 'lib/gl_rubocop/gl_cops/vcr_cassette_names.rb', line 29

def_node_matcher :vcr_use_cassette_with_name?, <<~PATTERN
  (send (const nil? :VCR) :use_cassette {str dstr} ...)
PATTERN