Module: RspecDatabaseHelper::ClassMethods

Defined in:
lib/rspec_database_helper.rb

Defined Under Namespace

Classes: DatabaseDSLTranslator

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.rewriter_classObject



6
7
8
9
# File 'lib/rspec_database_helper.rb', line 6

def self.rewriter_class
  return Parser::TreeRewriter if defined?(Parser::TreeRewriter)
  return Parser::Rewriter if defined?(Parser::Rewriter)
end

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’) }



41
42
43
44
45
46
47
48
# File 'lib/rspec_database_helper.rb', line 41

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