fletcherm-culerity 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/.gitignore +6 -0
  2. data/CHANGES.md +7 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.md +102 -0
  5. data/Rakefile +47 -0
  6. data/VERSION.yml +5 -0
  7. data/culerity.gemspec +165 -0
  8. data/features/fixtures/jquery +4376 -0
  9. data/features/fixtures/sample_feature +14 -0
  10. data/features/installing_culerity.feature +36 -0
  11. data/features/running_cucumber_without_explicitly_running_external_services.feature +23 -0
  12. data/features/step_definitions/common_steps.rb +175 -0
  13. data/features/step_definitions/culerity_setup_steps.rb +7 -0
  14. data/features/step_definitions/jruby_steps.rb +11 -0
  15. data/features/step_definitions/rails_setup_steps.rb +36 -0
  16. data/features/support/common.rb +32 -0
  17. data/features/support/env.rb +24 -0
  18. data/features/support/matchers.rb +11 -0
  19. data/init.rb +1 -0
  20. data/lib/culerity.rb +44 -0
  21. data/lib/culerity/celerity_server.rb +81 -0
  22. data/lib/culerity/jruby_runner.rb +13 -0
  23. data/lib/culerity/remote_browser_proxy.rb +58 -0
  24. data/lib/culerity/remote_object_proxy.rb +76 -0
  25. data/rails/init.rb +1 -0
  26. data/rails_generators/culerity/culerity_generator.rb +28 -0
  27. data/rails_generators/culerity/templates/config/environments/culerity_continuousintegration.rb +28 -0
  28. data/rails_generators/culerity/templates/config/environments/culerity_development.rb +17 -0
  29. data/rails_generators/culerity/templates/features/step_definitions/culerity_steps.rb +109 -0
  30. data/rails_generators/culerity/templates/features/support/env.rb +9 -0
  31. data/rails_generators/culerity/templates/lib/tasks/culerity.rake +38 -0
  32. data/rails_generators/culerity/templates/public/javascripts/culerity.js +27 -0
  33. data/script/console +10 -0
  34. data/script/destroy +14 -0
  35. data/script/generate +14 -0
  36. data/spec/celerity_server_spec.rb +106 -0
  37. data/spec/culerity_spec.rb +33 -0
  38. data/spec/jruby_runner_spec.rb +12 -0
  39. data/spec/remote_browser_proxy_spec.rb +62 -0
  40. data/spec/remote_object_proxy_spec.rb +63 -0
  41. data/spec/spec_helper.rb +3 -0
  42. data/vendor/gems/celerity-0.7.6/HISTORY +111 -0
  43. data/vendor/gems/celerity-0.7.6/LICENSE +621 -0
  44. data/vendor/gems/celerity-0.7.6/README.rdoc +80 -0
  45. data/vendor/gems/celerity-0.7.6/Rakefile +11 -0
  46. data/vendor/gems/celerity-0.7.6/VERSION.yml +5 -0
  47. data/vendor/gems/celerity-0.7.6/celerity.gemspec +120 -0
  48. data/vendor/gems/celerity-0.7.6/lib/celerity.rb +77 -0
  49. data/vendor/gems/celerity-0.7.6/lib/celerity/browser.rb +893 -0
  50. data/vendor/gems/celerity-0.7.6/lib/celerity/clickable_element.rb +73 -0
  51. data/vendor/gems/celerity-0.7.6/lib/celerity/collections.rb +156 -0
  52. data/vendor/gems/celerity-0.7.6/lib/celerity/container.rb +767 -0
  53. data/vendor/gems/celerity-0.7.6/lib/celerity/default_viewer.rb +14 -0
  54. data/vendor/gems/celerity-0.7.6/lib/celerity/disabled_element.rb +40 -0
  55. data/vendor/gems/celerity-0.7.6/lib/celerity/element.rb +298 -0
  56. data/vendor/gems/celerity-0.7.6/lib/celerity/element_collection.rb +107 -0
  57. data/vendor/gems/celerity-0.7.6/lib/celerity/element_locator.rb +159 -0
  58. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/button.rb +54 -0
  59. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/file_field.rb +29 -0
  60. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/form.rb +33 -0
  61. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/frame.rb +86 -0
  62. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/image.rb +89 -0
  63. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/label.rb +16 -0
  64. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/link.rb +43 -0
  65. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/meta.rb +14 -0
  66. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/non_control_elements.rb +116 -0
  67. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/option.rb +38 -0
  68. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/radio_check.rb +114 -0
  69. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/select_list.rb +147 -0
  70. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/table.rb +153 -0
  71. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/table_cell.rb +36 -0
  72. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/table_elements.rb +42 -0
  73. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/table_row.rb +49 -0
  74. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/text_field.rb +168 -0
  75. data/vendor/gems/celerity-0.7.6/lib/celerity/exception.rb +83 -0
  76. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit.rb +64 -0
  77. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-codec-1.4.jar +0 -0
  78. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-collections-3.2.1.jar +0 -0
  79. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-httpclient-3.1.jar +0 -0
  80. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-io-1.4.jar +0 -0
  81. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-lang-2.4.jar +0 -0
  82. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-logging-1.1.1.jar +0 -0
  83. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/cssparser-0.9.5.jar +0 -0
  84. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/htmlunit-2.7-SNAPSHOT.jar +0 -0
  85. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/htmlunit-core-js-2.7-SNAPSHOT.jar +0 -0
  86. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/nekohtml-1.9.14-20091130.152932-3.jar +0 -0
  87. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/sac-1.3.jar +0 -0
  88. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/serializer-2.7.1.jar +0 -0
  89. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/xalan-2.7.1.jar +0 -0
  90. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/xercesImpl-2.9.1.jar +0 -0
  91. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/xml-apis-1.3.04.jar +0 -0
  92. data/vendor/gems/celerity-0.7.6/lib/celerity/identifier.rb +28 -0
  93. data/vendor/gems/celerity-0.7.6/lib/celerity/ignoring_web_connection.rb +15 -0
  94. data/vendor/gems/celerity-0.7.6/lib/celerity/input_element.rb +25 -0
  95. data/vendor/gems/celerity-0.7.6/lib/celerity/javascript_debugger.rb +32 -0
  96. data/vendor/gems/celerity-0.7.6/lib/celerity/listener.rb +143 -0
  97. data/vendor/gems/celerity-0.7.6/lib/celerity/resources/no_viewer.png +0 -0
  98. data/vendor/gems/celerity-0.7.6/lib/celerity/short_inspect.rb +20 -0
  99. data/vendor/gems/celerity-0.7.6/lib/celerity/util.rb +126 -0
  100. data/vendor/gems/celerity-0.7.6/lib/celerity/version.rb +3 -0
  101. data/vendor/gems/celerity-0.7.6/lib/celerity/viewer_connection.rb +89 -0
  102. data/vendor/gems/celerity-0.7.6/lib/celerity/watir_compatibility.rb +70 -0
  103. data/vendor/gems/celerity-0.7.6/lib/celerity/xpath_support.rb +48 -0
  104. data/vendor/gems/celerity-0.7.6/tasks/benchmark.rake +4 -0
  105. data/vendor/gems/celerity-0.7.6/tasks/check.rake +24 -0
  106. data/vendor/gems/celerity-0.7.6/tasks/clean.rake +3 -0
  107. data/vendor/gems/celerity-0.7.6/tasks/fix.rake +25 -0
  108. data/vendor/gems/celerity-0.7.6/tasks/jar.rake +55 -0
  109. data/vendor/gems/celerity-0.7.6/tasks/jeweler.rake +26 -0
  110. data/vendor/gems/celerity-0.7.6/tasks/rdoc.rake +4 -0
  111. data/vendor/gems/celerity-0.7.6/tasks/snapshot.rake +22 -0
  112. data/vendor/gems/celerity-0.7.6/tasks/spec.rake +26 -0
  113. data/vendor/gems/celerity-0.7.6/tasks/website.rake +10 -0
  114. data/vendor/gems/celerity-0.7.6/tasks/yard.rake +16 -0
  115. data/vendor/jruby/jruby-complete-1.4.0.jar +0 -0
  116. metadata +194 -0
