enkessler/cuke_cataloger

View on GitHub
testing/cucumber/step_definitions/action_steps.rb

Summary

Maintainability
A
30 mins
Test Coverage
When(/^the files? (?:is|are) processed$/) do
  @start_index ||= {}
  @tag_prefix ||= '@test_case_'
  @directory = CukeModeler::Directory.new(@test_directory)

  tagger = CukeCataloger::UniqueTestCaseTagger.new
  tagger.tag_location = @above_or_below if @above_or_below

  tagger.tag_tests(@directory.path, @tag_prefix, @start_index)
end

When(/^the ids in the test suite are validated$/) do
  @directory = CukeModeler::Directory.new(@test_directory)

  args = [@directory.path]
  args << @tag_prefix if @tag_prefix

  @test_results = CukeCataloger::UniqueTestCaseTagger.new.validate_test_ids(*args)
end

When(/^the files are scanned$/) do
  @directory = CukeModeler::Directory.new(@test_directory)
  @exception_raised = false

  # Getting rid of any parameter arguments that the test didn't bother to use
  args = [@directory.path, @tag_prefix].compact

  @test_results = CukeCataloger::UniqueTestCaseTagger.new.scan_for_tagged_tests(*args)
end

When(/^the existing ids are determined$/) do
  @directory = CukeModeler::Directory.new(@test_directory)

  args = [@directory.path]
  args << @tag_prefix if @tag_prefix
  @ids_found = CukeCataloger::UniqueTestCaseTagger.new.determine_known_ids(*args)
end

When(/^the following command is executed:$/) do |command|
  if command =~ /--file /
    output_file_name = command.match(%r{--file <path_to>/(.*).txt})[1]
    command.sub!(%r{--file <path_to>/(.*).txt}, "--file #{@root_test_directory}/#{output_file_name}.txt")
  end

  command.sub!('<path_to>', FIXTURE_DIRECTORY)
  command = "bundle exec ruby #{@executable_directory}/#{command}"

  Dir.chdir(FIXTURE_DIRECTORY) do
    @output = `#{command}`
  end
end

When(/^the following task is invoked:$/) do |command|
  command.sub!('<path_to>/tests', "#{FIXTURE_DIRECTORY}/tests")
  command.sub!('<path_to>/foo', "#{@root_test_directory}/foo")
  command = "bundle exec rake #{command}"

  Dir.chdir(FIXTURE_DIRECTORY) do
    @output = `#{command}`
  end
end

When(/^the following code is run:$/) do |code_text|
  code_text.sub!('<path_to>', FIXTURE_DIRECTORY)

  eval(code_text)
end