require 'test_helper'
require 'bbq/core/test_user'
def text(output)
end
def html(output)
->{ ['200', {'Content-Type' => 'text/html'}, [output]] }
end
TestApp = Rack::Builder.new do
map '/' do
run ->(env) { ['200', {'Content-Type' => 'text/plain'}, ['BBQ']] }
end
map '/miracle' do
run ->(env) { ['200', {'Content-Type' => 'text/plain'}, ['MIRACLE']] }
end
map '/ponycorns' do
run ->(env) { ['200', {'Content-Type' => 'text/html'}, [<
Pink
More ponycorns
HTML
]] }
end
end
class TestUser < Bbq::Core::TestUser
module Commenter
def comment
end
end
module VideoUploader
def upload
end
end
module CommentModerator
def moderate
end
end
end
class TestUserTest < Minitest::Test
def setup
Bbq::Core.app = TestApp
end
def teardown
Bbq::Core.app = nil
end
def test_capybara_dsl_methods
user = TestUser.new
Capybara::Session::DSL_METHODS.each do |m|
assert user.respond_to?(m)
end
end
def test_driver_option
user = TestUser.new(:driver => :rack_test_the_other)
assert_equal :rack_test_the_other, user.page.mode
end
def test_roles
user = TestUser.new
%w(comment upload moderate).each { |m| assert !user.respond_to?(m) }
user.roles(:commenter, "comment_moderator")
%w(comment moderate).each { |m| assert user.respond_to?(m) }
assert !user.respond_to?(:upload)
user.roles(:video_uploader)
%w(comment upload moderate).each { |m| assert user.respond_to?(m) }
end
def test_explicit_user_eyes
@user = TestUser.new
@user.visit "/miracle"
assert @user.not_see?("BBQ")
assert @user.see?("MIRACLE")
end
def test_user_eyes_within_scope
@user = TestUser.new
@user.visit "/ponycorns"
assert @user.see?("Pink", :within => "#unicorns")
assert ! @user.see?("Violet", :within => "#unicorns")
assert @user.not_see?("Violet", :within => "#unicorns")
assert ! @user.not_see?("Pink", :within => "#unicorns")
@user.fill_in "color", :with => "red", :within => "#new_pony"
assert_raises Capybara::ElementNotFound do
@user.fill_in "color", :with => "red", :within => "#new_unicorn"
end
@user.click_link "More ponycorns"
end
end