metry 1.0.0

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 (377) hide show
  1. data/History.txt +5 -0
  2. data/Manifest.txt +376 -0
  3. data/README.txt +62 -0
  4. data/Rakefile +23 -0
  5. data/TODO +10 -0
  6. data/example/example.rb +22 -0
  7. data/features/app_tracking.feature +11 -0
  8. data/features/basic_tracking.feature +88 -0
  9. data/features/sample_application.feature +12 -0
  10. data/features/step_definitions/tracking.rb +35 -0
  11. data/features/step_definitions/web.rb +31 -0
  12. data/features/support/env.rb +22 -0
  13. data/lib/metry.rb +19 -0
  14. data/lib/metry/experiment.rb +25 -0
  15. data/lib/metry/memory.rb +27 -0
  16. data/lib/metry/rack/tracking.rb +51 -0
  17. data/lib/metry/tokyo.rb +153 -0
  18. data/radiant/example/CHANGELOG +611 -0
  19. data/radiant/example/CONTRIBUTORS +168 -0
  20. data/radiant/example/INSTALL +38 -0
  21. data/radiant/example/LICENSE +21 -0
  22. data/radiant/example/README +60 -0
  23. data/radiant/example/Rakefile +21 -0
  24. data/radiant/example/config/boot.rb +161 -0
  25. data/radiant/example/config/database.yml +20 -0
  26. data/radiant/example/config/environment.rb +83 -0
  27. data/radiant/example/config/environments/cucumber.rb +18 -0
  28. data/radiant/example/config/environments/development.rb +17 -0
  29. data/radiant/example/config/environments/production.rb +19 -0
  30. data/radiant/example/config/environments/test.rb +36 -0
  31. data/radiant/example/config/routes.rb +1 -0
  32. data/radiant/example/db/schema.rb +112 -0
  33. data/radiant/example/features/metry.feature +139 -0
  34. data/radiant/example/features/step_definitions/experiments.rb +12 -0
  35. data/radiant/example/features/step_definitions/radiant.rb +14 -0
  36. data/radiant/example/features/step_definitions/tracking.rb +35 -0
  37. data/radiant/example/features/step_definitions/web.rb +22 -0
  38. data/radiant/example/features/support/env.rb +52 -0
  39. data/radiant/example/public/.htaccess +40 -0
  40. data/radiant/example/public/404.html +8 -0
  41. data/radiant/example/public/500.html +8 -0
  42. data/radiant/example/public/dispatch.cgi +10 -0
  43. data/radiant/example/public/dispatch.fcgi +24 -0
  44. data/radiant/example/public/dispatch.rb +10 -0
  45. data/radiant/example/public/favicon.ico +0 -0
  46. data/radiant/example/public/images/admin/add-child.png +0 -0
  47. data/radiant/example/public/images/admin/brown-bottom-line.gif +0 -0
  48. data/radiant/example/public/images/admin/clear-page-cache.png +0 -0
  49. data/radiant/example/public/images/admin/collapse.png +0 -0
  50. data/radiant/example/public/images/admin/expand.png +0 -0
  51. data/radiant/example/public/images/admin/layout.png +0 -0
  52. data/radiant/example/public/images/admin/minus.png +0 -0
  53. data/radiant/example/public/images/admin/new-homepage.png +0 -0
  54. data/radiant/example/public/images/admin/new-layout.png +0 -0
  55. data/radiant/example/public/images/admin/new-snippet.png +0 -0
  56. data/radiant/example/public/images/admin/new-user.png +0 -0
  57. data/radiant/example/public/images/admin/page.png +0 -0
  58. data/radiant/example/public/images/admin/plus.png +0 -0
  59. data/radiant/example/public/images/admin/remove-disabled.png +0 -0
  60. data/radiant/example/public/images/admin/remove.png +0 -0
  61. data/radiant/example/public/images/admin/snippet.png +0 -0
  62. data/radiant/example/public/images/admin/spinner.gif +0 -0
  63. data/radiant/example/public/images/admin/view-site.gif +0 -0
  64. data/radiant/example/public/images/admin/virtual-page.png +0 -0
  65. data/radiant/example/public/javascripts/admin/admin.js +149 -0
  66. data/radiant/example/public/javascripts/admin/ruledtable.js +13 -0
  67. data/radiant/example/public/javascripts/admin/sitemap.js +132 -0
  68. data/radiant/example/public/javascripts/admin/tabcontrol.js +133 -0
  69. data/radiant/example/public/javascripts/application.js +2 -0
  70. data/radiant/example/public/javascripts/controls.js +963 -0
  71. data/radiant/example/public/javascripts/dragdrop.js +973 -0
  72. data/radiant/example/public/javascripts/effects.js +1128 -0
  73. data/radiant/example/public/javascripts/pngfix.js +39 -0
  74. data/radiant/example/public/javascripts/prototype.js +4320 -0
  75. data/radiant/example/public/javascripts/string.js +17 -0
  76. data/radiant/example/public/robots.txt +1 -0
  77. data/radiant/example/public/stylesheets/admin/main.css +640 -0
  78. data/radiant/example/script/about +3 -0
  79. data/radiant/example/script/autospec +5 -0
  80. data/radiant/example/script/breakpointer +3 -0
  81. data/radiant/example/script/console +3 -0
  82. data/radiant/example/script/cucumber +8 -0
  83. data/radiant/example/script/dbconsole +3 -0
  84. data/radiant/example/script/extension +5 -0
  85. data/radiant/example/script/generate +18 -0
  86. data/radiant/example/script/performance/benchmarker +3 -0
  87. data/radiant/example/script/performance/profiler +3 -0
  88. data/radiant/example/script/performance/request +3 -0
  89. data/radiant/example/script/process/inspector +3 -0
  90. data/radiant/example/script/process/reaper +3 -0
  91. data/radiant/example/script/process/spawner +3 -0
  92. data/radiant/example/script/process/spinner +3 -0
  93. data/radiant/example/script/runner +3 -0
  94. data/radiant/example/script/server +3 -0
  95. data/radiant/example/script/spec +5 -0
  96. data/radiant/example/script/spec_server +116 -0
  97. data/radiant/example/script/version +5 -0
  98. data/radiant/extension/README +3 -0
  99. data/radiant/extension/Rakefile +120 -0
  100. data/radiant/extension/lib/metry_tags.rb +25 -0
  101. data/radiant/extension/lib/tasks/metry_extension_tasks.rake +28 -0
  102. data/radiant/extension/metry_extension.rb +24 -0
  103. data/test/shared.rb +6 -0
  104. data/test/test_tokyo.rb +14 -0
  105. data/vendor/rufus-tokyo/CHANGELOG.txt +112 -0
  106. data/vendor/rufus-tokyo/CREDITS.txt +27 -0
  107. data/vendor/rufus-tokyo/LICENSE.txt +21 -0
  108. data/vendor/rufus-tokyo/README.txt +310 -0
  109. data/vendor/rufus-tokyo/Rakefile +118 -0
  110. data/vendor/rufus-tokyo/TODO.txt +25 -0
  111. data/vendor/rufus-tokyo/doc/decision_table.numbers +0 -0
  112. data/vendor/rufus-tokyo/doc/rdoc-style.css +320 -0
  113. data/vendor/rufus-tokyo/lib/rufus-edo.rb +3 -0
  114. data/vendor/rufus-tokyo/lib/rufus-tokyo.rb +3 -0
  115. data/vendor/rufus-tokyo/lib/rufus/edo.rb +39 -0
  116. data/vendor/rufus-tokyo/lib/rufus/edo/README.txt +106 -0
  117. data/vendor/rufus-tokyo/lib/rufus/edo/cabcore.rb +333 -0
  118. data/vendor/rufus-tokyo/lib/rufus/edo/cabinet/abstract.rb +219 -0
  119. data/vendor/rufus-tokyo/lib/rufus/edo/cabinet/table.rb +159 -0
  120. data/vendor/rufus-tokyo/lib/rufus/edo/error.rb +36 -0
  121. data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant.rb +4 -0
  122. data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant/abstract.rb +137 -0
  123. data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant/table.rb +141 -0
  124. data/vendor/rufus-tokyo/lib/rufus/edo/tabcore.rb +567 -0
  125. data/vendor/rufus-tokyo/lib/rufus/tokyo.rb +58 -0
  126. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/abstract.rb +568 -0
  127. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/lib.rb +230 -0
  128. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/table.rb +753 -0
  129. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/util.rb +425 -0
  130. data/vendor/rufus-tokyo/lib/rufus/tokyo/config.rb +161 -0
  131. data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia.rb +43 -0
  132. data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia/lib.rb +65 -0
  133. data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia/words.rb +71 -0
  134. data/vendor/rufus-tokyo/lib/rufus/tokyo/hmethods.rb +111 -0
  135. data/vendor/rufus-tokyo/lib/rufus/tokyo/query.rb +102 -0
  136. data/vendor/rufus-tokyo/lib/rufus/tokyo/transactions.rb +74 -0
  137. data/vendor/rufus-tokyo/lib/rufus/tokyo/ttcommons.rb +59 -0
  138. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant.rb +35 -0
  139. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/abstract.rb +146 -0
  140. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/lib.rb +153 -0
  141. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/table.rb +162 -0
  142. data/vendor/rufus-tokyo/rufus-tokyo.gemspec +25 -0
  143. data/vendor/rufus-tokyo/spec/cabinet_spec.rb +472 -0
  144. data/vendor/rufus-tokyo/spec/cabinetconfig_spec.rb +82 -0
  145. data/vendor/rufus-tokyo/spec/edo_cabinet_spec.rb +447 -0
  146. data/vendor/rufus-tokyo/spec/edo_ntyrant_spec.rb +299 -0
  147. data/vendor/rufus-tokyo/spec/edo_ntyrant_table_spec.rb +462 -0
  148. data/vendor/rufus-tokyo/spec/edo_table_spec.rb +560 -0
  149. data/vendor/rufus-tokyo/spec/hmethods_spec.rb +44 -0
  150. data/vendor/rufus-tokyo/spec/incr.lua +20 -0
  151. data/vendor/rufus-tokyo/spec/spec.rb +9 -0
  152. data/vendor/rufus-tokyo/spec/spec_base.rb +23 -0
  153. data/vendor/rufus-tokyo/spec/start_tyrants.sh +26 -0
  154. data/vendor/rufus-tokyo/spec/stop_tyrants.sh +9 -0
  155. data/vendor/rufus-tokyo/spec/table_spec.rb +567 -0
  156. data/vendor/rufus-tokyo/spec/tyrant_spec.rb +309 -0
  157. data/vendor/rufus-tokyo/spec/tyrant_table_spec.rb +479 -0
  158. data/vendor/rufus-tokyo/spec/util_list_spec.rb +200 -0
  159. data/vendor/rufus-tokyo/spec/util_map_spec.rb +132 -0
  160. data/vendor/rufus-tokyo/tasks/dev.rb +70 -0
  161. data/vendor/rufus-tokyo/test/bm0.rb +353 -0
  162. data/vendor/rufus-tokyo/test/bm1_compression.rb +54 -0
  163. data/vendor/rufus-tokyo/test/con0.rb +30 -0
  164. data/vendor/rufus-tokyo/test/mem.rb +49 -0
  165. data/vendor/rufus-tokyo/test/mem1.rb +44 -0
  166. data/vendor/rufus-tokyo/test/readme0.rb +17 -0
  167. data/vendor/rufus-tokyo/test/readme1.rb +21 -0
  168. data/vendor/rufus-tokyo/test/readme2.rb +15 -0
  169. data/vendor/rufus-tokyo/test/readme3.rb +24 -0
  170. data/vendor/rufus-tokyo/test/readmes_test.sh +17 -0
  171. data/vendor/webrat/.document +4 -0
  172. data/vendor/webrat/History.txt +358 -0
  173. data/vendor/webrat/MIT-LICENSE.txt +19 -0
  174. data/vendor/webrat/README.rdoc +85 -0
  175. data/vendor/webrat/Rakefile +200 -0
  176. data/vendor/webrat/install.rb +1 -0
  177. data/vendor/webrat/lib/webrat.rb +31 -0
  178. data/vendor/webrat/lib/webrat/core.rb +14 -0
  179. data/vendor/webrat/lib/webrat/core/configuration.rb +102 -0
  180. data/vendor/webrat/lib/webrat/core/elements/area.rb +31 -0
  181. data/vendor/webrat/lib/webrat/core/elements/element.rb +33 -0
  182. data/vendor/webrat/lib/webrat/core/elements/field.rb +411 -0
  183. data/vendor/webrat/lib/webrat/core/elements/form.rb +103 -0
  184. data/vendor/webrat/lib/webrat/core/elements/label.rb +31 -0
  185. data/vendor/webrat/lib/webrat/core/elements/link.rb +93 -0
  186. data/vendor/webrat/lib/webrat/core/elements/select_option.rb +35 -0
  187. data/vendor/webrat/lib/webrat/core/locators.rb +20 -0
  188. data/vendor/webrat/lib/webrat/core/locators/area_locator.rb +38 -0
  189. data/vendor/webrat/lib/webrat/core/locators/button_locator.rb +54 -0
  190. data/vendor/webrat/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
  191. data/vendor/webrat/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
  192. data/vendor/webrat/lib/webrat/core/locators/field_locator.rb +25 -0
  193. data/vendor/webrat/lib/webrat/core/locators/field_named_locator.rb +41 -0
  194. data/vendor/webrat/lib/webrat/core/locators/form_locator.rb +19 -0
  195. data/vendor/webrat/lib/webrat/core/locators/label_locator.rb +34 -0
  196. data/vendor/webrat/lib/webrat/core/locators/link_locator.rb +74 -0
  197. data/vendor/webrat/lib/webrat/core/locators/locator.rb +20 -0
  198. data/vendor/webrat/lib/webrat/core/locators/select_option_locator.rb +59 -0
  199. data/vendor/webrat/lib/webrat/core/logging.rb +24 -0
  200. data/vendor/webrat/lib/webrat/core/matchers.rb +4 -0
  201. data/vendor/webrat/lib/webrat/core/matchers/have_content.rb +73 -0
  202. data/vendor/webrat/lib/webrat/core/matchers/have_selector.rb +74 -0
  203. data/vendor/webrat/lib/webrat/core/matchers/have_tag.rb +21 -0
  204. data/vendor/webrat/lib/webrat/core/matchers/have_xpath.rb +147 -0
  205. data/vendor/webrat/lib/webrat/core/methods.rb +63 -0
  206. data/vendor/webrat/lib/webrat/core/mime.rb +29 -0
  207. data/vendor/webrat/lib/webrat/core/save_and_open_page.rb +48 -0
  208. data/vendor/webrat/lib/webrat/core/scope.rb +350 -0
  209. data/vendor/webrat/lib/webrat/core/session.rb +290 -0
  210. data/vendor/webrat/lib/webrat/core/xml.rb +115 -0
  211. data/vendor/webrat/lib/webrat/core/xml/hpricot.rb +19 -0
  212. data/vendor/webrat/lib/webrat/core/xml/nokogiri.rb +76 -0
  213. data/vendor/webrat/lib/webrat/core/xml/rexml.rb +24 -0
  214. data/vendor/webrat/lib/webrat/core_extensions/blank.rb +58 -0
  215. data/vendor/webrat/lib/webrat/core_extensions/deprecate.rb +8 -0
  216. data/vendor/webrat/lib/webrat/core_extensions/detect_mapped.rb +12 -0
  217. data/vendor/webrat/lib/webrat/core_extensions/meta_class.rb +6 -0
  218. data/vendor/webrat/lib/webrat/core_extensions/nil_to_param.rb +5 -0
  219. data/vendor/webrat/lib/webrat/core_extensions/tcp_socket.rb +27 -0
  220. data/vendor/webrat/lib/webrat/mechanize.rb +74 -0
  221. data/vendor/webrat/lib/webrat/merb.rb +9 -0
  222. data/vendor/webrat/lib/webrat/merb_multipart_support.rb +27 -0
  223. data/vendor/webrat/lib/webrat/merb_session.rb +80 -0
  224. data/vendor/webrat/lib/webrat/rack.rb +24 -0
  225. data/vendor/webrat/lib/webrat/rack_test.rb +32 -0
  226. data/vendor/webrat/lib/webrat/rails.rb +105 -0
  227. data/vendor/webrat/lib/webrat/rspec-rails.rb +10 -0
  228. data/vendor/webrat/lib/webrat/selenium.rb +81 -0
  229. data/vendor/webrat/lib/webrat/selenium/application_server_factory.rb +40 -0
  230. data/vendor/webrat/lib/webrat/selenium/application_servers.rb +5 -0
  231. data/vendor/webrat/lib/webrat/selenium/application_servers/base.rb +46 -0
  232. data/vendor/webrat/lib/webrat/selenium/application_servers/external.rb +26 -0
  233. data/vendor/webrat/lib/webrat/selenium/application_servers/merb.rb +50 -0
  234. data/vendor/webrat/lib/webrat/selenium/application_servers/rails.rb +44 -0
  235. data/vendor/webrat/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
  236. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/button.js +19 -0
  237. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/label.js +16 -0
  238. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
  239. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlink.js +12 -0
  240. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
  241. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
  242. data/vendor/webrat/lib/webrat/selenium/matchers.rb +4 -0
  243. data/vendor/webrat/lib/webrat/selenium/matchers/have_content.rb +66 -0
  244. data/vendor/webrat/lib/webrat/selenium/matchers/have_selector.rb +49 -0
  245. data/vendor/webrat/lib/webrat/selenium/matchers/have_tag.rb +72 -0
  246. data/vendor/webrat/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
  247. data/vendor/webrat/lib/webrat/selenium/selenium_extensions.js +6 -0
  248. data/vendor/webrat/lib/webrat/selenium/selenium_rc_server.rb +84 -0
  249. data/vendor/webrat/lib/webrat/selenium/selenium_session.rb +248 -0
  250. data/vendor/webrat/lib/webrat/selenium/silence_stream.rb +18 -0
  251. data/vendor/webrat/lib/webrat/sinatra.rb +44 -0
  252. data/vendor/webrat/spec/fakes/test_session.rb +34 -0
  253. data/vendor/webrat/spec/integration/merb/Rakefile +35 -0
  254. data/vendor/webrat/spec/integration/merb/app/controllers/application.rb +2 -0
  255. data/vendor/webrat/spec/integration/merb/app/controllers/exceptions.rb +13 -0
  256. data/vendor/webrat/spec/integration/merb/app/controllers/testing.rb +27 -0
  257. data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
  258. data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
  259. data/vendor/webrat/spec/integration/merb/app/views/layout/application.html.erb +12 -0
  260. data/vendor/webrat/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
  261. data/vendor/webrat/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
  262. data/vendor/webrat/spec/integration/merb/config/environments/development.rb +15 -0
  263. data/vendor/webrat/spec/integration/merb/config/environments/rake.rb +11 -0
  264. data/vendor/webrat/spec/integration/merb/config/environments/test.rb +14 -0
  265. data/vendor/webrat/spec/integration/merb/config/init.rb +25 -0
  266. data/vendor/webrat/spec/integration/merb/config/rack.rb +11 -0
  267. data/vendor/webrat/spec/integration/merb/config/router.rb +34 -0
  268. data/vendor/webrat/spec/integration/merb/spec/spec.opts +1 -0
  269. data/vendor/webrat/spec/integration/merb/spec/spec_helper.rb +24 -0
  270. data/vendor/webrat/spec/integration/merb/spec/webrat_spec.rb +39 -0
  271. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
  272. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
  273. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
  274. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
  275. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
  276. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
  277. data/vendor/webrat/spec/integration/rack/Rakefile +5 -0
  278. data/vendor/webrat/spec/integration/rack/rack_app.rb +16 -0
  279. data/vendor/webrat/spec/integration/rack/test/test_helper.rb +20 -0
  280. data/vendor/webrat/spec/integration/rack/test/webrat_rack_test.rb +67 -0
  281. data/vendor/webrat/spec/integration/rails/Rakefile +30 -0
  282. data/vendor/webrat/spec/integration/rails/app/controllers/application.rb +15 -0
  283. data/vendor/webrat/spec/integration/rails/app/controllers/buttons_controller.rb +7 -0
  284. data/vendor/webrat/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
  285. data/vendor/webrat/spec/integration/rails/app/controllers/links_controller.rb +7 -0
  286. data/vendor/webrat/spec/integration/rails/app/controllers/webrat_controller.rb +43 -0
  287. data/vendor/webrat/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
  288. data/vendor/webrat/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
  289. data/vendor/webrat/spec/integration/rails/app/helpers/links_helper.rb +2 -0
  290. data/vendor/webrat/spec/integration/rails/app/views/buttons/show.html.erb +11 -0
  291. data/vendor/webrat/spec/integration/rails/app/views/fields/show.html.erb +9 -0
  292. data/vendor/webrat/spec/integration/rails/app/views/links/show.html.erb +5 -0
  293. data/vendor/webrat/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
  294. data/vendor/webrat/spec/integration/rails/app/views/webrat/buttons.html.erb +11 -0
  295. data/vendor/webrat/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
  296. data/vendor/webrat/spec/integration/rails/config/boot.rb +109 -0
  297. data/vendor/webrat/spec/integration/rails/config/environment.rb +12 -0
  298. data/vendor/webrat/spec/integration/rails/config/environments/development.rb +17 -0
  299. data/vendor/webrat/spec/integration/rails/config/environments/selenium.rb +22 -0
  300. data/vendor/webrat/spec/integration/rails/config/environments/test.rb +22 -0
  301. data/vendor/webrat/spec/integration/rails/config/initializers/inflections.rb +10 -0
  302. data/vendor/webrat/spec/integration/rails/config/initializers/mime_types.rb +5 -0
  303. data/vendor/webrat/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
  304. data/vendor/webrat/spec/integration/rails/config/locales/en.yml +5 -0
  305. data/vendor/webrat/spec/integration/rails/config/routes.rb +18 -0
  306. data/vendor/webrat/spec/integration/rails/public/404.html +30 -0
  307. data/vendor/webrat/spec/integration/rails/public/422.html +30 -0
  308. data/vendor/webrat/spec/integration/rails/public/500.html +33 -0
  309. data/vendor/webrat/spec/integration/rails/script/about +4 -0
  310. data/vendor/webrat/spec/integration/rails/script/console +3 -0
  311. data/vendor/webrat/spec/integration/rails/script/dbconsole +3 -0
  312. data/vendor/webrat/spec/integration/rails/script/destroy +3 -0
  313. data/vendor/webrat/spec/integration/rails/script/generate +3 -0
  314. data/vendor/webrat/spec/integration/rails/script/performance/benchmarker +3 -0
  315. data/vendor/webrat/spec/integration/rails/script/performance/profiler +3 -0
  316. data/vendor/webrat/spec/integration/rails/script/performance/request +3 -0
  317. data/vendor/webrat/spec/integration/rails/script/plugin +3 -0
  318. data/vendor/webrat/spec/integration/rails/script/process/inspector +3 -0
  319. data/vendor/webrat/spec/integration/rails/script/process/reaper +3 -0
  320. data/vendor/webrat/spec/integration/rails/script/process/spawner +3 -0
  321. data/vendor/webrat/spec/integration/rails/script/runner +3 -0
  322. data/vendor/webrat/spec/integration/rails/script/server +3 -0
  323. data/vendor/webrat/spec/integration/rails/test/integration/button_click_test.rb +80 -0
  324. data/vendor/webrat/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
  325. data/vendor/webrat/spec/integration/rails/test/integration/link_click_test.rb +27 -0
  326. data/vendor/webrat/spec/integration/rails/test/integration/webrat_test.rb +97 -0
  327. data/vendor/webrat/spec/integration/rails/test/test_helper.rb +25 -0
  328. data/vendor/webrat/spec/integration/sinatra/Rakefile +5 -0
  329. data/vendor/webrat/spec/integration/sinatra/classic_app.rb +64 -0
  330. data/vendor/webrat/spec/integration/sinatra/modular_app.rb +16 -0
  331. data/vendor/webrat/spec/integration/sinatra/test/classic_app_test.rb +37 -0
  332. data/vendor/webrat/spec/integration/sinatra/test/modular_app_test.rb +18 -0
  333. data/vendor/webrat/spec/integration/sinatra/test/test_helper.rb +16 -0
  334. data/vendor/webrat/spec/private/core/configuration_spec.rb +116 -0
  335. data/vendor/webrat/spec/private/core/field_spec.rb +85 -0
  336. data/vendor/webrat/spec/private/core/link_spec.rb +24 -0
  337. data/vendor/webrat/spec/private/core/logging_spec.rb +10 -0
  338. data/vendor/webrat/spec/private/core/session_spec.rb +195 -0
  339. data/vendor/webrat/spec/private/mechanize/mechanize_session_spec.rb +81 -0
  340. data/vendor/webrat/spec/private/merb/attaches_file_spec.rb +93 -0
  341. data/vendor/webrat/spec/private/merb/merb_session_spec.rb +61 -0
  342. data/vendor/webrat/spec/private/nokogiri_spec.rb +77 -0
  343. data/vendor/webrat/spec/private/rails/attaches_file_spec.rb +81 -0
  344. data/vendor/webrat/spec/private/rails/rails_session_spec.rb +110 -0
  345. data/vendor/webrat/spec/private/selenium/application_servers/rails_spec.rb +26 -0
  346. data/vendor/webrat/spec/public/basic_auth_spec.rb +24 -0
  347. data/vendor/webrat/spec/public/check_spec.rb +191 -0
  348. data/vendor/webrat/spec/public/choose_spec.rb +118 -0
  349. data/vendor/webrat/spec/public/click_area_spec.rb +106 -0
  350. data/vendor/webrat/spec/public/click_button_spec.rb +496 -0
  351. data/vendor/webrat/spec/public/click_link_spec.rb +511 -0
  352. data/vendor/webrat/spec/public/fill_in_spec.rb +209 -0
  353. data/vendor/webrat/spec/public/locators/field_by_xpath_spec.rb +19 -0
  354. data/vendor/webrat/spec/public/locators/field_labeled_spec.rb +172 -0
  355. data/vendor/webrat/spec/public/locators/field_with_id_spec.rb +16 -0
  356. data/vendor/webrat/spec/public/matchers/contain_spec.rb +114 -0
  357. data/vendor/webrat/spec/public/matchers/have_selector_spec.rb +142 -0
  358. data/vendor/webrat/spec/public/matchers/have_tag_spec.rb +39 -0
  359. data/vendor/webrat/spec/public/matchers/have_xpath_spec.rb +136 -0
  360. data/vendor/webrat/spec/public/reload_spec.rb +10 -0
  361. data/vendor/webrat/spec/public/save_and_open_spec.rb +70 -0
  362. data/vendor/webrat/spec/public/select_date_spec.rb +112 -0
  363. data/vendor/webrat/spec/public/select_datetime_spec.rb +137 -0
  364. data/vendor/webrat/spec/public/select_spec.rb +249 -0
  365. data/vendor/webrat/spec/public/select_time_spec.rb +100 -0
  366. data/vendor/webrat/spec/public/selenium/application_server_factory_spec.rb +49 -0
  367. data/vendor/webrat/spec/public/selenium/application_servers/external_spec.rb +12 -0
  368. data/vendor/webrat/spec/public/selenium/selenium_session_spec.rb +37 -0
  369. data/vendor/webrat/spec/public/set_hidden_field_spec.rb +5 -0
  370. data/vendor/webrat/spec/public/submit_form_spec.rb +5 -0
  371. data/vendor/webrat/spec/public/visit_spec.rb +58 -0
  372. data/vendor/webrat/spec/public/within_spec.rb +177 -0
  373. data/vendor/webrat/spec/rcov.opts +1 -0
  374. data/vendor/webrat/spec/spec.opts +2 -0
  375. data/vendor/webrat/spec/spec_helper.rb +50 -0
  376. data/vendor/webrat/vendor/selenium-server.jar +0 -0
  377. metadata +442 -0
