Module: RspecDatabaseHelper::ClassMethods
- Defined in:
- lib/rspec_database_helper.rb
Defined Under Namespace
Classes: DatabaseDSLTranslator
Class Method Summary collapse
Instance Method Summary collapse
-
#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’) }.
Class Method Details
.rewriter_class ⇒ Object
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 |