Module: RspecRequestHelpers::Helpers::ClassMethods

Defined in:
lib/rspec_request_helpers/helpers.rb

Defined Under Namespace

Classes: DatabaseDSLTranslator

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



55
56
57
# File 'lib/rspec_request_helpers/helpers.rb', line 55

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

#path(&block) ⇒ Object



43
44
45
# File 'lib/rspec_request_helpers/helpers.rb', line 43

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

#valid_headers(&block) ⇒ Object



51
52
53
# File 'lib/rspec_request_helpers/helpers.rb', line 51

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

#valid_params(&block) ⇒ Object



47
48
49
# File 'lib/rspec_request_helpers/helpers.rb', line 47

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