Class: RspecStarter::PrepareDatabaseStep

Inherits:
Step
  • Object
show all
Defined in:
lib/rspec_starter/steps/prepare_database_step.rb

Instance Attribute Summary

Attributes inherited from Step

#relevant_options

Instance Method Summary collapse

Methods inherited from Step

#should_skip?

Constructor Details

#initialize(defaults, runner) ⇒ PrepareDatabaseStep

Returns a new instance of PrepareDatabaseStep.



3
4
5
6
7
8
9
# File 'lib/rspec_starter/steps/prepare_database_step.rb', line 3

def initialize(defaults, runner)
  super(runner)
  @prepare_database = defaults.fetch(:prepare_db, true)
  @relevant_options << '--no-prep-db'
  @user_wants_to_skip = ARGV.any? { |option| option.include?("--no-prep-db") }
  @success_or_skipped = nil # Will be updated once step executes
end

Instance Method Details

#executeObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/rspec_starter/steps/prepare_database_step.rb', line 21

def execute
  return @success_or_skipped = true if should_skip?

  rebuild_cmd = "rake db:drop db:create db:migrate RAILS_ENV=test"
  print "[#{@runner.step_num}] Preparing the test database with '#{rebuild_cmd.rs_yellow}' ... "
  _stdin, _stdout, stderr = Open3.popen3(rebuild_cmd)
  error_msg_array = stderr.readlines

  if error_msg_array.empty?
    puts "Success".rs_green
    @success_or_skipped = true
  else
    puts "\n\n"
    puts error_msg_array
    puts "\n\nThere was an error rebuilding the test database.  See the output above for details.".rs_red
    puts "or manually run '#{rebuild_cmd}' for more information.".rs_red
    @success_or_skipped = false
  end
end

#failed?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/rspec_starter/steps/prepare_database_step.rb', line 11

def failed?
  !@success_or_skipped
end

#should_execute?Boolean

Returns:

  • (Boolean)


15
16
17
18
19
# File 'lib/rspec_starter/steps/prepare_database_step.rb', line 15

def should_execute?
  return false if @user_wants_to_skip
  return false unless @prepare_database
  @runner.app_uses_rails?
end