Skip to content

Commit

Permalink
Improve shop feature test
Browse files Browse the repository at this point in the history
  • Loading branch information
Yasuhiro Asaka committed Aug 9, 2016
1 parent 0a993d0 commit 9fec45d
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 64 deletions.
75 changes: 41 additions & 34 deletions test/feature/shop_test.rb
Expand Up @@ -52,50 +52,57 @@ def test_shopping_cart_calculation_with_publications
link.click
end

#def test_checkout_fails_without_user_info
# assert_match('/en/communication/shop', browser.url)
def test_checkout_fails_without_user_info
assert_match('/en/communication/shop', browser.url)

# item = browser.text_field(:id, 'article[113]')
# item.set('2')
# item.send_keys(:tab)
item = browser.text_field(:id, 'article[113]')
item.set('2')
item.send_keys(:tab)

# item = browser.text_field(:id, 'article[114]')
# item.set('1')
# item.send_keys(:tab)
item = browser.text_field(:id, 'article[114]')
item.set('1')
item.send_keys(:tab)

# #link = browser.button(:text, 'Order item(s)')
# #link.click
link = browser.button(:text, 'Order item(s)')
link.click

# assert(browser.text.include?(
# 'Please fill out the fields that are marked with red.'))
#end
assert(browser.text.include?(
'Please fill out the fields that are marked with red.'))

# def test_checkout_fails_with_validation_error
# assert_match('/en/communication/shop', browser.url)
link = browser.link(:text, 'Remove all items')
link.click
end

# item = browser.text_field(:id, 'article[113]')
# item.set('2')
# item.send_keys(:tab)
def test_checkout_fails_with_validation_error
assert_match('/en/communication/shop', browser.url)

# item = browser.text_field(:id, 'article[114]')
# item.set('1')
# item.send_keys(:tab)
item = browser.text_field(:id, 'article[113]')
item.set('2')
item.send_keys(:tab)

item = browser.text_field(:id, 'article[114]')
item.set('1')
item.send_keys(:tab)

# browser.text_field(:name, 'name').set('John Smith')
# browser.text_field(:name, 'surname').set('Mr.')
# browser.text_field(:name, 'postal_code').set('INVALID')
# browser.text_field(:name, 'city').set('Zürich')
# browser.text_field(:name, 'country').set('Switzerland')
# browser.text_field(:name, 'email').set('john@example.org')
browser.text_field(:name, 'name').set('John Smith')
browser.text_field(:name, 'surname').set('Mr.')
browser.text_field(:name, 'street').set('Winterthurerstrasse')
browser.text_field(:name, 'postal_code').set('A')
browser.text_field(:name, 'city').set('Zürich')
browser.text_field(:name, 'country').set('Switzerland')
browser.text_field(:name, 'email').set('john@example.org')

# link = browser.button(:text, 'Order item(s)')
# link.click
link = browser.button(:text, 'Order item(s)')
link.click

assert(browser.text.include?(
'Your Postal Code seems to be invalid.'))
assert(browser.text.include?(
'Sorry, but your email-address seems to be invalid. Please try again.'))

# assert(browser.text.include?(
# 'Your Postal Code seems to be invalid.'))
# assert(browser.text.include?(
# 'Sorry, but your email-address seems to be invalid. Please try again.'))
# end
link = browser.link(:text, 'Remove all items')
link.click
end

#def test_checkout
# @browser.type "article[113]", "2"
Expand Down
10 changes: 8 additions & 2 deletions test/support/stub/http_server.rb
Expand Up @@ -34,6 +34,10 @@ def headers_in
def uri
@uri || unparsed_uri
end

def content_length
return Integer(self['content-length'] || '0')
end
end

class HTTPResponse
Expand Down Expand Up @@ -121,8 +125,9 @@ def self.http_server(drburi)

