steam 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/Gemfile +2 -0
  2. data/lib/core_ext/ruby/string/camelize.rb +1 -1
  3. data/lib/core_ext/ruby/string/underscore.rb +8 -1
  4. data/lib/steam/browser/html_unit.rb +9 -5
  5. data/lib/steam/browser/html_unit/client.rb +14 -2
  6. data/lib/steam/browser/html_unit/connection.rb +10 -10
  7. data/lib/steam/browser/html_unit/web_response.rb +0 -1
  8. data/lib/steam/connection/net_http.rb +4 -4
  9. data/lib/steam/java.rb +7 -6
  10. data/lib/steam/request.rb +88 -35
  11. data/lib/steam/session/rails.rb +1 -1
  12. data/lib/steam/version.rb +1 -1
  13. metadata +23 -50
  14. data/Rakefile +0 -23
  15. data/test/all.rb +0 -3
  16. data/test/browser/html_unit/actions_test.rb +0 -183
  17. data/test/browser/html_unit/javascript_test.rb +0 -60
  18. data/test/browser/html_unit/rails_actions_test.rb +0 -150
  19. data/test/browser/html_unit_test.rb +0 -98
  20. data/test/connection/cascade_test.rb +0 -42
  21. data/test/connection/mock_test.rb +0 -58
  22. data/test/connection/rails_test.rb +0 -16
  23. data/test/connection/static_test.rb +0 -14
  24. data/test/example/webrat_compat_steps_test.rb +0 -307
  25. data/test/fixtures/html_fakes.rb +0 -191
  26. data/test/java_test.rb +0 -29
  27. data/test/playground/connection.rb +0 -19
  28. data/test/playground/dragdrop_behavior.rb +0 -60
  29. data/test/playground/drb.rb +0 -55
  30. data/test/playground/java_signature.rb +0 -22
  31. data/test/playground/nokogiri.rb +0 -15
  32. data/test/playground/put_headers.rb +0 -83
  33. data/test/playground/rack.rb +0 -11
  34. data/test/playground/rjb_bind.rb +0 -42
  35. data/test/playground/stack_level_problem.rb +0 -129
  36. data/test/playground/thread_problem.rb +0 -57
  37. data/test/playground/web_response_data.rb +0 -21
  38. data/test/playground/webrat.rb +0 -48
  39. data/test/playground/xhr_accept_headers.rb +0 -61
  40. data/test/process_test.rb +0 -55
  41. data/test/session_test.rb +0 -40
  42. data/test/test_helper.rb +0 -80
