mattscilipoti-cucumber-rails 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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