diabolo-webrat 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. data/History.txt +8 -0
  2. data/Rakefile +5 -1
  3. data/lib/webrat/core/locators/field_labeled_locator.rb +1 -1
  4. data/lib/webrat/core/locators/label_locator.rb +1 -1
  5. data/lib/webrat/core_extensions/tcp_socket.rb +27 -0
  6. data/lib/webrat/selenium/application_server.rb +71 -0
  7. data/lib/webrat/selenium/merb_application_server.rb +48 -0
  8. data/lib/webrat/selenium/rails_application_server.rb +42 -0
  9. data/lib/webrat/selenium/selenium_rc_server.rb +80 -0
  10. data/lib/webrat/selenium/sinatra_application_server.rb +35 -0
  11. data/spec/fakes/test_session.rb +34 -0
  12. data/spec/integration/merb/app/controllers/application.rb +2 -0
  13. data/spec/integration/merb/app/controllers/exceptions.rb +13 -0
  14. data/spec/integration/merb/app/controllers/testing.rb +18 -0
  15. data/spec/integration/merb/config/environments/development.rb +15 -0
  16. data/spec/integration/merb/config/environments/rake.rb +11 -0
  17. data/spec/integration/merb/config/environments/test.rb +14 -0
  18. data/spec/integration/merb/config/init.rb +25 -0
  19. data/spec/integration/merb/config/rack.rb +11 -0
  20. data/spec/integration/merb/config/router.rb +33 -0
  21. data/spec/integration/merb/spec/spec_helper.rb +24 -0
  22. data/spec/integration/merb/spec/webrat_spec.rb +32 -0
  23. data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
  24. data/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
  25. data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
  26. data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
  27. data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
  28. data/spec/integration/rails/app/controllers/application.rb +15 -0
  29. data/spec/integration/rails/app/controllers/webrat_controller.rb +39 -0
  30. data/spec/integration/rails/config/boot.rb +109 -0
  31. data/spec/integration/rails/config/environment.rb +12 -0
  32. data/spec/integration/rails/config/environments/development.rb +17 -0
  33. data/spec/integration/rails/config/environments/selenium.rb +22 -0
  34. data/spec/integration/rails/config/environments/test.rb +22 -0
  35. data/spec/integration/rails/config/initializers/inflections.rb +10 -0
  36. data/spec/integration/rails/config/initializers/mime_types.rb +5 -0
  37. data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
  38. data/spec/integration/rails/config/routes.rb +14 -0
  39. data/spec/integration/rails/test/integration/webrat_test.rb +80 -0
  40. data/spec/integration/rails/test/test_helper.rb +25 -0
  41. data/spec/integration/sinatra/classic_app.rb +64 -0
  42. data/spec/integration/sinatra/modular_app.rb +16 -0
  43. data/spec/integration/sinatra/test/classic_app_test.rb +37 -0
  44. data/spec/integration/sinatra/test/modular_app_test.rb +18 -0
  45. data/spec/integration/sinatra/test/test_helper.rb +16 -0
  46. data/spec/private/core/configuration_spec.rb +104 -0
  47. data/spec/private/core/field_spec.rb +67 -0
  48. data/spec/private/core/link_spec.rb +24 -0
  49. data/spec/private/core/logging_spec.rb +10 -0
  50. data/spec/private/core/session_spec.rb +198 -0
  51. data/spec/private/mechanize/mechanize_session_spec.rb +81 -0
  52. data/spec/private/merb/merb_session_spec.rb +42 -0
  53. data/spec/private/nokogiri_spec.rb +77 -0
  54. data/spec/private/rails/attaches_file_spec.rb +81 -0
  55. data/spec/private/rails/rails_session_spec.rb +110 -0
  56. data/spec/public/basic_auth_spec.rb +24 -0
  57. data/spec/public/check_spec.rb +191 -0
  58. data/spec/public/choose_spec.rb +118 -0
  59. data/spec/public/click_area_spec.rb +106 -0
  60. data/spec/public/click_button_spec.rb +502 -0
  61. data/spec/public/click_link_spec.rb +541 -0
  62. data/spec/public/fill_in_spec.rb +209 -0
  63. data/spec/public/locators/field_by_xpath_spec.rb +19 -0
  64. data/spec/public/locators/field_labeled_spec.rb +172 -0
  65. data/spec/public/locators/field_with_id_spec.rb +16 -0
  66. data/spec/public/matchers/contain_spec.rb +114 -0
  67. data/spec/public/matchers/have_selector_spec.rb +135 -0
  68. data/spec/public/matchers/have_tag_spec.rb +39 -0
  69. data/spec/public/matchers/have_xpath_spec.rb +123 -0
  70. data/spec/public/reload_spec.rb +10 -0
  71. data/spec/public/save_and_open_spec.rb +51 -0
  72. data/spec/public/select_date_spec.rb +112 -0
  73. data/spec/public/select_datetime_spec.rb +137 -0
  74. data/spec/public/select_spec.rb +261 -0
  75. data/spec/public/select_time_spec.rb +100 -0
  76. data/spec/public/set_hidden_field_spec.rb +5 -0
  77. data/spec/public/submit_form_spec.rb +5 -0
  78. data/spec/public/visit_spec.rb +58 -0
  79. data/spec/public/within_spec.rb +177 -0
  80. data/spec/spec_helper.rb +50 -0
  81. metadata +90 -25