@@ -0,0 +1,24 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+ describe Webrat::Link do
4
+ # include Webrat::Link
5
+
6
+ before do
7
+ webrat_session = mock(Webrat::TestSession)
8
+ @link_text_with_nbsp = 'Link' + [0xA0].pack("U") + 'Text'
9
+ end
10
+
11
+ it "should pass through relative urls" do
12
+ link = Webrat::Link.new(webrat_session, {"href" => "/path"})
13
+ webrat_session.should_receive(:request_page).with("/path", :get, {})
14
+ link.click
15
+ end
16
+
17
+ it "shouldnt put base url onto " do
18
+ url = "https://www.example.com/path"
19
+ webrat_session.should_receive(:request_page).with(url, :get, {})
20
+ link = Webrat::Link.new(webrat_session, {"href" => url})
21
+ link.click
22
+ end
23
+
24
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+ describe Webrat::Logging do
4
+
5
+ it "should not log if there is no logger" do
6
+ klass = Class.new
7
+ klass.send(:include, Webrat::Logging)
8
+ klass.new.debug_log "Testing"
9
+ end
10
+ end
@@ -0,0 +1,195 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+ describe Webrat::Session do
4
+
5
+ it "should not have a doc_root" do
6
+ session = Webrat::Session.new
7
+ session.doc_root.should be_nil
8
+ end
9
+
10
+ it "should expose the current_dom" do
11
+ session = Webrat::Session.new
12
+
13
+ def session.response
14
+ Object.new
15
+ end
16
+
17
+ def session.response_body
18
+ "<html></html>"
19
+ end
20
+
21
+ session.should respond_to(:current_dom)
22
+ end
23
+
24
+ it "should provide a current_page for backwards compatibility" do
25
+ session = Webrat::Session.new
26
+ current_page = session.current_page
27
+ current_page.should_not be_nil
28
+ current_page.should respond_to(:url)
29
+ end
30
+
31
+ it "should allow custom headers to be set" do
32
+ session = Webrat::Session.new
33
+ session.header('Accept', 'application/xml')
34
+
35
+ session.instance_variable_get(:@custom_headers)['Accept'].should == 'application/xml'
36
+ end
37
+
38
+ it "should return a copy of the headers to be sent" do
39
+ session = Webrat::Session.new
40
+ session.instance_eval {
41
+ @default_headers = {'HTTP_X_FORWARDED_FOR' => '192.168.1.1'}
42
+ @custom_headers = {'Accept' => 'application/xml'}
43
+ }
44
+ session.headers.should == {'HTTP_X_FORWARDED_FOR' => '192.168.1.1', 'Accept' => 'application/xml'}
45
+ end
46
+
47
+ describe "#http_accept" do
48
+ before(:each) do
49
+ webrat_session = Webrat::Session.new
50
+ end
51
+
52
+ it "should set the Accept header with the string Mime type" do
53
+ webrat_session.http_accept('application/xml')
54
+ webrat_session.headers['Accept'].should == 'application/xml'
55
+ end
56
+
57
+ it "should set the Accept head with the string value of the symbol Mime type" do
58
+ webrat_session.http_accept(:xml)
59
+ webrat_session.headers['Accept'].should == 'application/xml'
60
+ end
61
+
62
+ it "should raise an error if a symbol Mime type is passed that does not exist" do
63
+ lambda { webrat_session.http_accept(:oogabooga) }.should raise_error(ArgumentError)
64
+ end
65
+ end
66
+
67
+ describe "#request_page" do
68
+ before(:each) do
69
+ webrat_session = Webrat::Session.new
70
+ end
71
+
72
+ it "should raise an error if the request is not a success" do
73
+ webrat_session.stub!(:get)
74
+ webrat_session.stub!(:response_body => "Exception caught")
75
+ webrat_session.stub!(:response_code => 500)
76
+ webrat_session.stub!(:formatted_error => "application error")
77
+ webrat_session.stub!(:save_and_open_page)
78
+
79
+ lambda { webrat_session.request_page('some url', :get, {}) }.should raise_error(Webrat::PageLoadError)
80
+ end
81
+
82
+ it "should raise an error but not open if the request is not a success and config quashes save_and_open" do
83
+ Webrat.configure do |config|
84
+ config.open_error_files = false
85
+ end
86
+ webrat_session.stub!(:get)
87
+ webrat_session.stub!(:response_body => "Exception caught")
88
+ webrat_session.stub!(:response_code => 500)
89
+ webrat_session.stub!(:formatted_error => "application error")
90
+ webrat_session.should_not_receive(:save_and_open_page)
91
+
92
+ lambda { webrat_session.request_page('some url', :get, {}) }.should raise_error(Webrat::PageLoadError)
93
+ end
94
+
95
+ it "should now follow external redirects" do
96
+ webrat_session.should_receive(:internal_redirect?).and_return(false)
97
+
98
+ webrat_session.request_page("/oldurl", :get, {})
99
+
100
+ webrat_session.current_url.should == "/oldurl"
101
+ end
102
+ end
103
+
104
+ describe "#redirect?" do
105
+ before(:each) do
106
+ webrat_session = Webrat::Session.new
107
+ end
108
+
109
+ it "should return true if the last response was a redirect and Fixnum#/ returns a Rational" do
110
+ # This happens if the ruby-units gem has been required
111
+ Fixnum.class_eval do
112
+ alias_method :original_divide, "/".to_sym
113
+
114
+ def /(other)
115
+ Rational(self, other)
116
+ end
117
+ end
118
+
119
+ webrat_session.stub!(:response_code => 301)
120
+ webrat_session.redirect?.should be_true
121
+
122
+ Fixnum.class_eval do
123
+ alias_method "/".to_sym, :original_divide
124
+ end
125
+ end
126
+
127
+ it "should return true if the last response was a redirect" do
128
+ webrat_session.stub!(:response_code => 301)
129
+ webrat_session.redirect?.should be_true
130
+ end
131
+
132
+ it "should return false if the last response wasn't a redirect" do
133
+ webrat_session.stub!(:response_code => 200)
134
+ webrat_session.redirect?.should be_false
135
+ end
136
+ end
137
+
138
+ describe "#internal_redirect?" do
139
+ before(:each) do
140
+ webrat_session = Webrat::Session.new
141
+ end
142
+
143
+ it "should return true if the last response was a redirect and the host of the current_url matches that of the response location" do
144
+ webrat_session.stub!(:redirect? => true)
145
+ webrat_session.stub!(:current_url => "http://example.com")
146
+ webrat_session.stub!(:response_location => "http://example.com")
147
+ webrat_session.internal_redirect?.should be_true
148
+ end
149
+
150
+ it "should return true if the last response was a redirect and the hosts are the same but the subdomains are different" do
151
+ webrat_session.stub!(:redirect? => true)
152
+ webrat_session.stub!(:current_url => "http://example.com")
153
+ webrat_session.stub!(:response_location => "http://myName.example.com")
154
+ webrat_session.internal_redirect?.should be_true
155
+ end
156
+
157
+ it "should return false if the last response was not a redirect" do
158
+ webrat_session.stub!(:redirect? => false)
159
+ webrat_session.internal_redirect?.should be_false
160
+ end
161
+
162
+ it "should return false if the last response was a redirect but the host of the current_url doesn't matches that of the response location" do
163
+ webrat_session.stub!(:redirect? => true)
164
+ webrat_session.stub!(:current_url => "http://example.com")
165
+ webrat_session.stub!(:response_location => "http://google.com")
166
+ webrat_session.internal_redirect?.should be_false
167
+ end
168
+
169
+ it "should return false if the last response was a redirect but the host of the current_url doesn't matches that of the response location, but they have the same subdomain" do
170
+ webrat_session.stub!(:redirect? => true)
171
+ webrat_session.stub!(:current_url => "http://login.example.com")
172
+ webrat_session.stub!(:response_location => "http://login.google.com")
173
+ webrat_session.internal_redirect?.should be_false
174
+ end
175
+ end
176
+
177
+ describe "#redirected_to" do
178
+ before(:each) do
179
+ webrat_session = Webrat::Session.new
180
+ end
181
+
182
+ it "should return nil if not redirected" do
183
+ webrat_session.stub!(:redirect? => false)
184
+ webrat_session.redirected_to.should be_nil
185
+ end
186
+
187
+ it "should return the response_location if redirected" do
188
+ webrat_session.stub!(:redirect? => true)
189
+ webrat_session.stub!(:response_location => "http://www.example.com")
190
+ webrat_session.redirected_to.should == "http://www.example.com"
191
+ end
192
+
193
+ end
194
+
195
+ end
@@ -0,0 +1,81 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ require "webrat/mechanize"
4
+
5
+ describe Webrat::MechanizeSession do
6
+ before :each do
7
+ Webrat.configuration.mode = :mechanize
8
+ end
9
+
10
+ before(:each) do
11
+ @mech = Webrat::MechanizeSession.new
12
+ end
13
+
14
+ describe "headers method" do
15
+ it "should return empty headers for a newly initialized session" do
16
+ @mech.headers.should == {}
17
+ end
18
+ end
19
+
20
+ describe "post" do
21
+ def url
22
+ 'http://test.host/users'
23
+ end
24
+
25
+ def data
26
+ {:user => {:first_name => 'Nancy', :last_name => 'Callahan'}}
27
+ end
28
+
29
+ def flattened_data
30
+ {'user[first_name]' => 'Nancy', 'user[last_name]' => 'Callahan'}
31
+ end
32
+
33
+ it "should flatten model post data" do
34
+ mechanize = mock(:mechanize)
35
+ WWW::Mechanize.stub!(:new => mechanize)
36
+ mechanize.should_receive(:post).with(url, flattened_data)
37
+ Webrat::MechanizeSession.new.post(url, data)
38
+ end
39
+ end
40
+
41
+ describe "#absolute_url" do
42
+ before(:each) do
43
+ @session = Webrat::MechanizeSession.new
44
+ @session.stub!(:current_url).and_return(absolute_url)
45
+ end
46
+
47
+ def absolute_url
48
+ 'http://test.host/users/fred/cabbages'
49
+ end
50
+
51
+ def rooted_url
52
+ '/users/fred/cabbages'
53
+ end
54
+
55
+ def relative_url
56
+ '../../wilma'
57
+ end
58
+
59
+ it "should return unmodified url if prefixed with scheme" do
60
+ @session.absolute_url(absolute_url).should == absolute_url
61
+ end
62
+
63
+ it "should prefix scheme and hostname if url begins with /" do
64
+ @session.absolute_url(rooted_url).should == absolute_url
65
+ end
66
+
67
+ it "should resolve sibling URLs relative to current path" do
68
+ @session.absolute_url(relative_url).should == 'http://test.host/users/wilma'
69
+ end
70
+
71
+ it "should cope with sibling URLs from root of site" do
72
+ @session.stub!(:current_url).and_return('http://test.host')
73
+ @session.absolute_url(relative_url).should == 'http://test.host/wilma'
74
+ end
75
+
76
+ it "should cope with https" do
77
+ @session.stub!(:current_url).and_return('https://test.host')
78
+ @session.absolute_url(relative_url).should == 'https://test.host/wilma'
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,93 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe "attach_file with merb" do
4
+ before do
5
+ Webrat.configuration.mode = :merb
6
+ @filename = __FILE__
7
+ end
8
+
9
+ it "should fail if no file field found" do
10
+ with_html <<-HTML
11
+ <html>
12
+ <form method="post" action="/widgets">
13
+ </form>
14
+ </html>
15
+ HTML
16
+ lambda { attach_file("Doc", "/some/path") }.should raise_error(Webrat::NotFoundError)
17
+ end
18
+
19
+ it "should submit empty strings for blank file fields" do
20
+ with_html <<-HTML
21
+ <html>
22
+ <form method="post" action="/widgets">
23
+ <input type="file" id="widget_file" name="widget[file]" />
24
+ <input type="submit" />
25
+ </form>
26
+ </html>
27
+ HTML
28
+ webrat_session.should_receive(:post).with("/widgets", { "widget" => { "file" => "" } })
29
+ click_button
30
+ end
31
+
32
+ it "should submit the attached file" do
33
+ with_html <<-HTML
34
+ <html>
35
+ <form method="post" action="/widgets">
36
+ <label for="widget_file">Document</label>
37
+ <input type="file" id="widget_file" name="widget[file]" />
38
+ <input type="submit" />
39
+ </form>
40
+ </html>
41
+ HTML
42
+ webrat_session.should_receive(:post).with { |path, params|
43
+ path.should == "/widgets"
44
+ params.should have_key("widget")
45
+ params["widget"].should have_key("file")
46
+ params["widget"]["file"].should be_an_instance_of(File)
47
+ params["widget"]["file"].path.should == @filename
48
+ }
49
+ attach_file "Document", @filename
50
+ click_button
51
+ end
52
+
53
+ it "should support collections" do
54
+ with_html <<-HTML
55
+ <html>
56
+ <form method="post" action="/widgets">
57
+ <label for="widget_file1">Document</label>
58
+ <input type="file" id="widget_file1" name="widget[files][]" />
59
+ <label for="widget_file2">Spreadsheet</label>
60
+ <input type="file" id="widget_file2" name="widget[files][]" />
61
+ <input type="submit" />
62
+ </form>
63
+ </html>
64
+ HTML
65
+ webrat_session.should_receive(:post).with { |path, params|
66
+ path.should == "/widgets"
67
+ params.should have_key("widget")
68
+ params["widget"].should have_key("files")
69
+ params["widget"]["files"][0].should be_an_instance_of(File)
70
+ params["widget"]["files"][0].path.should == @filename
71
+ params["widget"]["files"][1].should be_an_instance_of(File)
72
+ params["widget"]["files"][1].path.should == @filename
73
+ }
74
+ attach_file "Document", @filename
75
+ attach_file "Spreadsheet", @filename
76
+ click_button
77
+ end
78
+
79
+ xit "should allow the content type to be specified" do
80
+ with_html <<-HTML
81
+ <html>
82
+ <form method="post" action="/widgets">
83
+ <label for="person_picture">Picture</label>
84
+ <input type="file" id="person_picture" name="person[picture]" />
85
+ <input type="submit" />
86
+ </form>
87
+ </html>
88
+ HTML
89
+ ActionController::TestUploadedFile.should_receive(:new).with(@filename, "image/png").any_number_of_times
90
+ attach_file "Picture", @filename, "image/png"
91
+ click_button
92
+ end
93
+ end
@@ -0,0 +1,61 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+ require "webrat/merb"
4
+
5
+ describe Webrat::MerbSession do
6
+ it "should not pass empty params if data is and empty hash" do
7
+ session = Webrat::MerbSession.new
8
+ response = OpenStruct.new
9
+ response.status = 200
10
+ session.should_receive(:request).with('url', {:params=> nil, :method=>"GET", :headers=>nil}).and_return(response)
11
+ session.get('url', {}, nil)
12
+ end
13
+
14
+ %w{post put delete}.each do |request_method|
15
+ it "should call do request with method #{request_method.upcase} for a #{request_method} call" do
16
+ session = Webrat::MerbSession.new
17
+ response = OpenStruct.new
18
+ response.status = 200
19
+
20
+ session.should_receive(:request).with('url', {:params=>nil, :method=>request_method.upcase, :headers=>nil}).and_return(response)
21
+ session.send(request_method, 'url', {}, nil)
22
+ end
23
+ end
24
+
25
+ %w{post put}.each do |request_method|
26
+ it "should call do request with method #{request_method.upcase} with a file attachment" do
27
+ session = Webrat::MerbSession.new
28
+ response = OpenStruct.new
29
+ response.status = 200
30
+
31
+ file = File.new(__FILE__)
32
+ session.should_receive(:request).with { |path, env|
33
+ path.should == "url"
34
+ env[:method].should == request_method.upcase
35
+ env[:headers].should be_nil
36
+ env[:input].should be_an_instance_of(StringIO)
37
+ env["CONTENT_LENGTH"].should be_an_instance_of(Fixnum)
38
+ env["CONTENT_TYPE"].should match(/multipart.*boundary/)
39
+ }.and_return(response)
40
+ session.send(request_method, 'url', { :file => file }, nil)
41
+ end
42
+ end
43
+
44
+ context "a session with a response" do
45
+ before do
46
+ @session = Webrat::MerbSession.new
47
+ @response = OpenStruct.new
48
+ @response.status = 200
49
+ @response.body = 'test response'
50
+ @session.instance_variable_set(:@response, @response)
51
+ end
52
+
53
+ it "should return body of a request as a response_body" do
54
+ @session.response_body.should == @response.body
55
+ end
56
+
57
+ it "should return status of a request as a response_code" do
58
+ @session.response_code.should == @response.status
59
+ end
60
+ end
61
+ end