data/Rakefile DELETED
@@ -1,23 +0,0 @@
1
- $: << File.expand_path('../lib', __FILE__)
2
-
3
- require 'rake/testtask'
4
- require 'steam/version'
5
-
6
- begin
7
- require 'jeweler'
8
- Jeweler::Tasks.new do |s|
9
- s.name = 'steam'
10
- s.version = Steam::VERSION
11
- s.summary = 'Headless integration testing w/ HtmlUnit: enables testing JavaScript-driven web sites '
12
- s.email = 'svenfuchs@artweb-design.de'
13
- s.homepage = 'http://github.com/svenfuchs/steam'
14
- s.description = 'Steam is a headless integration testing tool driving HtmlUnit to enable testing JavaScript-driven web sites.'
15
- s.authors = ['Sven Fuchs', 'Clemens Kofler']
16
- s.files = FileList['[A-Z]*', 'lib/steam.rb', 'lib/{core_ext,steam}/**/*']
17
-
18
- s.add_dependency 'rjb', '>= 1.2.0'
19
- s.add_dependency 'locator', '>= 0.0.6'
20
- end
21
- rescue LoadError
22
- puts 'Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com'
23
- end
data/test/all.rb DELETED
@@ -1,3 +0,0 @@
1
- Dir[File.dirname(__FILE__) + '/**/*_test.rb'].each do |filename|
2
- require filename unless filename.include?('_locator')
3
- end
@@ -1,183 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
- require 'fixtures/html_fakes'
3
-
4
- class HtmlUnitActionsTest < Test::Unit::TestCase
5
- include Steam, HtmlFakes
6
-
7
- def setup
8
- mock = Steam::Connection::Mock.new
9
- static = Steam::Connection::Static.new(:root => FIXTURES_PATH)
10
- @browser = Steam::Browser::HtmlUnit.new(Rack::Cascade.new([static, mock]))
11
- end
12
-
13
- test "click_on clicks on an element" do
14
- perform :get, 'http://localhost:3000/', html
15
-
16
- assert_response_contains('LINK') do
17
- mock :get, 'http://localhost:3000/link', 'LINK'
18
- @browser.click_on('link')
19
- end
20
- end
21
-
22
- test "click_on clicks a button" do
23
- perform :get, 'http://localhost:3000/', html(:fields => :text)
24
-
25
- assert_response_contains('FORM') do
26
- mock :get, 'http://localhost:3000/form?field=', 'FORM'
27
- @browser.click_on(:button, 'button')
28
- end
29
- end
30
-
31
- test "click_link clicks a link" do
32
- perform :get, 'http://localhost:3000/', html
33
-
34
- assert_response_contains('LINK') do
35
- mock :get, 'http://localhost:3000/link', 'LINK'
36
- @browser.click_link('link')
37
- end
38
- end
39
-
40
- test "click_button clicks a button" do
41
- perform :get, 'http://localhost:3000/', html(:fields => :text)
42
-
43
- assert_response_contains('FORM') do
44
- mock :get, 'http://localhost:3000/form?field=', 'FORM'
45
- @browser.click_button('button')
46
- end
47
- end
48
-
49
- test "fill_in fills in a text input" do
50
- perform :get, 'http://localhost:3000/', html(:fields => :text)
51
-
52
- assert_response_contains('FIELD') do
53
- mock :get, 'http://localhost:3000/form?field=text', 'FIELD'
54
- @browser.fill_in('field', :with => 'text')
55
- @browser.click_button('button')
56
- end
57
- end
58
-
59
- test "fill_in fills in a textarea" do
60
- perform :get, 'http://localhost:3000/', html(:fields => :textarea)
61
-
62
- assert_response_contains('TEXTAREA') do
63
- mock :get, 'http://localhost:3000/form?textarea=text', 'TEXTAREA'
64
- @browser.fill_in('textarea', :with => 'text')
65
- @browser.click_button('button')
66
- end
67
- end
68
-
69
- test "check checks a checkbox" do
70
- perform :get, 'http://localhost:3000/', html(:fields => :checkbox)
71
-
72
- assert_response_contains('CHECKED') do
73
- mock :get, 'http://localhost:3000/form?checkbox=1', 'CHECKED'
74
- @browser.check('checkbox')
75
- @browser.click_button('button')
76
- end
77
- end
78
-
79
- test "uncheck unchecks a checkbox" do
80
- perform :get, 'http://localhost:3000/', html(:fields => :checkbox)
81
-
82
- assert_response_contains('FORM') do
83
- mock :get, 'http://localhost:3000/form', 'FORM'
84
- @browser.check('checkbox')
85
- @browser.uncheck('checkbox')
86
- @browser.click_button('button')
87
- end
88
- end
89
-
90
- test "choose activates a radio button" do
91
- perform :get, 'http://localhost:3000/', html(:fields => :radio)
92
-
93
- assert_response_contains('RADIO') do
94
- mock :get, 'http://localhost:3000/form?radio=radio', 'RADIO'
95
- @browser.choose('radio')
96
- @browser.click_button('button')
97
- end
98
- end
99
-
100
- test "select selects an option from a select box" do
101
- perform :get, 'http://localhost:3000/', html(:fields => :select)
102
-
103
- assert_response_contains('SELECT') do
104
- mock :get, 'http://localhost:3000/form?select=foo', 'SELECT'
105
- @browser.select('foo', :from => 'select')
106
- @browser.click_button('button')
107
- end
108
- end
109
-
110
- test "set_hidden_field sets a value to a hidden field" do
111
- perform :get, 'http://localhost:3000/', html(:fields => :hidden)
112
-
113
- assert_response_contains('SELECT') do
114
- mock :get, 'http://localhost:3000/form?hidden=foo', 'SELECT'
115
- @browser.set_hidden_field('hidden', :to => 'foo')
116
- @browser.click_button('button')
117
- end
118
- end
119
-
120
- test "attach_file sets a filename to a file field" do
121
- perform :get, 'http://localhost:3000/', html(:fields => :file)
122
-
123
- assert_response_contains('FILE') do
124
- mock :get, 'http://localhost:3000/form?file=rails.png', 'FILE'
125
- @browser.attach_file('file', "#{TEST_ROOT}/fixtures/rails.png")
126
- @browser.click_button('button')
127
- end
128
- end
129
-
130
- test "submit_form submits a form" do
131
- perform :get, 'http://localhost:3000/', html(:fields => :text)
132
-
133
- assert_response_contains('FORM') do
134
- mock :get, 'http://localhost:3000/form?field=', 'FORM'
135
- @browser.submit_form('form')
136
- end
137
- end
138
-
139
- test "drag drags an draggable and drop drops the draggable onto a droppable" do
140
- perform :get, 'http://localhost:3000/', html(:scripts => [:jquery, :jquery_ui, :drag])
141
-
142
- @browser.drag('link')
143
- @browser.drop('form')
144
- assert_equal 'DROPPED!', @browser.page.getTitleText
145
- end
146
-
147
- test "drag_and_drop drags a draggable and drops it onto a droppable" do
148
- perform :get, 'http://localhost:3000/', html(:scripts => [:jquery, :jquery_ui, :drag])
149
-
150
- @browser.drag_and_drop('link', :to => 'form')
151
- assert_equal 'DROPPED!', @browser.page.getTitleText
152
- end
153
-
154
- test "hover triggers a mouseOver event on an element" do
155
- perform :get, 'http://localhost:3000/', html(:scripts => [:jquery, :jquery_ui, :hover])
156
-
157
- @browser.hover('paragraph')
158
- assert_equal 'HOVERED!', @browser.page.getTitleText
159
- end
160
-
161
- test "focus triggers a focus event on an element" do
162
- perform :get, 'http://localhost:3000/', html(:fields => :text, :scripts => [:jquery, :jquery_ui, :focus])
163
-
164
- @browser.focus('field')
165
- assert_equal 'FOCUSED!', @browser.page.getTitleText
166
- end
167
-
168
- test "blur triggers a blur event on an element" do
169
- perform :get, 'http://localhost:3000/', html(:fields => :text, :scripts => [:jquery, :jquery_ui, :blur])
170
-
171
- @browser.focus('field')
172
- @browser.blur('field')
173
- assert_equal 'BLURRED!', @browser.page.getTitleText
174
- end
175
-
176
- test "double_click doubleclicks an element" do
177
- perform :get, 'http://localhost:3000/', html(:scripts => [:jquery, :jquery_ui, :double_click])
178
-
179
- @browser.double_click('paragraph')
180
- assert_equal 'DOUBLE CLICKED!', @browser.page.getTitleText
181
- end
182
-
183
- end
@@ -1,60 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
- require 'fixtures/html_fakes'
3
-
4
- class HtmlUnitJavascriptTest < Test::Unit::TestCase
5
- include Steam, HtmlFakes
6
-
7
- def setup
8
- @connection = Steam::Connection::Mock.new
9
- static = Steam::Connection::Static.new(:root => FIXTURES_PATH)
10
- @browser = Steam::Browser::HtmlUnit.new(Rack::Cascade.new([static, @connection]))
11
- end
12
-
13
- test "jquery: div:not([id]) selector" do
14
- html = <<-html
15
- <html>
16
- <head>
17
- <script src="/javascripts/jquery.js" type="text/javascript"></script>
18
- <script>
19
- $(document).ready(function() {
20
- $('div:not([id])').each(function() {
21
- document.title = $(this).html();
22
- });
23
- });
24
- </script>
25
- </head>
26
- <body>
27
- <div id="foo">foo</div>
28
- <div>bar</div>
29
- </body>
30
- </html>
31
- html
32
-
33
- perform(:get, 'http://localhost:3000/', html)
34
- assert_equal 'bar', @browser.page.getTitleText
35
- end
36
-
37
- test "jquery: div[id*=bar] selector" do
38
- html = <<-html
39
- <html>
40
- <head>
41
- <script src="/javascripts/jquery.js" type="text/javascript"></script>
42
- <script>
43
- $(document).ready(function() {
44
- $('div[id*=bar]').each(function() {
45
- document.title = $(this).html();
46
- });
47
- });
48
- </script>
49
- </head>
50
- <body>
51
- <div id="sidebar">foobar</div>
52
- </body>
53
- </html>
54
- html
55
-
56
- perform(:get, 'http://localhost:3000/', html)
57
- assert_equal 'foobar', @browser.page.getTitleText
58
- end
59
-
60
- end
@@ -1,150 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
- require 'fixtures/html_fakes'
3
-
4
- class HtmlUnitRailsActionsTest < Test::Unit::TestCase
5
- include Steam, HtmlFakes
6
-
7
- def setup
8
- connection = Steam::Connection::Mock.new
9
- @browser = Steam::Browser::HtmlUnit.new(connection)
10
-
11
- mock :get, "http://localhost:3000/form?event_date(1i)=2009&event_date(2i)=11&event_date(3i)=7", 'DATE'
12
- mock :get, "http://localhost:3000/form?event_datetime(1i)=2009&event_datetime(2i)=11&event_datetime(3i)=7&event_datetime(4i)=19&event_datetime(5i)=0", 'DATETIME'
13
- mock :get, "http://localhost:3000/form?event_time(4i)=19&event_time(5i)=0", 'TIME'
14
- end
15
-
16
- def test_select_date
17
- perform :get, 'http://localhost:3000/', html(:fields => :date)
18
-
19
- assert_response_contains('DATE') do
20
- @browser.select_date('7 November 2009', :from => 'event_date')
21
- @browser.submit_form('form')
22
- end
23
- end
24
-
25
- def test_select_date_works_with_date_object
26
- perform :get, 'http://localhost:3000/', html(:fields => :date)
27
-
28
- assert_response_contains('DATE') do
29
- @browser.select_date(Date.parse('7 November 2009'), :from => 'event_date')
30
- @browser.submit_form('form')
31
- end
32
- end
33
-
34
- def test_select_date_works_with_label
35
- perform :get, 'http://localhost:3000/', html(:fields => :date)
36
-
37
- assert_response_contains('DATE') do
38
- @browser.select_date('7 November 2009', :from => 'Date')
39
- @browser.submit_form('form')
40
- end
41
- end
42
-
43
- def test_select_date_works_without_from_option
44
- perform :get, 'http://localhost:3000/', html(:fields => :date)
45
-
46
- assert_response_contains('DATE') do
47
- @browser.select_date('7 November 2009')
48
- @browser.submit_form('form')
49
- end
50
- end
51
-
52
- def test_select_date_works_with_id_prefix_option
53
- perform :get, 'http://localhost:3000/', html(:fields => :date)
54
-
55
- assert_response_contains('DATE') do
56
- @browser.select_date('7 November 2009', :id_prefix => 'event_date')
57
- @browser.submit_form('form')
58
- end
59
- end
60
-
61
- def test_select_datetime
62
- perform :get, 'http://localhost:3000/', html(:fields => :datetime)
63
-
64
- assert_response_contains('DATETIME') do
65
- @browser.select_datetime('7 November 2009, 19:00', :from => 'event_datetime')
66
- @browser.submit_form('form')
67
- end
68
- end
69
-
70
- def test_select_datetime_works_with_datetime_object
71
- perform :get, 'http://localhost:3000/', html(:fields => :datetime)
72
-
73
- assert_response_contains('DATETIME') do
74
- @browser.select_datetime(Time.parse('7 November 2009, 19:00'), :from => 'event_datetime')
75
- @browser.submit_form('form')
76
- end
77
- end
78
-
79
- def test_select_datetime_works_with_label
80
- perform :get, 'http://localhost:3000/', html(:fields => :datetime)
81
-
82
- assert_response_contains('DATETIME') do
83
- @browser.select_datetime('7 November 2009, 19:00', :from => 'Datetime')
84
- @browser.submit_form('form')
85
- end
86
- end
87
-
88
- def test_select_datetime_works_without_from_option
89
- perform :get, 'http://localhost:3000/', html(:fields => :datetime)
90
-
91
- assert_response_contains('DATETIME') do
92
- @browser.select_datetime('7 November 2009, 19:00')
93
- @browser.submit_form('form')
94
- end
95
- end
96
-
97
- def test_select_datetime_works_with_id_prefix_option
98
- perform :get, 'http://localhost:3000/', html(:fields => :datetime)
99
-
100
- assert_response_contains('DATETIME') do
101
- @browser.select_datetime('7 November 2009, 19:00', :id_prefix => 'event_datetime')
102
- @browser.submit_form('form')
103
- end
104
- end
105
-
106
- def test_select_time
107
- perform :get, 'http://localhost:3000/', html(:fields => :time)
108
-
109
- assert_response_contains('TIME') do
110
- @browser.select_time('19:00', :from => 'event_time')
111
- @browser.submit_form('form')
112
- end
113
- end
114
-
115
- def test_select_time_works_with_time_object
116
- perform :get, 'http://localhost:3000/', html(:fields => :time)
117
-
118
- assert_response_contains('TIME') do
119
- @browser.select_time(Time.parse('19:00'), :from => 'event_time')
120
- @browser.submit_form('form')
121
- end
122
- end
123
-
124
- def test_select_time_works_with_label
125
- perform :get, 'http://localhost:3000/', html(:fields => :time)
126
-
127
- assert_response_contains('TIME') do
128
- @browser.select_time('19:00', :from => 'Time')
129
- @browser.submit_form('form')
130
- end
131
- end
132
-
133
- def test_select_time_works_without_from_option
134
- perform :get, 'http://localhost:3000/', html(:fields => :time)
135
-
136
- assert_response_contains('TIME') do
137
- @browser.select_time('19:00')
138
- @browser.submit_form('form')
139
- end
140
- end
141
-
142
- def test_select_time_works_with_id_prefix_option
143
- perform :get, 'http://localhost:3000/', html(:fields => :time)
144
-
145
- assert_response_contains('TIME') do
146
- @browser.select_time('19:00', :id_prefix => 'event_time')
147
- @browser.submit_form('form')
148
- end
149
- end
150
- end
@@ -1,98 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'fixtures/html_fakes'
3
- require 'locator'
4
-
5
- module HtmlUnitTests
6
- include Steam
7
-
8
- def init
9
- @connection = Connection::Mock.new
10
- @browser = Browser::HtmlUnit.new(@connection)
11
- perform(:get, 'http://localhost:3000/', '<div id="foo"><div id="bar"><a id="buz" href="">bar!</a></div></div>')
12
- end
13
-
14
- def locate(*args, &block)
15
- @browser.locate(*args, &block)
16
- end
17
-
18
- def within(*args, &block)
19
- @browser.within(*args, &block)
20
- end
21
-
22
- test 'locate with node type' do
23
- element = locate(:a)
24
- assert_equal 'a', element.name
25
- end
26
-
27
- test 'locate with attributes' do
28
- element = locate(:id => 'buz')
29
- assert_equal 'a', element.name
30
- end
31
-
32
- test 'locate with search text' do
33
- element = locate(:a, 'bar!')
34
- assert_equal 'a', element.name
35
- end
36
-
37
- test 'locate with xpath' do
38
- element = locate(:xpath => '//div/div/a')
39
- assert_equal 'a', element.name
40
- end
41
-
42
- test 'locate with css' do
43
- element = locate(:css => '#foo #bar a')
44
- assert_equal 'a', element.name
45
- end
46
-
47
- test 'within with node type' do
48
- element = within(:div) { within(:div) { locate(:a) } }
49
- assert_equal 'a', element.name
50
- end
51
-
52
- test 'within with attributes' do
53
- element = within(:id => 'foo') { within(:id => 'bar') { locate(:a) } }
54
- assert_equal 'a', element.name
55
- end
56
-
57
- test 'within with xpath' do
58
- element = within('//div/div') { locate(:a) }
59
- assert_equal 'a', element.name
60
- end
61
-
62
- test 'within with css' do
63
- element = within('#foo #bar') { locate(:a) }
64
- assert_equal 'a', element.name
65
- end
66
-
67
- test 'nesting locate' do
68
- element = locate(:id => 'foo') { locate(:id => 'bar') { locate(:a) } }
69
- assert_equal 'a', element.name
70
- end
71
-
72
- test 'nesting within' do
73
- element = within(:id => 'foo') { within(:id => 'bar') { locate(:a) } }
74
- assert_equal 'a', element.name
75
- end
76
- end
77
-
78
- class HtmlUnitWithNokogiriAdapterTest < Test::Unit::TestCase
79
- include Steam, HtmlUnitTests
80
-
81
- def setup
82
- init
83
- end
84
- end
85
-
86
- # class HtmlUnitWithHtmlUnitAdapterTest < Test::Unit::TestCase
87
- # include Steam, HtmlUnitTests
88
- #
89
- # def setup
90
- # @old_adapter, Locator::Dom.adapter = Locator::Dom.adapter, Locator::Dom::Htmlunit
91
- # init
92
- # end
93
- #
94
- # def teardown
95
- # Locator::Dom.adapter = @old_adapter
96
- # end
97
- # end
98
-