test/unit/bbq_rspec_test.rb in bbq-0.0.4 vs test/unit/bbq_rspec_test.rb in bbq-0.1.0

- old
+ new

@@ -1,85 +1,223 @@ require 'test_helper' class BbqRspecTest < Test::Unit::TestCase include CommandHelper + def setup + @log_path = 'test/dummy/log/test_driver.log' + end + def test_dsl create_file 'test/dummy/spec/acceptance/dsl_spec.rb', <<-RSPEC - require 'spec_helper' - require 'bbq/rspec' +require 'spec_helper' +require 'bbq/rspec' - feature 'dsl' do - background do - @a = 1 - end +feature 'dsl' do + background do + @a = 1 + end - scenario 'valid' do - @a.should == 1 - end - end + scenario 'valid' do + @a.should == 1 + end +end RSPEC - run_cmd 'rspec -Itest/dummy/spec test/dummy/spec/acceptance/dsl_spec.rb' + run_cmd 'bundle exec rspec -Itest/dummy/spec test/dummy/spec/acceptance/dsl_spec.rb' assert_match /1 example, 0 failures/, output end def test_capybara_matchers create_file 'test/dummy/spec/acceptance/capybara_matchers_spec.rb', <<-RSPEC - require 'spec_helper' - require 'bbq/rspec' +require 'spec_helper' +require 'bbq/rspec' +require 'bbq/test_user' - feature 'capybara matchers' do - scenario 'should see welcome text' do - user = Bbq::TestUser.new - user.visit "/miracle" - user.page.should have_content("MIRACLE") - user.should have_no_content("BBQ") - end - end +feature 'capybara matchers' do + scenario 'should see welcome text' do + user = Bbq::TestUser.new + user.visit "/miracle" + user.page.should have_content("MIRACLE") + user.should have_no_content("BBQ") + end +end RSPEC - run_cmd 'rspec -Itest/dummy/spec test/dummy/spec/acceptance/capybara_matchers_spec.rb' + run_cmd 'bundle exec rspec -Itest/dummy/spec test/dummy/spec/acceptance/capybara_matchers_spec.rb' assert_match /1 example, 0 failures/, output end def test_bbq_matchers create_file 'test/dummy/spec/acceptance/bbq_matchers_spec.rb', <<-RSPEC - require 'spec_helper' - require 'bbq/rspec' +require 'spec_helper' +require 'bbq/rspec' +require 'bbq/test_user' - feature 'bbq matchers' do - scenario 'should see welcome text' do - user = Bbq::TestUser.new - user.visit "/miracle" - user.should see("MIRACLE") - user.should not_see("BBQ") - end - end +feature 'bbq matchers' do + scenario 'should see welcome text' do + user = Bbq::TestUser.new + user.visit "/miracle" + expect { user.should see("MIRACLE") }.to_not raise_error(RSpec::Expectations::ExpectationNotMetError) + expect { user.should_not see("MIRACLE") }.to raise_error(RSpec::Expectations::ExpectationNotMetError, /expected not to see MIRACLE in/) + expect { user.should_not see("BBQ") }.to_not raise_error(RSpec::Expectations::ExpectationNotMetError) + expect { user.should see("BBQ") }.to raise_error(RSpec::Expectations::ExpectationNotMetError, /expected to see BBQ in/) + end + + scenario 'should allow to chain matcher with within scope' do + user = Bbq::TestUser.new + user.visit '/ponycorns' + + expect { user.should see('Pink').within('#unicorns') }.to_not raise_error(RSpec::Expectations::ExpectationNotMetError) + expect { user.should_not see('Pink').within('#unicorns') }.to raise_error(RSpec::Expectations::ExpectationNotMetError, /expected not to see Pink in Pink/) + expect { user.should_not see('Violet').within('#unicorns') }.to_not raise_error(RSpec::Expectations::ExpectationNotMetError) + expect { user.should see('Violet').within('#unicorns') }.to raise_error(RSpec::Expectations::ExpectationNotMetError, /expected to see Violet in Pink/) + end +end RSPEC - run_cmd 'rspec -Itest/dummy/spec test/dummy/spec/acceptance/bbq_matchers_spec.rb' - assert_match /1 example, 0 failures/, output + run_cmd 'bundle exec rspec -Itest/dummy/spec test/dummy/spec/acceptance/bbq_matchers_spec.rb' + assert_match /2 examples, 0 failures/, output end def test_implicit_user_eyes create_file 'test/dummy/spec/acceptance/implicit_user_eyes_spec.rb', <<-RSPEC - require 'spec_helper' - require 'bbq/rspec' +require 'spec_helper' +require 'bbq/rspec' +require 'bbq/test_user' - feature 'implicit user eyes' do - scenario 'should see welcome text' do - user = Bbq::TestUser.new - user.visit "/miracle" - user.see!("MIRACLE") - user.not_see!("BBQ") +feature 'implicit user eyes' do + scenario 'should see welcome text' do + user = Bbq::TestUser.new + user.visit "/miracle" + user.see!("MIRACLE") + user.not_see!("BBQ") - lambda { user.see!("BBQ") }.should raise_error - lambda { user.not_see!("MIRACLE") }.should raise_error - end - end + expect { user.see!("BBQ") }.to raise_error + expect { user.not_see!("MIRACLE") }.to raise_error + end + + scenario 'should work with within option' do + user = Bbq::TestUser.new + user.visit '/ponycorns' + user.see! 'Pink', :within => '#unicorns' + user.not_see! 'Violet', :within => '#unicorns' + + expect { user.see! 'Violet', :within => '#unicorns' }.to raise_error + expect { user.not_see! 'Pink', :within => '#unicorns' }.to raise_error + end +end RSPEC - run_cmd 'rspec -Itest/dummy/spec test/dummy/spec/acceptance/implicit_user_eyes_spec.rb' + run_cmd 'bundle exec rspec -Itest/dummy/spec test/dummy/spec/acceptance/implicit_user_eyes_spec.rb' + assert_match /2 examples, 0 failures/, output + end + + def test_api_client + create_file 'test/dummy/spec/acceptance/api_spec.rb', <<-RSPEC +require 'spec_helper' +require 'bbq/rspec' +require 'bbq/test_client' + +feature 'application API' do + scenario 'client fetches the rainbow as JSON' do + client = Bbq::TestClient.new(:headers => { 'Accept' => 'application/json' }) + client.get "/rainbow" do |response| + response.status.should == 200 + response.headers["Content-Type"].should match "application/json" + response.body["colors"].should == 7 + response.body["wonderful"].should == true + end + end +end + RSPEC + + run_cmd 'bundle exec rspec -Itest/dummy/spec test/dummy/spec/acceptance/api_spec.rb' assert_match /1 example, 0 failures/, output + end + + def test_session_pool + create_file 'test/dummy/spec/acceptance/session_pool_spec.rb', <<-RSPEC +require 'spec_helper' +require 'bbq/rspec' +require 'bbq/test_user' +require 'driver_factory' + +Factory = DriverFactory.new('#{@log_path}') +Capybara.register_driver :bbq do |app| + Factory.get_driver(app) +end +Capybara.default_driver = :bbq + +feature 'session pool' do + scenario 'alice visits page' do + Factory.drivers_clean?.should be_true + alice = Bbq::TestUser.new + alice.visit "/miracle" + Factory.drivers_clean?.should be_false + end + + scenario 'both alice and bob visit page' do + Factory.drivers_clean?.should be_true + alice = Bbq::TestUser.new + bob = Bbq::TestUser.new + alice.visit "/miracle" + bob.visit "/miracle" + Factory.drivers_clean?.should be_false + end + + scenario 'bob visits page' do + Factory.drivers_clean?.should be_true + bob = Bbq::TestUser.new + bob.visit "/miracle" + Factory.drivers_clean?.should be_false + end +end + RSPEC + + run_cmd 'bundle exec rspec -Itest/dummy/spec -Itest/support test/dummy/spec/acceptance/session_pool_spec.rb' + assert_match /3 examples, 0 failures/, output + drivers_created = File.readlines(@log_path).size + assert_equal 2, drivers_created + end + + def test_without_session_pool + create_file 'test/dummy/spec/acceptance/without_session_pool_spec.rb', <<-RSPEC +require 'spec_helper' +require 'bbq/test' +require 'bbq/test_user' +require 'driver_factory' + +Factory = DriverFactory.new('#{@log_path}') +Capybara.register_driver :bbq do |app| + Factory.get_driver(app) +end +Capybara.default_driver = :bbq + +feature 'without session pool' do + scenario 'alice visits page' do + alice = Bbq::TestUser.new(:pool => false) + alice.visit "/miracle" + end + + scenario 'both alice and bob visit page' do + alice = Bbq::TestUser.new(:pool => false) + bob = Bbq::TestUser.new(:pool => false) + + alice.visit "/miracle" + bob.visit "/miracle" + end + + scenario 'bob visits page' do + bob = Bbq::TestUser.new(:pool => false) + bob.visit "/miracle" + end + +end + RSPEC + + run_cmd 'bundle exec rspec -Itest/dummy/spec -Itest/support test/dummy/spec/acceptance/without_session_pool_spec.rb' + assert_match /3 examples, 0 failures/, output + drivers_created = File.readlines(@log_path).size + assert_equal 4, drivers_created end end