davaz = Proc.new do |req, resp|
resp.chunked = true
if req.uri == '/favicon.ico'
resp.chunked = true
if req.uri =~ /\.css\z/
resp.body = ''
elsif req.uri == '/favicon.ico'
resp.body = File.open(File.join(doc, req.uri))
else
req.server = server
Expand All @@ -136,6 +141,7 @@ def self.http_server(drburi)
sbsm.cgi.env_table['SERVER_NAME'] = \
"#{TEST_SRV_URI.host}:#{TEST_SRV_URI.port}"
sbsm.cgi.env_table['REQUEST_METHOD'] = req.request_method
sbsm.cgi.env_table['CONTENT_LENGTH'] = req.content_length.to_s
sbsm.cgi.cookies['_session_id'] = 'test:preset-session-id'
sbsm.cgi.output = output
sbsm.process
Expand Down
66 changes: 41 additions & 25 deletions test/support/test_case.rb
Expand Up @@ -9,20 +9,14 @@ module TestCase
def before_setup
super

@headless ||= Headless.new
@headless.start
at_exit do
@headless.destroy
end

unless @server
@http_server ||= startup_server
trap('INT') { @http_server.shutdown }
@http_server.shutdown
@server = Thread.new { @http_server.start }
if TEST_HEADLESS && !@headless
@headless = Headless.new
@headless.start
at_exit { @headless.destroy if @headless }
end

@browser ||= open_browser
startup_server
boot_browser
end

def setup
Expand All @@ -34,48 +28,70 @@ def teardown
end

def after_teardown
shutdown_server if @server
close_browser if @browser
@headless.destroy
close_browser
shutdown_server

if TEST_HEADLESS && @headless
@headless.destroy
@headless = nil
end

super
end

private

def startup_server
return if @server

drb_url = TEST_APP_URI.to_s
app = DaVaz::Util::App.new
app.db_manager = DaVaz::Stub::DbManager.new
app.yus_server = DaVaz::Stub::YusServer.new

server = DaVaz::Util::DRbServer.new(app)
@drb ||= Thread.new do
@drb = Thread.new do
begin
@drb_server ||= DRb.start_service(drb_url, server)
@drb_server = DRb.start_service(drb_url, server)
rescue Exception => e
puts e.class
puts e.message
puts e.backtrace
$stdout.puts e.class
$stdout.puts e.message
$stdout.puts e.backtrace
raise
end
end
@drb.abort_on_exception = true
Stub.http_server(drb_url)
#@drb.abort_on_exception = true
@http_server = Stub.http_server(drb_url)
@http_server.shutdown
trap('INT') { @http_server.shutdown }

@server = Thread.new { @http_server.start }
end

def shutdown_server
return unless @server

@http_server.shutdown
@http_server = nil
@drb_server.stop_service
@drb_server = nil
@drb.exit
@drb = nil
@server.exit
@server = nil
end

def open_browser
def boot_browser
return if @browser

client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 900
DaVaz::Browser.new(:firefox, http_client: client)
client.timeout = 90
@browser = DaVaz::Browser.new(:firefox, http_client: client)
end

def close_browser
return unless @browser

@browser.close
@browser = nil
end
Expand Down
7 changes: 4 additions & 3 deletions test/test_helper.rb
Expand Up @@ -29,9 +29,10 @@ module DaVaz::TestCase
include WaitUntil
end

TEST_SRV_URI = URI.parse(ENV['TEST_SRV_URL'] || 'http://127.0.0.1:11080')
TEST_APP_URI = URI.parse(ENV['TEST_APP_URL'] || 'druby://127.0.0.1:11081')
TEST_YUS_URI = URI.parse(ENV['TEST_YUS_URL'] || 'drbssl://127.0.0.1:10007')
TEST_HEADLESS = true
TEST_SRV_URI = URI.parse(ENV['TEST_SRV_URL'] || 'http://127.0.0.1:11080')
TEST_APP_URI = URI.parse(ENV['TEST_APP_URL'] || 'druby://127.0.0.1:11081')
TEST_YUS_URI = URI.parse(ENV['TEST_YUS_URL'] || 'drbssl://127.0.0.1:10007')

DaVaz.config.document_root = root_dir.join('doc').to_s
DaVaz.config.environment = 'test'
Expand Down

0 comments on commit 9fec45d

Please sign in to comment.