@@ -0,0 +1,118 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe "choose" do
4
+ it "should fail if no radio buttons found" do
5
+ with_html <<-HTML
6
+ <html>
7
+ <form method="post" action="/login">
8
+ </form>
9
+ </html>
10
+ HTML
11
+
12
+ lambda { choose "first option" }.should raise_error(Webrat::NotFoundError)
13
+ end
14
+
15
+ it "should fail if input is not a radio button" do
16
+ with_html <<-HTML
17
+ <html>
18
+ <form method="post" action="/login">
19
+ <input type="text" name="first_option" />
20
+ </form>
21
+ </html>
22
+ HTML
23
+
24
+ lambda { choose "first_option" }.should raise_error(Webrat::NotFoundError)
25
+ end
26
+
27
+ it "should check rails style radio buttons" do
28
+ with_html <<-HTML
29
+ <html>
30
+ <form method="get" action="/login">
31
+ <input id="user_gender_male" name="user[gender]" type="radio" value="M" />
32
+ <label for="user_gender_male">Male</label>
33
+ <input id="user_gender_female" name="user[gender]" type="radio" value="F" />
34
+ <label for="user_gender_female">Female</label>
35
+ <input type="submit" />
36
+ </form>
37
+ </html>
38
+ HTML
39
+ webrat_session.should_receive(:get).with("/login", "user" => {"gender" => "M"})
40
+ choose "Male"
41
+ click_button
42
+ end
43
+
44
+ it "should only submit last chosen value" do
45
+ with_html <<-HTML
46
+ <html>
47
+ <form method="get" action="/login">
48
+ <input id="user_gender_male" name="user[gender]" type="radio" value="M" />
49
+ <label for="user_gender_male">Male</label>
50
+ <input id="user_gender_female" name="user[gender]" type="radio" value="F" />
51
+ <label for="user_gender_female">Female</label>
52
+ <input type="submit" />
53
+ </form>
54
+ </html>
55
+ HTML
56
+ webrat_session.should_receive(:get).with("/login", "user" => {"gender" => "M"})
57
+ choose "Female"
58
+ choose "Male"
59
+ click_button
60
+ end
61
+
62
+ it "should fail if the radio button is disabled" do
63
+ with_html <<-HTML
64
+ <html>
65
+ <form method="post" action="/login">
66
+ <input type="radio" name="first_option" disabled="disabled" />
67
+ <input type="submit" />
68
+ </form>
69
+ </html>
70
+ HTML
71
+
72
+ lambda { choose "first_option" }.should raise_error(Webrat::DisabledFieldError)
73
+ end
74
+
75
+ it "should result in the value on being posted if not specified" do
76
+ with_html <<-HTML
77
+ <html>
78
+ <form method="post" action="/login">
79
+ <input type="radio" name="first_option" />
80
+ <input type="submit" />
81
+ </form>
82
+ </html>
83
+ HTML
84
+ webrat_session.should_receive(:post).with("/login", "first_option" => "on")
85
+ choose "first_option"
86
+ click_button
87
+ end
88
+
89
+ it "should result in the value on being posted if not specified and checked by default" do
90
+ with_html <<-HTML
91
+ <html>
92
+ <form method="post" action="/login">
93
+ <input type="radio" name="first_option" checked="checked"/>
94
+ <input type="submit" />
95
+ </form>
96
+ </html>
97
+ HTML
98
+ webrat_session.should_receive(:post).with("/login", "first_option" => "on")
99
+ click_button
100
+ end
101
+
102
+ it "should result in the value of the selected radio button being posted when a subsequent one is checked by default" do
103
+ with_html <<-HTML
104
+ <html>
105
+ <form method="post" action="/login">
106
+ <input id="user_gender_male" name="user[gender]" type="radio" value="M" />
107
+ <label for="user_gender_male">Male</label>
108
+ <input id="user_gender_female" name="user[gender]" type="radio" value="F" checked="checked" />
109
+ <label for="user_gender_female">Female</label>
110
+ <input type="submit" />
111
+ </form>
112
+ </html>
113
+ HTML
114
+ webrat_session.should_receive(:post).with("/login", "user" => {"gender" => "M"})
115
+ choose "Male"
116
+ click_button
117
+ end
118
+ end
@@ -0,0 +1,106 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe "click_area" do
4
+ it "should use get by default" do
5
+ with_html <<-HTML
6
+ <html>
7
+ <map name="map_de" id="map_de">
8
+ <area href="/page" title="Berlin" id="berlin" shape="poly" alt="Berlin" coords="180,89,180" />
9
+ </map>
10
+ </html>
11
+ HTML
12
+ webrat_session.should_receive(:get).with("/page", {})
13
+ click_area "Berlin"
14
+ end
15
+
16
+ it "should assert valid response" do
17
+ with_html <<-HTML
18
+ <html>
19
+ <map name="map_de" id="map_de">
20
+ <area href="/page" title="Berlin" id="berlin" shape="poly" alt="Berlin" coords="180,89,180" />
21
+ </map>
22
+ </html>
23
+ HTML
24
+ webrat_session.response_code = 501
25
+ lambda { click_area "Berlin" }.should raise_error(Webrat::PageLoadError)
26
+ end
27
+
28
+ [200, 300, 400, 499].each do |status|
29
+ it "should consider the #{status} status code as success" do
30
+ with_html <<-HTML
31
+ <html>
32
+ <map name="map_de" id="map_de">
33
+ <area href="/page" title="Berlin" id="berlin" shape="poly" alt="Berlin" coords="180,89,180" />
34
+ </map>
35
+ </html>
36
+ HTML
37
+ webrat_session.stub!(:redirect? => false)
38
+ webrat_session.response_code = status
39
+ lambda { click_area "Berlin" }.should_not raise_error
40
+ end
41
+ end
42
+
43
+ it "should fail if the area doesn't exist" do
44
+ with_html <<-HTML
45
+ <html>
46
+ <map name="map_de" id="map_de">
47
+ <area href="/page" title="Berlin" id="berlin" shape="poly" alt="Berlin" coords="180,89,180" />
48
+ </map>
49
+ </html>
50
+ HTML
51
+
52
+ lambda {
53
+ click_area "Missing area"
54
+ }.should raise_error(Webrat::NotFoundError)
55
+ end
56
+
57
+ it "should not be case sensitive" do
58
+ with_html <<-HTML
59
+ <html>
60
+ <map name="map_de" id="map_de">
61
+ <area href="/page" title="Berlin" id="berlin" shape="poly" alt="Berlin" coords="180,89,180" />
62
+ </map>
63
+ </html>
64
+ HTML
65
+ webrat_session.should_receive(:get).with("/page", {})
66
+ click_area "berlin"
67
+ end
68
+
69
+
70
+ it "should follow relative links" do
71
+ webrat_session.stub!(:current_url => "/page")
72
+ with_html <<-HTML
73
+ <html>
74
+ <map name="map_de" id="map_de">
75
+ <area href="sub" title="Berlin" id="berlin" shape="poly" alt="Berlin" coords="180,89,180" />
76
+ </map>
77
+ </html>
78
+ HTML
79
+ webrat_session.should_receive(:get).with("/page/sub", {})
80
+ click_area "Berlin"
81
+ end
82
+
83
+ it "should follow fully qualified local links" do
84
+ with_html <<-HTML
85
+ <html>
86
+ <map name="map_de" id="map_de">
87
+ <area href="http://www.example.com/page" title="Berlin" id="berlin" shape="poly" alt="Berlin" coords="180,89,180" />
88
+ </map>
89
+ </html>
90
+ HTML
91
+ webrat_session.should_receive(:get).with("http://www.example.com/page", {})
92
+ click_area "Berlin"
93
+ end
94
+
95
+ it "should follow query parameters" do
96
+ with_html <<-HTML
97
+ <html>
98
+ <map name="map_de" id="map_de">
99
+ <area href="/page?foo=bar" title="Berlin" id="berlin" shape="poly" alt="Berlin" coords="180,89,180" />
100
+ </map>
101
+ </html>
102
+ HTML
103
+ webrat_session.should_receive(:get).with("/page?foo=bar", {})
104
+ click_area "Berlin"
105
+ end
106
+ end