mattscilipoti-cucumber-rails 0.2.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 (42) hide show
  1. data/.gitignore +3 -0
  2. data/History.txt +84 -0
  3. data/README.rdoc +38 -0
  4. data/Rakefile +19 -0
  5. data/VERSION +1 -0
  6. data/cucumber-rails.gemspec +84 -0
  7. data/generators/cucumber/USAGE +14 -0
  8. data/generators/cucumber/cucumber_generator.rb +196 -0
  9. data/generators/cucumber/templates/config/cucumber.yml.erb +7 -0
  10. data/generators/cucumber/templates/environments/cucumber.rb.erb +37 -0
  11. data/generators/cucumber/templates/script/cucumber +10 -0
  12. data/generators/cucumber/templates/step_definitions/capybara_steps.rb.erb +187 -0
  13. data/generators/cucumber/templates/step_definitions/web_steps_cs.rb.erb +136 -0
  14. data/generators/cucumber/templates/step_definitions/web_steps_de.rb.erb +136 -0
  15. data/generators/cucumber/templates/step_definitions/web_steps_es.rb.erb +136 -0
  16. data/generators/cucumber/templates/step_definitions/web_steps_no.rb.erb +114 -0
  17. data/generators/cucumber/templates/step_definitions/web_steps_pt-BR.rb.erb +140 -0
  18. data/generators/cucumber/templates/step_definitions/webrat_steps.rb.erb +258 -0
  19. data/generators/cucumber/templates/support/_rails_each_run.rb +29 -0
  20. data/generators/cucumber/templates/support/_rails_prefork.rb.erb +10 -0
  21. data/generators/cucumber/templates/support/capybara.rb +9 -0
  22. data/generators/cucumber/templates/support/edit_warning.txt +5 -0
  23. data/generators/cucumber/templates/support/paths.rb +27 -0
  24. data/generators/cucumber/templates/support/rails.rb.erb +4 -0
  25. data/generators/cucumber/templates/support/rails_spork.rb.erb +13 -0
  26. data/generators/cucumber/templates/support/webrat.rb +8 -0
  27. data/generators/cucumber/templates/tasks/cucumber.rake.erb +42 -0
  28. data/generators/feature/USAGE +12 -0
  29. data/generators/feature/feature_generator.rb +41 -0
  30. data/generators/feature/templates/feature.erb +59 -0
  31. data/generators/feature/templates/steps.erb +14 -0
  32. data/lib/cucumber/rails/action_controller.rb +65 -0
  33. data/lib/cucumber/rails/active_record.rb +36 -0
  34. data/lib/cucumber/rails/capybara_javascript_emulation.rb +61 -0
  35. data/lib/cucumber/rails/rspec.rb +10 -0
  36. data/lib/cucumber/rails/test_unit.rb +9 -0
  37. data/lib/cucumber/rails/world.rb +47 -0
  38. data/lib/cucumber/web/tableish.rb +75 -0
  39. data/spec/cucumber/web/tableish_spec.rb +160 -0
  40. data/spec/spec_helper.rb +6 -0
  41. data/tasks/rspec.rake +13 -0
  42. metadata +107 -0
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ Manifest
2
+ pkg
3
+ doc
data/History.txt ADDED
@@ -0,0 +1,84 @@
1
+ == In Git
2
+
3
+ === Bugfixes
4
+ * Fixed typos in Capybara's web steps (has_not_xpath? => has_no_xpath?) (Thorbjørn Hermansen, Carlos Antonio da Silva)
5
+
6
+ == 0.2.4 2010-01-18
7
+
8
+ === New Features
9
+ * Added Spanish translation (Gabriel)
10
+
11
+ === Bugfixes
12
+ * Fixed some broken Webrat/Test::Unit step definitions. (Aslak Hellesøy)
13
+ * Better Javascript emulation with Capybara (#7 Thorbjørn Hermansen)
14
+ * Removed stray quote in i18n web_steps.rb (Gabriel)
15
+ * Update hooks to new boolean logic (#6 Jon Larkowski, Michael MacDonald)
16
+ * Fixed incompatibility with Rails 3 (Mutwin Kraus)
17
+ * Fixed broken "fill in the following" step for Capybara web_steps (Lenny Marks)
18
+ * Capybara web_steps.rb with_scope didn't work in nested steps (Lenny Marks)
19
+ * Fixed "should not see" steps in web_steps.rb to use the correct selector (Toni Tuominen)
20
+
21
+ == 0.2.3 2010-01-03
22
+
23
+ === New Features
24
+ * The #tableish Proc can return Strings as well as Nokogiri nodes now. (Aslak Hellesøy)
25
+
26
+ === Bugfixes
27
+ * Handle all types of URIs in "I should be on ..." steps. (#5 Andrew D. Smith)
28
+
29
+ == 0.2.2 2009-12-21
30
+
31
+ === Bugfixes
32
+ * Fix bad link in gemspec. (Aslak Hellesøy)
33
+ * Unified file attaching step names. (Jiří Zajpt)
34
+ * Fix typos in variable names in several step definitions. (Jiří Zajpt)
35
+ * cucumber.rake finds the wrong vendored cucumber when a plugin name starts with "cucumber" (#4 James Herdman, Paco Benavent, Aslak Hellesøy)
36
+
37
+ === New features
38
+ * Czech translations. (Jiří Zajpt)
39
+
40
+ == 0.2.1 2009-12-15
41
+
42
+ Small bugfix release
43
+
44
+ === Bugfixes
45
+ * Made sure database_cleaner is always set up as a dependency in config/environments/cucumber.rb. (Aslak Hellesøy)
46
+
47
+ == 0.2.0 2009-12-14
48
+
49
+ This is the first release of cucumber-rails, which was factored out of cucumber.
50
+ We're calling it 0.2.0 just because we did some prereleases in the 0.1 series,
51
+ and to celebrate that cucumber-rails now supports Capybara as an alternative to Webrat.
52
+
53
+ === UPGRADING FROM A PREVIOUS CUCUMBER SETUP
54
+
55
+ 1) Remove your features/support/version_check.rb
56
+ 2) Remove your features/step_definitions/webrat_steps.rb
57
+ If you have added your own custom step definitions to this file,
58
+ put them in a different file under features/step_definitions
59
+ 3) run "ruby script/generate cucumber --help" to see what options you have.
60
+ 4) run "ruby script/generate cucumber" - plus whatever options you think fit for you.
61
+ Answer "n" (no) when asked to overwrite paths.rb.
62
+ Answer "y" (yes) when asked to overwrite other files, but do "d" (diff) first.
63
+ If you have edits in some of these files that you want to keep, store the diff
64
+ in a temporary file and reapply after you have overwritten the file. ALso consider
65
+ adding your custom code to another file that won't be overwritten the next time
66
+ you upgrade.
67
+
68
+ Many people have edits in their env.rb file. This is something you should try
69
+ to avoid in the future. Instead, keep your custom setup in a different file
70
+ under features/support - Cucumber loads all files under features/**/*.rb anyway.
71
+
72
+ If you have a Spork setup, see the end of this thread:
73
+ http://groups.google.com/group/cukes/browse_thread/thread/475385cc26377215
74
+
75
+ === New features
76
+ * Added an @emulate_rails_javascript tag that will emulate onclick with Capybara (Aslak Hellesøy, Rob Holland)
77
+ * Added a smart config/cucumber.yml file that will rerun previously failing scenarios (Aslak Hellesøy)
78
+ * Support for Capybara. Run "script/generate --capybara" if you want that. (Rob Holland, Aslak Hellesøy)
79
+ * New #tableish method to extract table-like data from a HTML page. Pure Nokogiri/CSS3/XPath. (Aslak Hellesøy)
80
+
81
+ === Bugfixes
82
+ * Webrat step "Then I should be on" should use request_uri instead of path for missing query string parameters (ZhangJinzhu)
83
+ * Added MIME type parameter to attach file step definition (Felix Flores)
84
+ * Added check when including ActiveSupport::Testing::SetupAndTeardown for older Rails versions (Jeremy Durham)
data/README.rdoc ADDED
@@ -0,0 +1,38 @@
1
+ = cucumber-rails
2
+
3
+ Extracted the Rails generators from the Cucumber gem, inspired by
4
+ {this posting}[http://groups.google.com/group/cukes/browse_thread/thread/b9b8ff6301393c19]
5
+ on the Cukes Mailing List.
6
+
7
+ The goal is to provide i18n of the webrat_steps.rb plus some other useful
8
+ enhancements.
9
+
10
+ == Install
11
+
12
+ gem install cucumber-rails
13
+
14
+ == Usage
15
+
16
+ Once you install the gem, the generators will be available to all Rails
17
+ applications on your system. If you run script/generate without any
18
+ additional arguments you should see the available generators listed.
19
+
20
+ To run the generator, go to your rails project directory and call it
21
+ using the script/generate or script/destroy command.
22
+
23
+ script/generate cucumber
24
+
25
+
26
+ == Included Generators
27
+
28
+ * cucumber: Sets up Cucumber in your Rails project
29
+ * feature: Generates a skeleton for a new feature
30
+
31
+ To view the README for each generator, run it with the --help option.
32
+
33
+ script/generate cucumber --help
34
+
35
+ == Tests
36
+
37
+ This project has tests, but for practical and historical reasons they live in a different project:
38
+ http://github.com/aslakhellesoy/cucumber-rails-test/
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ begin
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gemspec|
4
+ gemspec.name = "mattscilipoti-cucumber-rails"
5
+ gemspec.summary = "Cucumber Generators and Runtime for Rails"
6
+ gemspec.description = "Cucumber Generators and Runtime for Rails"
7
+ gemspec.email = "cukes@googlegroups.com"
8
+ gemspec.homepage = "http://cukes.info"
9
+ gemspec.authors = ["Dennis Blöte", "Aslak Hellesøy", "Rob Holland"]
10
+ gemspec.homepage = "http://github.com/aslakhellesoy/cucumber-rails"
11
+
12
+ gemspec.add_dependency 'cucumber', '>= 0.6.2'
13
+ end
14
+ Jeweler::GemcutterTasks.new
15
+ rescue LoadError
16
+ puts "Jeweler not available. Install it with: sudo gem install jeweler"
17
+ end
18
+
19
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.4
@@ -0,0 +1,84 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{cucumber-rails}
8
+ s.version = "0.2.4"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Dennis Bl\303\266te", "Aslak Helles\303\270y", "Rob Holland"]
12
+ s.date = %q{2010-01-18}
13
+ s.description = %q{Cucumber Generators and Runtime for Rails}
14
+ s.email = %q{cukes@googlegroups.com}
15
+ s.extra_rdoc_files = [
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ "History.txt",
21
+ "README.rdoc",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "cucumber-rails.gemspec",
25
+ "generators/cucumber/USAGE",
26
+ "generators/cucumber/cucumber_generator.rb",
27
+ "generators/cucumber/templates/config/cucumber.yml.erb",
28
+ "generators/cucumber/templates/environments/cucumber.rb.erb",
29
+ "generators/cucumber/templates/script/cucumber",
30
+ "generators/cucumber/templates/step_definitions/capybara_steps.rb.erb",
31
+ "generators/cucumber/templates/step_definitions/web_steps_cs.rb.erb",
32
+ "generators/cucumber/templates/step_definitions/web_steps_de.rb.erb",
33
+ "generators/cucumber/templates/step_definitions/web_steps_es.rb.erb",
34
+ "generators/cucumber/templates/step_definitions/web_steps_no.rb.erb",
35
+ "generators/cucumber/templates/step_definitions/web_steps_pt-BR.rb.erb",
36
+ "generators/cucumber/templates/step_definitions/webrat_steps.rb.erb",
37
+ "generators/cucumber/templates/support/_rails_each_run.rb",
38
+ "generators/cucumber/templates/support/_rails_prefork.rb.erb",
39
+ "generators/cucumber/templates/support/capybara.rb",
40
+ "generators/cucumber/templates/support/edit_warning.txt",
41
+ "generators/cucumber/templates/support/paths.rb",
42
+ "generators/cucumber/templates/support/rails.rb.erb",
43
+ "generators/cucumber/templates/support/rails_spork.rb.erb",
44
+ "generators/cucumber/templates/support/webrat.rb",
45
+ "generators/cucumber/templates/tasks/cucumber.rake.erb",
46
+ "generators/feature/USAGE",
47
+ "generators/feature/feature_generator.rb",
48
+ "generators/feature/templates/feature.erb",
49
+ "generators/feature/templates/steps.erb",
50
+ "lib/cucumber/rails/action_controller.rb",
51
+ "lib/cucumber/rails/active_record.rb",
52
+ "lib/cucumber/rails/capybara_javascript_emulation.rb",
53
+ "lib/cucumber/rails/rspec.rb",
54
+ "lib/cucumber/rails/test_unit.rb",
55
+ "lib/cucumber/rails/world.rb",
56
+ "lib/cucumber/web/tableish.rb",
57
+ "spec/cucumber/web/tableish_spec.rb",
58
+ "spec/spec_helper.rb",
59
+ "tasks/rspec.rake"
60
+ ]
61
+ s.homepage = %q{http://github.com/aslakhellesoy/cucumber-rails}
62
+ s.rdoc_options = ["--charset=UTF-8"]
63
+ s.require_paths = ["lib"]
64
+ s.rubygems_version = %q{1.3.5}
65
+ s.summary = %q{Cucumber Generators and Runtime for Rails}
66
+ s.test_files = [
67
+ "spec/cucumber/web/tableish_spec.rb",
68
+ "spec/spec_helper.rb"
69
+ ]
70
+
71
+ if s.respond_to? :specification_version then
72
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
73
+ s.specification_version = 3
74
+
75
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
76
+ s.add_runtime_dependency(%q<cucumber>, [">= 0.6.2"])
77
+ else
78
+ s.add_dependency(%q<cucumber>, [">= 0.6.2"])
79
+ end
80
+ else
81
+ s.add_dependency(%q<cucumber>, [">= 0.6.2"])
82
+ end
83
+ end
84
+
@@ -0,0 +1,14 @@
1
+ Description:
2
+ Sets up Cucumber in your Rails project. After running this generator you will
3
+ get a new rake task called features.
4
+
5
+ This also generates the necessary files in the features directory.
6
+
7
+ Also see the feature generator, which you can use to generate skeletons
8
+ for new features.
9
+
10
+ Examples:
11
+ `./script/generate cucumber`
12
+
13
+ You can also provide a language argument for localized webrat_steps:
14
+ `./script/generate cucumber de`
@@ -0,0 +1,196 @@
1
+ require 'rbconfig'
2
+ require 'cucumber/platform'
3
+
4
+ # This generator bootstraps a Rails project for use with Cucumber
5
+ class CucumberGenerator < Rails::Generator::Base
6
+ DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
7
+ Config::CONFIG['ruby_install_name'])
8
+
9
+ attr_accessor :driver
10
+ attr_accessor :framework
11
+ attr_reader :language, :template_dir
12
+
13
+ def initialize(runtime_args, runtime_options = {})
14
+ super
15
+ @language = @args.empty? ? 'en' : @args.first
16
+ end
17
+
18
+ def manifest
19
+ record do |m|
20
+ if File.exist?('features/step_definitions/webrat_steps.rb')
21
+ STDERR.puts "Please remove features/step_definitions/webrat_steps.rb\n" +
22
+ "See upgrading instructions for 0.2.0 in History.txt"
23
+ exit(1)
24
+ end
25
+ if File.exist?('features/support/version_check.rb')
26
+ STDERR.puts "Please remove features/support/version_check.rb\n" +
27
+ "See upgrading instructions for 0.2.0 in History.txt"
28
+ exit(1)
29
+ end
30
+
31
+ m.template 'config/cucumber.yml.erb', 'config/cucumber.yml'
32
+
33
+ m.template 'environments/cucumber.rb.erb', 'config/environments/cucumber.rb'
34
+
35
+ m.file 'script/cucumber', 'script/cucumber', {
36
+ :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang]
37
+ }
38
+
39
+ m.directory 'features/step_definitions'
40
+ m.template "step_definitions/#{driver}_steps.rb.erb", 'features/step_definitions/web_steps.rb'
41
+ if language != 'en'
42
+ m.template "step_definitions/web_steps_#{language}.rb.erb", "features/step_definitions/web_steps_#{language}.rb"
43
+ end
44
+
45
+ m.directory 'features/support'
46
+ if spork?
47
+ m.template 'support/rails_spork.rb.erb', 'features/support/env.rb'
48
+ else
49
+ m.template 'support/rails.rb.erb', 'features/support/env.rb'
50
+ end
51
+ m.file 'support/paths.rb', 'features/support/paths.rb'
52
+
53
+ m.directory 'lib/tasks'
54
+ m.template 'tasks/cucumber.rake.erb', 'lib/tasks/cucumber.rake'
55
+
56
+ m.gsub_file 'config/database.yml', /test:.*\n/, "test: &TEST\n"
57
+ unless File.read('config/database.yml').include? 'cucumber:'
58
+ m.gsub_file 'config/database.yml', /\z/, "\ncucumber:\n <<: *TEST"
59
+ end
60
+ end
61
+ end
62
+
63
+ def framework
64
+ options[:framework] ||= detect_current_framework || detect_default_framework
65
+ end
66
+
67
+ def driver
68
+ options[:driver] ||= detect_current_driver || detect_default_driver
69
+ end
70
+
71
+ def spork?
72
+ options[:spork]
73
+ end
74
+
75
+ def embed_file(source, indent='')
76
+ IO.read(File.join(File.dirname(__FILE__), 'templates', source)).gsub(/^/, indent)
77
+ end
78
+
79
+ def embed_template(source, indent='')
80
+ template = File.join(File.dirname(__FILE__), 'templates', source)
81
+ ERB.new(IO.read(template), nil, '-').result(binding).gsub(/^/, indent)
82
+ end
83
+
84
+ def version
85
+ IO.read(File.dirname(__FILE__) + '/../../VERSION').chomp
86
+ end
87
+
88
+ private
89
+
90
+ def first_loadable(libraries)
91
+ require 'rubygems'
92
+ libraries.each do |library|
93
+ begin
94
+ require library[0]
95
+ return library[1]
96
+ rescue LoadError => ignore
97
+ end
98
+ end
99
+ return nil
100
+ end
101
+
102
+ def detect_current_driver
103
+ detect_in_env([['capybara', :capybara], ['webrat', :webrat ]])
104
+ end
105
+
106
+ def detect_default_driver
107
+ @default_driver = first_loadable([['capybara', :capybara], ['webrat', :webrat ]])
108
+ raise "I don't know which driver you want. Use --capybara or --webrat, or gem install capybara or webrat." unless @default_driver
109
+ @default_driver
110
+ end
111
+
112
+ def detect_current_framework
113
+ detect_in_env([['spec', :rspec], ['test/unit', :testunit]])
114
+ end
115
+
116
+ def detect_default_framework
117
+ @default_framework = first_loadable([['spec', :rspec], ['test/unit', :testunit]])
118
+ raise "I don't know what test framework you want. Use --rspec or --testunit, or gem install rspec or test-unit." unless @default_framework
119
+ @default_framework
120
+ end
121
+
122
+ def detect_in_env(choices)
123
+ env = File.file?("features/support/env.rb") ? IO.read("features/support/env.rb") : ''
124
+ choices.each do |choice|
125
+ detected = choice[1] if env =~ /#{choice[0]}/n
126
+ return detected if detected
127
+ end
128
+ return nil
129
+ end
130
+
131
+ def banner
132
+ "Usage: #{$0} cucumber (language)"
133
+ end
134
+
135
+ def after_generate
136
+ require 'cucumber/formatter/ansicolor'
137
+ extend Cucumber::Formatter::ANSIColor
138
+
139
+ if @default_driver
140
+ puts <<-WARNING
141
+
142
+ #{yellow_cukes(15)}
143
+
144
+ #{yellow_cukes(1)} D R I V E R A L E R T #{yellow_cukes(1)}
145
+
146
+ You didn't explicitly generate with --capybara or --webrat, so I looked at
147
+ your gems and saw that you had #{green(@default_driver.to_s)} installed, so I went with that.
148
+ If you want something else, be specific about it. Otherwise, relax.
149
+
150
+ #{yellow_cukes(15)}
151
+
152
+ WARNING
153
+ end
154
+
155
+ if @default_framework
156
+ puts <<-WARNING
157
+
158
+ #{yellow_cukes(15)}
159
+
160
+ #{yellow_cukes(1)} T E S T F R A M E W O R K A L E R T #{yellow_cukes(1)}
161
+
162
+ You didn't explicitly generate with --rspec or --testunit, so I looked at
163
+ your gems and saw that you had #{green(@default_framework.to_s)} installed, so I went with that.
164
+ If you want something else, be specific about it. Otherwise, relax.
165
+
166
+ #{yellow_cukes(15)}
167
+
168
+ WARNING
169
+ end
170
+ end
171
+
172
+ def add_options!(opt)
173
+ opt.separator ''
174
+ opt.separator 'Options:'
175
+ opt.on('--webrat', 'Setup cucumber for use with webrat') do |value|
176
+ options[:driver] = :webrat
177
+ end
178
+
179
+ opt.on('--capybara', 'Setup cucumber for use with capybara') do |value|
180
+ options[:driver] = :capybara
181
+ end
182
+
183
+ opt.on('--rspec', "Setup cucumber for use with RSpec") do |value|
184
+ options[:framework] = :rspec
185
+ end
186
+
187
+ opt.on('--testunit', "Setup cucumber for use with test/unit") do |value|
188
+ options[:framework] = :testunit
189
+ end
190
+
191
+ opt.on('--spork', 'Setup cucumber for use with Spork') do |value|
192
+ options[:spork] = true
193
+ end
194
+ end
195
+
196
+ end