@@ -0,0 +1,13 @@
1
+ module Culerity
2
+ class JRubyRunner
3
+ def self.cmd
4
+ jruby_complete = "#{File.dirname(__FILE__)}/../../vendor/jruby/jruby-complete-1.4.0.jar"
5
+ celerity = "#{File.dirname(__FILE__)}/../../vendor/gems/celerity-0.7.6/lib"
6
+ "java -Xmx500m -Xss1024k -jar #{jruby_complete} -I#{celerity}"
7
+ end
8
+
9
+ def self.run(command_to_run)
10
+ `#{cmd} #{command_to_run}`
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,58 @@
1
+ module Culerity
2
+
3
+ class RemoteBrowserProxy < RemoteObjectProxy
4
+ def initialize(io, browser_options = {})
5
+ @io = io
6
+ @remote_object_id = "celerity".inspect
7
+ @remote_object_id = new_browser(browser_options).inspect
8
+ end
9
+
10
+ #
11
+ # Calls the block until it returns true or +time_to_wait+ is reached.
12
+ # +time_to_wait+ is 30 seconds by default
13
+ #
14
+ # Returns true upon success
15
+ # Raises Timeout::Error when +time_to_wait+ is reached.
16
+ #
17
+ def wait_until time_to_wait=30, &block
18
+ Timeout.timeout(time_to_wait) do
19
+ until block.call
20
+ sleep 0.1
21
+ end
22
+ end
23
+ true
24
+ end
25
+
26
+ #
27
+ # Calls the block until it doesn't return true or +time_to_wait+ is reached.
28
+ # +time_to_wait+ is 30 seconds by default
29
+ #
30
+ # Returns true upon success
31
+ # Raises Timeout::Error when +time_to_wait+ is reached.
32
+ #
33
+ def wait_while time_to_wait=30, &block
34
+ Timeout.timeout(time_to_wait) do
35
+ while block.call
36
+ sleep 0.1
37
+ end
38
+ end
39
+ true
40
+ end
41
+
42
+
43
+ #
44
+ # Specify whether to accept or reject all confirm js dialogs
45
+ # for the code in the block that's run.
46
+ #
47
+ def confirm(bool, &block)
48
+ blk = "lambda { #{bool} }"
49
+
50
+ self.send_remote(:add_listener, :confirm) { blk }
51
+ block.call
52
+ self.send_remote(:remove_listener, :confirm) { blk }
53
+ end
54
+
55
+ end
56
+
57
+
58
+ end
@@ -0,0 +1,76 @@
1
+ module Culerity
2
+
3
+ class CulerityException < StandardError
4
+ def initialize(message, backtrace)
5
+ super message
6
+ #self.backtrace = backtrace
7
+ end
8
+ end
9
+
10
+ class RemoteObjectProxy
11
+ def initialize(remote_object_id, io)
12
+ @remote_object_id = remote_object_id
13
+ @io = io
14
+ end
15
+
16
+ #
17
+ # Commonly used to get the HTML id attribute
18
+ # Use `object_id` to get the local objects' id.
19
+ #
20
+ def id
21
+ send_remote(:id)
22
+ end
23
+
24
+ def method_missing(name, *args)
25
+ send_remote(name, *args)
26
+ end
27
+
28
+ #
29
+ # Calls the passed method on the remote object with any arguments specified.
30
+ # Behaves the same as <code>Object#send</code>.
31
+ #
32
+ # If you pass it a block then it will append the block as a "lambda { … }".
33
+ # If your block returns a lambda string ("lambda { … }") then it will be passed
34
+ # straight through, otherwise it will be wrapped in a lambda string before sending.
35
+ #
36
+ def send_remote(name, *args, &blk)
37
+ input = [remote_object_id, %Q{"#{name}"}, *args.map{|a| a.inspect}]
38
+ input << block_to_string(&blk) if block_given?
39
+ @io << "[#{input.join(", ")}]\n"
40
+ process_result @io.gets.to_s.strip
41
+ end
42
+
43
+ def exit
44
+ @io << '["_exit_"]'
45
+ end
46
+
47
+ private
48
+
49
+ def process_result(result)
50
+ res = eval result
51
+ if res.first == :return
52
+ res[1]
53
+ elsif res.first == :exception
54
+ raise CulerityException.new("#{res[1]}: #{res[2]}", res[3])
55
+ end
56
+ end
57
+
58
+ #
59
+ # Takes a block and either returns the result (if it returns "lambda { … }")
60
+ # or builds the lambda string with the result of the block in it.
61
+ #
62
+ # Returns a string in the format "lambda { … }"
63
+ #
64
+ def block_to_string &block
65
+ result = block.call.to_s
66
+ unless result.is_a?(String) && result[/^lambda \s* \{ .*? \}/x]
67
+ result = "lambda { #{result} }"
68
+ end
69
+ result
70
+ end
71
+
72
+ def remote_object_id
73
+ @remote_object_id
74
+ end
75
+ end
76
+ end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'culerity'
@@ -0,0 +1,28 @@
1
+ class CulerityGenerator < Rails::Generator::Base
2
+
3
+ def manifest
4
+ record do |m|
5
+ m.directory 'features/step_definitions'
6
+ m.file 'features/step_definitions/culerity_steps.rb', 'features/step_definitions/culerity_steps.rb'
7
+ m.file 'features/support/env.rb', 'features/support/env.rb'
8
+ m.file 'config/environments/culerity_continuousintegration.rb', 'config/environments/culerity_continuousintegration.rb'
9
+ m.file 'config/environments/culerity_development.rb', 'config/environments/culerity_development.rb'
10
+
11
+ m.gsub_file 'config/database.yml', /cucumber:.*\n/, "cucumber: &CUCUMBER\n"
12
+
13
+ m.gsub_file 'config/database.yml', /\z/, "\nculerity_development:\n <<: *CUCUMBER"
14
+ m.gsub_file 'config/database.yml', /\z/, "\nculerity_continuousintegration:\n <<: *CUCUMBER"
15
+
16
+ m.file "lib/tasks/culerity.rake", "lib/tasks/culerity.rake"
17
+
18
+ m.file 'public/javascripts/culerity.js', 'public/javascripts/culerity.js'
19
+ end
20
+ end
21
+
22
+ protected
23
+
24
+ def banner
25
+ "Usage: #{$0} culerity"
26
+ end
27
+
28
+ end
@@ -0,0 +1,28 @@
1
+ # Settings specified here will take precedence over those in config/environment.rb
2
+
3
+ # The production environment is meant for finished, "live" apps.
4
+ # Code is not reloaded between requests
5
+ config.cache_classes = true
6
+
7
+ # Full error reports are disabled and caching is turned on
8
+ config.action_controller.consider_all_requests_local = false
9
+ config.action_controller.perform_caching = true
10
+ config.action_view.cache_template_loading = true
11
+
12
+ # See everything in the log (default is :info)
13
+ # config.log_level = :debug
14
+
15
+ # Use a different logger for distributed setups
16
+ # config.logger = SyslogLogger.new
17
+
18
+ # Use a different cache store in production
19
+ # config.cache_store = :mem_cache_store
20
+
21
+ # Enable serving of images, stylesheets, and javascripts from an asset server
22
+ # config.action_controller.asset_host = "http://assets.example.com"
23
+
24
+ # Disable delivery errors, bad email addresses will be ignored
25
+ # config.action_mailer.raise_delivery_errors = false
26
+
27
+ # Enable threaded mode
28
+ # config.threadsafe!
@@ -0,0 +1,17 @@
1
+ config.cache_classes = false
2
+
3
+ # Log error messages when you accidentally call methods on nil.
4
+ config.whiny_nils = true
5
+
6
+ # Show full error reports and disable caching
7
+ config.action_controller.consider_all_requests_local = true
8
+ config.action_controller.perform_caching = false
9
+ config.action_view.cache_template_loading = false
10
+
11
+ # Disable request forgery protection in test environment
12
+ config.action_controller.allow_forgery_protection = false
13
+
14
+ # Tell Action Mailer not to deliver emails to the real world.
15
+ # The :test delivery method accumulates sent emails in the
16
+ # ActionMailer::Base.deliveries array.
17
+ config.action_mailer.delivery_method = :test
@@ -0,0 +1,109 @@
1
+ require 'culerity'
2
+
3
+ Before do
4
+ $rails_server ||= Culerity::run_rails(:environment => 'culerity_development', :port => 3001)
5
+ $server ||= Culerity::run_server
6
+ $browser = Culerity::RemoteBrowserProxy.new $server, {:browser => :firefox3,
7
+ :javascript_exceptions => true,
8
+ :resynchronize => true,
9
+ :status_code_exceptions => true
10
+ }
11
+ $browser.log_level = :warning
12
+ @host = 'http://localhost:3001'
13
+ end
14
+
15
+ at_exit do
16
+ $browser.exit if $browser
17
+ $server.close if $server
18
+ Process.kill(6, $rails_server.pid.to_i) if $rails_server
19
+ end
20
+
21
+ When /I follow "([^\"]*)"/ do |link|
22
+ _link = [[:text, /^#{Regexp.escape(link)}$/], [:id, link], [:title, link]].map{|args| $browser.link(*args)}.find{|__link| __link.exist?}
23
+ raise "link \"#{link}\" not found" unless _link
24
+ _link.click
25
+ assert_successful_response
26
+ end
27
+
28
+ When /I press "([^\"]*)"/ do |button|
29
+ $browser.button(:text, button).click
30
+ assert_successful_response
31
+ end
32
+
33
+ When /I fill in "([^\"]*)" with "([^\"]*)"/ do |field, value|
34
+ find_by_label_or_id(:text_field, field).set(value)
35
+ end
36
+
37
+ When /I fill in "([^\"]*)" for "([^\"]*)"/ do |value, field|
38
+ find_by_label_or_id(:text_field, field).set(value)
39
+ end
40
+
41
+ When /I check "([^\"]*)"/ do |field|
42
+ find_by_label_or_id(:check_box, field).set(true)
43
+ end
44
+
45
+ When /^I uncheck "([^\"]*)"$/ do |field|
46
+ find_by_label_or_id(:check_box, field).set(true)
47
+ end
48
+
49
+ When /I select "([^\"]*)" from "([^\"]*)"/ do |value, field|
50
+ find_by_label_or_id(:select_list, field).select value
51
+ end
52
+
53
+ When /I choose "([^\"]*)"/ do |field|
54
+ find_by_label_or_id(:radio, field).set(true)
55
+ end
56
+
57
+ When /I go to (.+)/ do |path|
58
+ $browser.goto @host + path_to(path)
59
+ assert_successful_response
60
+ end
61
+
62
+ When /^I wait for the AJAX call to finish$/ do
63
+ $browser.wait_while do
64
+ begin
65
+ count = $browser.execute_script("window.running_ajax_calls").to_i
66
+ count.to_i > 0
67
+ rescue => e
68
+ if e.message.include?('HtmlunitCorejsJavascript::Undefined')
69
+ raise "For 'I wait for the AJAX call to finish' to work please include culerity.js after including jQuery. If you don't use jQuery please rewrite culerity.js accordingly."
70
+ else
71
+ raise(e)
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ Then /I should see "([^\"]*)"/ do |text|
78
+ # if we simply check for the browser.html content we don't find content that has been added dynamically, e.g. after an ajax call
79
+ div = $browser.div(:text, /#{text}/)
80
+ div.should be_exist
81
+ end
82
+
83
+ Then /I should not see "([^\"]*)"/ do |text|
84
+ div = $browser.div(:text, /#{text}/)
85
+ div.should_not be_exist
86
+ end
87
+
88
+ def find_by_label_or_id(element, attribute)
89
+ matchers = [[attribute, :id], [attribute, :name]]
90
+ matchers << [$browser.label(:text, attribute).for, :id] if $browser.label(:text, attribute).exist?
91
+ field = matchers.map{|_field, matcher| $browser.send(element, matcher, _field)}.find(&:exist?) || raise("#{element} not found using \"#{attribute}\"")
92
+ end
93
+
94
+ def assert_successful_response
95
+ status = $browser.page.web_response.status_code
96
+ if(status == 302 || status == 301)
97
+ location = $browser.page.web_response.get_response_header_value('Location')
98
+ puts "Being redirected to #{location}"
99
+ $browser.goto location
100
+ assert_successful_response
101
+ elsif status != 200
102
+ filename = "culerity-#{Time.now.to_i}.html"
103
+ File.open(RAILS_ROOT + "/tmp/#{filename}", "w") do |f|
104
+ f.write $browser.html
105
+ end
106
+ `open tmp/#{filename}`
107
+ raise "Browser returned Response Code #{$browser.page.web_response.status_code}"
108
+ end
109
+ end
@@ -0,0 +1,9 @@
1
+ ENV["RAILS_ENV"] ||= "culerity_development"
2
+ require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
3
+ require 'cucumber/rails/world'
4
+
5
+ Cucumber::Rails::World.use_transactional_fixtures = false
6
+ ActionController::Base.allow_rescue = false
7
+
8
+ require 'cucumber/formatter/unicode'
9
+ require 'cucumber/rails/rspec'
@@ -0,0 +1,38 @@
1
+ namespace 'culerity' do
2
+ namespace 'rails' do
3
+ desc "Starts a rails server for cucumber/culerity tests"
4
+ task :start do
5
+ port = ENV['PORT'] || 3001
6
+ environment = ENV["RAILS_ENV"] || 'culerity_development'
7
+ pid_file = RAILS_ROOT + "/tmp/culerity_rails_server.pid"
8
+ if File.exists?(pid_file)
9
+ puts "culerity rails server already running; if not, delete tmp/culerity_rails_server.pid and try again"
10
+ exit 1
11
+ end
12
+ rails_server = IO.popen("script/server -e #{environment} -p #{port}", 'r+')
13
+ File.open(pid_file, "w") { |file| file << rails_server.pid }
14
+ end
15
+
16
+ desc "Stops the running rails server for cucumber/culerity tests"
17
+ task :stop do
18
+ pid_file = RAILS_ROOT + "/tmp/culerity_rails_server.pid"
19
+ if File.exists?(pid_file)
20
+ pid = File.read(pid_file).to_i
21
+ Process.kill(6, pid)
22
+ File.delete(pid_file)
23
+ else
24
+ puts "No culerity rails server running. Doing nothing."
25
+ end
26
+ end
27
+
28
+ desc "Restarts the rails server for cucumber/culerity tests"
29
+ task :restart => [:stop, :start]
30
+ end
31
+
32
+ desc "Install required gems into jruby"
33
+ task :install do
34
+ jgem_cmd = `which jruby`.strip
35
+ raise "ERROR: You need to install jruby to use culerity and celerity." if jgem_cmd.blank?
36
+ sh "#{jgem_cmd} -S gem install celerity"
37
+ end
38
+ end
@@ -0,0 +1,27 @@
1
+ // this allows culerity to wait until all ajax requests have finished
2
+ jQuery(function($) {
3
+ var original_ajax = $.ajax;
4
+ var count_down = function(callback) {
5
+ return function() {
6
+ try {
7
+ if(callback) {
8
+ callback.apply(this, arguments);
9
+ };
10
+ } catch(e) {
11
+ window.running_ajax_calls -= 1;
12
+ throw(e);
13
+ }
14
+ window.running_ajax_calls -= 1;
15
+ }
16
+ };
17
+ window.running_ajax_calls = 0;
18
+
19
+ var ajax_with_count = function(options) {
20
+ window.running_ajax_calls += 1;
21
+ options.success = count_down(options.success);
22
+ options.error = count_down(options.error);
23
+ original_ajax(options);
24
+ };
25
+
26
+ $.ajax = ajax_with_count;
27
+ });
data/script/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/culerity.rb'}"
9
+ puts "Loading culerity gem"
10
+ exec "#{irb} #{libs} --simple-prompt"
data/script/destroy ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)