steak 0.4.0.a3 → 0.4.0.a4
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.
data/README.rdoc
CHANGED
@@ -36,11 +36,13 @@ If you are not in Rails but use RSpec, then Steak is just some aliases providing
|
|
36
36
|
|
37
37
|
== Getting started
|
38
38
|
|
39
|
+
<em><b>NOTE:</b> Please note that the stable version of Steak only works with Rails 2.x and RSpec 1.x. If you want to try with Rails 3 or RSpec 2, then you can install the prerelease version of Steak (using <tt>gem install steak --pre</tt>) which is based on the experimental <tt>rails3</tt> branch.</em>
|
40
|
+
|
39
41
|
=== Not in Rails
|
40
42
|
|
41
43
|
Just install and require the damned gem!
|
42
44
|
|
43
|
-
$
|
45
|
+
$ gem install steak
|
44
46
|
|
45
47
|
Then in your spec or spec helper:
|
46
48
|
|
@@ -50,23 +52,27 @@ That's all. You don't really need to require RSpec.
|
|
50
52
|
|
51
53
|
=== In Rails
|
52
54
|
|
53
|
-
Assuming you have already setup rspec-rails, add this to your project's <tt>
|
55
|
+
Assuming you have already setup rspec-rails, add this to your project's <tt>Gemfile</tt>:
|
54
56
|
|
55
|
-
|
57
|
+
gem 'steak', '0.4.0.a3'
|
56
58
|
|
57
|
-
|
59
|
+
And install it:
|
58
60
|
|
59
|
-
$
|
61
|
+
$ bundle install
|
60
62
|
|
61
63
|
Run the generator:
|
62
64
|
|
63
|
-
$
|
65
|
+
$ rails generate steak
|
66
|
+
|
67
|
+
That will create some basic helper files and directory structure under the +spec/acceptance+ directory, already configured for +Capybara+. If you want to use +Webrat+, just pass it to the generator:
|
68
|
+
|
69
|
+
$ rails generate steak --webrat
|
64
70
|
|
65
|
-
|
71
|
+
Spend one minute on getting familiar with the structure and files you've got.
|
66
72
|
|
67
73
|
Now you may want to create your first acceptance spec:
|
68
74
|
|
69
|
-
$
|
75
|
+
$ rails generate acceptance_spec this_is_my_first_feature
|
70
76
|
|
71
77
|
You run your acceptance specs just like your regular specs. Individually...
|
72
78
|
|
@@ -82,6 +88,11 @@ You run your acceptance specs just like your regular specs. Individually...
|
|
82
88
|
|
83
89
|
== Credits
|
84
90
|
|
85
|
-
Steak
|
91
|
+
Steak was created by Luismi Cavallé and improved thanks to the love from:
|
92
|
+
|
93
|
+
- Álvaro Bautista
|
94
|
+
- Felipe Talavera
|
95
|
+
- Paco Guzmán
|
96
|
+
- Jeff Kreeftmeijer
|
86
97
|
|
87
|
-
Copyright (c) 2009 Luismi Cavallé, released under the MIT license
|
98
|
+
Copyright (c) 2009, 2010 Luismi Cavallé, released under the MIT license
|
@@ -1,16 +1,28 @@
|
|
1
1
|
require 'rails/generators'
|
2
2
|
|
3
3
|
class SteakGenerator < Rails::Generators::Base
|
4
|
+
class_option :webrat, :desc => 'Use Webrat.', :type => :boolean
|
5
|
+
class_option :capybara, :desc => 'Use Capybara.', :type => :boolean
|
6
|
+
|
7
|
+
def initialize(args=[], options={}, config={})
|
8
|
+
puts "Defaulting to Capybara..." if options.empty?
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
4
12
|
def manifest
|
5
13
|
empty_directory 'spec/controllers'
|
6
14
|
empty_directory 'spec/acceptance/support'
|
7
15
|
empty_directory 'lib/tasks'
|
8
|
-
|
16
|
+
template "acceptance_helper.rb", "spec/acceptance/acceptance_helper.rb"
|
9
17
|
copy_file "helpers.rb", "spec/acceptance/support/helpers.rb"
|
10
18
|
copy_file "paths.rb", "spec/acceptance/support/paths.rb"
|
11
19
|
copy_file "steak.rake", "lib/tasks/steak.rake"
|
12
20
|
end
|
13
|
-
|
21
|
+
|
22
|
+
def driver
|
23
|
+
@driver = options.webrat? ? 'webrat' : 'capybara'
|
24
|
+
end
|
25
|
+
|
14
26
|
def self.source_root
|
15
27
|
File.join(File.dirname(__FILE__), 'templates')
|
16
28
|
end
|
@@ -1,10 +1,31 @@
|
|
1
1
|
require File.dirname(__FILE__) + "/../spec_helper"
|
2
2
|
require "steak"
|
3
|
+
<%- if driver == 'webrat' %>
|
3
4
|
require "webrat"
|
4
5
|
|
5
6
|
Webrat.configure do |config|
|
6
|
-
config.mode = :
|
7
|
+
config.mode = :rack
|
7
8
|
end
|
8
9
|
|
10
|
+
module AppHelper
|
11
|
+
def app
|
12
|
+
Rails.application
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Rspec.configure do |config|
|
17
|
+
config.include Rack::Test::Methods
|
18
|
+
config.include Webrat::Methods
|
19
|
+
config.include Webrat::Matchers
|
20
|
+
config.include AppHelper
|
21
|
+
end
|
22
|
+
<%- else -%>
|
23
|
+
require 'capybara/rails'
|
24
|
+
|
25
|
+
Rspec.configure do |config|
|
26
|
+
config.include Capybara
|
27
|
+
end
|
28
|
+
<%- end -%>
|
29
|
+
|
9
30
|
# Put your acceptance spec helpers inside /spec/acceptance/support
|
10
31
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
@@ -12,26 +12,38 @@ module Factories
|
|
12
12
|
end
|
13
13
|
path
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def create_rails_app(options = {})
|
17
17
|
path = File.join(Dir.tmpdir, String.random, "rails_app")
|
18
18
|
FileUtils.rm_rf path
|
19
19
|
`rails #{path}`
|
20
|
+
FileUtils.rm_rf path + '/public/index.html'
|
21
|
+
File.open(File.join(path, "Gemfile"), "a") do |file|
|
22
|
+
file.write "\ngem 'rspec-rails', '>= 2.0.0.a9'\n" <<
|
23
|
+
"gem 'capybara'\n"
|
24
|
+
end
|
25
|
+
|
20
26
|
File.open(File.join(path, "Gemfile"), "a") do |file|
|
21
|
-
file.write "\ngem '
|
27
|
+
file.write "\ngem 'steak', :path => '#{File.expand_path(File.dirname(__FILE__) + '/../..')}'\n"
|
28
|
+
end
|
29
|
+
|
30
|
+
Dir.chdir path do
|
31
|
+
`rails generate rspec:install`
|
32
|
+
if options[:scaffold]
|
33
|
+
`rails generate scaffold #{options[:scaffold]}`
|
34
|
+
`rake db:create db:migrate db:test:prepare`
|
35
|
+
end
|
22
36
|
end
|
23
|
-
|
24
|
-
|
37
|
+
|
25
38
|
unless options[:setup_steak] == false
|
26
39
|
Dir.chdir path do
|
27
|
-
`rails generate rspec:install`
|
28
40
|
`rails generate steak`
|
29
41
|
end
|
30
42
|
end
|
31
|
-
|
43
|
+
|
32
44
|
path
|
33
45
|
end
|
34
|
-
|
46
|
+
|
35
47
|
end
|
36
48
|
|
37
49
|
module HelperMethods
|
@@ -40,9 +52,9 @@ module HelperMethods
|
|
40
52
|
current_dir = Dir.pwd
|
41
53
|
Dir.chdir app_base
|
42
54
|
end
|
43
|
-
|
55
|
+
|
44
56
|
output = `rspec #{file_path} 2>&1`
|
45
|
-
|
57
|
+
|
46
58
|
Dir.chdir current_dir if app_base
|
47
59
|
output
|
48
60
|
end
|
@@ -52,7 +64,7 @@ class String
|
|
52
64
|
unless const_defined?("CHARS")
|
53
65
|
CHARS = ('a'..'z').to_a + ('A'..'Z').to_a
|
54
66
|
end
|
55
|
-
|
67
|
+
|
56
68
|
def self.random(size = 8)
|
57
69
|
(0..size).map{ CHARS[rand(CHARS.length)] }.join
|
58
70
|
end
|
@@ -30,12 +30,12 @@ feature "Acceptance spec execution", %q{
|
|
30
30
|
feature "Minimal spec" do
|
31
31
|
scenario "First scenario" do
|
32
32
|
get "/"
|
33
|
-
response.should contain(/
|
33
|
+
response.should contain(/No route matches/)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
SPEC
|
37
37
|
output = run_spec spec_file, File.join(File.dirname(spec_file), '../..')
|
38
|
-
output.should =~ /1 example,
|
38
|
+
output.should =~ /1 example, 1 failures/
|
39
39
|
end
|
40
40
|
|
41
41
|
end
|
@@ -5,20 +5,63 @@ feature "Steak generator for rails", %q{
|
|
5
5
|
As a developer
|
6
6
|
I want to run a generator that sets everything up for me
|
7
7
|
} do
|
8
|
-
|
8
|
+
|
9
9
|
scenario "Running generator in an empty project" do
|
10
|
-
|
10
|
+
|
11
11
|
rails_app = create_rails_app(:setup_steak => false)
|
12
|
-
|
12
|
+
|
13
13
|
Dir.chdir rails_app do
|
14
14
|
`rails generate steak`
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
File.exist?(rails_app + "/spec/acceptance/acceptance_helper.rb").should be_true
|
18
18
|
File.exist?(rails_app + "/spec/acceptance/support/helpers.rb").should be_true
|
19
19
|
File.exist?(rails_app + "/spec/acceptance/support/paths.rb").should be_true
|
20
20
|
File.exist?(rails_app + "/lib/tasks/steak.rake").should be_true
|
21
|
-
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
scenario "Running generator with capybara by default" do
|
25
|
+
rails_app = create_rails_app(:setup_steak => false, :scaffold => :users)
|
26
|
+
|
27
|
+
Dir.chdir rails_app do
|
28
|
+
`rails generate steak`
|
29
|
+
end
|
30
|
+
|
31
|
+
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
32
|
+
:content => <<-SPEC
|
33
|
+
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
34
|
+
feature "Capybara spec" do
|
35
|
+
scenario "First scenario" do
|
36
|
+
visit "/users"
|
37
|
+
page.should have_content('Listing users')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
SPEC
|
41
|
+
output = run_spec spec_file, rails_app
|
42
|
+
output.should =~ /1 example, 0 failures/
|
43
|
+
end
|
44
|
+
|
45
|
+
scenario "Running generator with webrat" do
|
46
|
+
rails_app = create_rails_app(:setup_steak => false, :scaffold => :users)
|
47
|
+
|
48
|
+
Dir.chdir rails_app do
|
49
|
+
`rails generate steak --webrat`
|
50
|
+
end
|
51
|
+
|
52
|
+
spec_file = create_spec :path => rails_app + "/spec/acceptance",
|
53
|
+
:content => <<-SPEC
|
54
|
+
require File.dirname(__FILE__) + "/acceptance_helper.rb"
|
55
|
+
feature "Webrat spec" do
|
56
|
+
scenario "First scenario" do
|
57
|
+
visit "/users"
|
58
|
+
response_body.should contain('Listing users')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
SPEC
|
62
|
+
|
63
|
+
output = run_spec spec_file, rails_app
|
64
|
+
output.should =~ /1 example, 0 failures/
|
22
65
|
end
|
23
|
-
|
24
|
-
end
|
66
|
+
|
67
|
+
end
|
metadata
CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 0
|
7
7
|
- 4
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.4.0.
|
9
|
+
- a4
|
10
|
+
version: 0.4.0.a4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Luismi Cavall\xC3\xA9"
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-04
|
18
|
+
date: 2010-05-04 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|