Module: RspecRequestHelpers::Helpers::ClassMethods

Defined in:
lib/rspec_request_helpers/helpers.rb

Defined Under Namespace

Classes: DatabaseDSLTranslator, VarsDSL

Instance Method Summary collapse

Instance Method Details

#database(&block) ⇒ Object

Tiny DSL for creating list or single database records via factory_bot syntax and Rspec :let or :let! methods Usage: user(:user, name: ‘Bob’) is translated to let(:user) { FactoryBot.create(:user, name: ‘Bob’) } user!(:user, name: ‘Bob’) is translated to let!(:user) { FactoryBot.create(:user, name: ‘Bob’) } user_list(:user, name: ‘Bob’, 3) is translated to let(:user) { FactoryBot.create_list(:user, 3, name: ‘Bob’) } user_list!(:user, name: ‘Bob’, 3) is translated to let!(:user) { FactoryBot.create_list(:user, 3, name: ‘Bob’) }



34
35
36
37
38
39
40
41
# File 'lib/rspec_request_helpers/helpers.rb', line 34

def database(&block)
  parser        = Parser::CurrentRuby.new
  rewriter      = DatabaseDSLTranslator.new
  buffer        = Parser::Source::Buffer.new('(string)')
  buffer.source = Parser::CurrentRuby.parse(block.source).children.last.loc.expression.source
  rspec_factory = rewriter.rewrite(buffer, parser.parse(buffer))
  self.class_eval(rspec_factory)
end

#expected_response(&block) ⇒ Object



74
75
76
# File 'lib/rspec_request_helpers/helpers.rb', line 74

def expected_response(&block)
  let(:expected_response, &block)
end

#headers(&block) ⇒ Object



70
71
72
# File 'lib/rspec_request_helpers/helpers.rb', line 70

def headers(&block)
  let(:headers, &block)
end

#params(&block) ⇒ Object



66
67
68
# File 'lib/rspec_request_helpers/helpers.rb', line 66

def params(&block)
  let(:params, &block)
end

#path(&block) ⇒ Object



62
63
64
# File 'lib/rspec_request_helpers/helpers.rb', line 62

def path(&block)
  let(:path, &block)
end

#vars(&block) ⇒ Object



58
59
60
# File 'lib/rspec_request_helpers/helpers.rb', line 58

def vars(&block)
  VarsDSL.new(self).instance_eval(&block)
end