Feature: generating cucumber stories

In order to get started using cucumber in a project
A user should be able to
generate a project setup for their testing framework of choice

Scenario: sans cucumber setup
  Given a working directory
  And I have configured git sanely
  And I do not want cucumber stories
  When I generate a project named 'the-perfect-gem' that is 'zomg, so good'

  And a file named 'the-perfect-gem/features/the-perfect-gem.feature' is not created
  And a file named 'the-perfect-gem/features/support/env.rb' is not created
  And a file named 'the-perfect-gem/features/steps/the-perfect-gem_steps.rb' is not created

Scenario: basic cucumber setup
  Given a working directory
  And I have configured git sanely
  And I want cucumber stories
  When I generate a project named 'the-perfect-gem' that is 'zomg, so good'

  Then cucumber directories are created

  And a file named 'the-perfect-gem/features/the-perfect-gem.feature' is created
  And a file named 'the-perfect-gem/features/support/env.rb' is created
  And a file named 'the-perfect-gem/features/step_definitions/the-perfect-gem_steps.rb' is created

  And 'features/support/env.rb' requires 'bundler'
  And 'features/support/env.rb' sets up bundler using the default and development groups
  And 'features/support/env.rb' requires 'the-perfect-gem'

Scenario: bundler
  Given a working directory
  And I want bundler
  And I have configured git sanely
  And I want cucumber stories
  When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
  And 'features/support/env.rb' requires 'bundler'
  And 'features/support/env.rb' sets up bundler using the default and development groups

Scenario: no bundler
  Given a working directory
  And I have configured git sanely
  And I do not want bundler
  And I want cucumber stories
  When I generate a project named 'the-perfect-gem' that is 'zomg, so good'
  And 'features/support/env.rb' does not require 'bundler'
  And 'features/support/env.rb' does not setup bundler

Scenario: cucumber setup for bacon
  Given a working directory
  And I have configured git sanely
  And I want cucumber stories
  When I generate a bacon project named 'the-perfect-gem' that is 'zomg, so good'

  Then 'features/support/env.rb' requires 'test/unit/assertions'
  And cucumber world extends "Test::Unit::Assertions"

Scenario: cucumber setup for shoulda
  Given a working directory
  And I have configured git sanely
  And I want cucumber stories
  When I generate a shoulda project named 'the-perfect-gem' that is 'zomg, so good'

  Then 'features/support/env.rb' requires 'test/unit/assertions'
  And cucumber world extends "Test::Unit::Assertions"

Scenario: cucumber setup for testunit
  Given a working directory
  And I have configured git sanely
  And I want cucumber stories
  When I generate a testunit project named 'the-perfect-gem' that is 'zomg, so good'

  Then 'features/support/env.rb' requires 'test/unit/assertions'
  And cucumber world extends "Test::Unit::Assertions"

Scenario: cucumber setup for minitest
  Given a working directory
  And I have configured git sanely
  And I want cucumber stories
  When I generate a minitest project named 'the-perfect-gem' that is 'zomg, so good'

  Then 'features/support/env.rb' requires 'minitest/unit'
  And cucumber world extends "MiniTest::Assertions"

Scenario: cucumber setup for rspec
  Given a working directory
  And I have configured git sanely
  And I want cucumber stories
  When I generate a rspec project named 'the-perfect-gem' that is 'zomg, so good'

  Then 'features/support/env.rb' requires 'the-perfect-gem'
  And 'features/support/env.rb' requires 'rspec/expectations'

Scenario: cucumber setup for mirconaut
  Given a working directory
  And I have configured git sanely
  And I want cucumber stories
  When I generate a micronaut project named 'the-perfect-gem' that is 'zomg, so good'

  Then 'features/support/env.rb' requires 'the-perfect-gem'
  And 'features/support/env.rb' requires 'micronaut/expectations'
  And cucumber world extends "Micronaut::Matchers"