spec/cucumber/step_definition_spec.rb in cucumber-0.3.95 vs spec/cucumber/step_definition_spec.rb in cucumber-0.3.96

- old
+ new

@@ -1,98 +1,99 @@ require File.dirname(__FILE__) + '/../spec_helper' require 'cucumber/ast' require 'cucumber/step_mother' -require 'cucumber/step_definition' +require 'cucumber/rb_support/rb_language' module Cucumber - describe StepDefinition do - before do - extend StepMother - @world = new_world! + describe RbStepDefinition do + before do + @step_mother = StepMother.new + @step_mother.load_natural_language('en') + @rb = @step_mother.load_programming_language('rb') + @dsl = Object.new + @dsl.extend RbSupport::RbDsl + @step_mother.begin_scenario + $inside = nil end it "should allow calling of other steps" do - Given /Outside/ do + @dsl.Given /Outside/ do Given "Inside" end - Given /Inside/ do + @dsl.Given /Inside/ do $inside = true end - step_match("Outside").invoke(@world, nil) + @step_mother.step_match("Outside").invoke(nil) $inside.should == true end it "should allow calling of other steps with inline arg" do - Given /Outside/ do + @dsl.Given /Outside/ do Given "Inside", Ast::Table.new([['inside']]) end - Given /Inside/ do |table| + @dsl.Given /Inside/ do |table| $inside = table.raw[0][0] end - step_match("Outside").invoke(@world, nil) + @step_mother.step_match("Outside").invoke(nil) $inside.should == 'inside' end it "should raise Undefined when inside step is not defined" do - Given /Outside/ do + @dsl.Given /Outside/ do Given 'Inside' end - step = mock('Step') - step.should_receive(:exception=) lambda do - @world.__cucumber_current_step = step - step_match('Outside').invoke(@world, nil) + @step_mother.step_match('Outside').invoke(nil) end.should raise_error(Undefined, 'Undefined step: "Inside"') end it "should allow forced pending" do - Given /Outside/ do + @dsl.Given /Outside/ do pending("Do me!") end lambda do - step_match("Outside").invoke(@world, nil) + @step_mother.step_match("Outside").invoke(nil) end.should raise_error(Pending, "Do me!") end it "should allow announce" do v = mock('visitor') v.should_receive(:announce).with('wasup') - self.visitor = v - world = new_world! - Given /Loud/ do + @step_mother.visitor = v + @dsl.Given /Loud/ do announce 'wasup' end - step_match("Loud").invoke(world, nil) + @step_mother.step_match("Loud").invoke(nil) end def unindented(s) s.split("\n")[1..-2].join("\n").indent(-8) end it "should recognise quotes in name and make according regexp" do - StepDefinition.snippet_text('Given', 'A "first" arg').should == unindented(%{ + @rb.snippet_text('Given', 'A "first" arg').should == unindented(%{ Given /^A "([^\\"]*)" arg$/ do |arg1| pending end }) end it "should recognise several quoted words in name and make according regexp and args" do - StepDefinition.snippet_text('Given', 'A "first" and "second" arg').should == unindented(%{ + @rb.snippet_text('Given', 'A "first" and "second" arg').should == unindented(%{ Given /^A "([^\\"]*)" and "([^\\"]*)" arg$/ do |arg1, arg2| pending end }) end it "should not use quote group when there are no quotes" do - StepDefinition.snippet_text('Given', 'A first arg').should == unindented(%{ + @rb.snippet_text('Given', 'A first arg').should == unindented(%{ Given /^A first arg$/ do pending end }) end