ianwhite-pickle 0.1.6 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +19 -0
- data/lib/pickle/path.rb +5 -5
- data/lib/pickle/version.rb +1 -1
- data/rails_generators/pickle/pickle_generator.rb +13 -4
- data/rails_generators/pickle/templates/{pickle_email_steps.rb → email_steps.rb} +2 -2
- data/rails_generators/pickle/templates/env.rb +8 -6
- data/rails_generators/pickle/templates/paths.rb +20 -0
- data/spec/lib/pickle_path_spec.rb +11 -11
- metadata +4 -4
- data/rails_generators/pickle/templates/pickle_path_steps.rb +0 -53
data/History.txt
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
== 0.1.8 - 29 Jan 2009
|
2
|
+
|
3
|
+
* API change
|
4
|
+
* pickle_path becomes path_to_pickle, to avoid named route clashes
|
5
|
+
|
6
|
+
* 2 minor enhancements
|
7
|
+
* Updated features for cucumber 0.2 compat
|
8
|
+
* Made paths allow for optional possesives
|
9
|
+
|
10
|
+
|
11
|
+
== 0,1,7
|
12
|
+
|
13
|
+
* 2 API changes
|
14
|
+
* script/generate pickle path[s] now amends the features/support/paths.rb file
|
15
|
+
instead of creating pge_to_path and path_steps.
|
16
|
+
|
17
|
+
* pickle_email_steps is renamed email_steps
|
18
|
+
|
19
|
+
|
1
20
|
== 0.1.6
|
2
21
|
|
3
22
|
* 1 API change
|
data/lib/pickle/path.rb
CHANGED
@@ -3,15 +3,15 @@ module Pickle
|
|
3
3
|
# given args of pickle model name, and an optional extra action, or segment, will attempt to find
|
4
4
|
# a matching named route
|
5
5
|
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# path_to_pickle 'the user', :action => 'edit' # => /users/3/edit
|
7
|
+
# path_to_pickle 'the user', 'the comment' # => /users/3/comments/1
|
8
|
+
# path_to_pickle 'the user', :segment => 'comments' # => /users/3/comments
|
9
9
|
#
|
10
10
|
# If you don;t know if the 'extra' part of the path is an action or a segment, then just
|
11
11
|
# pass it as 'extra' and this method will run through the possibilities
|
12
12
|
#
|
13
|
-
#
|
14
|
-
def
|
13
|
+
# path_to_pickle 'the user', :extra => 'new comment' # => /users/3/comments/new
|
14
|
+
def path_to_pickle(*pickle_names)
|
15
15
|
options = pickle_names.extract_options!
|
16
16
|
models = pickle_names.map{|m| model(m)}
|
17
17
|
if options[:extra]
|
data/lib/pickle/version.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
class PickleGenerator < Rails::Generator::Base
|
2
2
|
def initialize(args, options)
|
3
3
|
super(args, options)
|
4
|
-
@generate_path_steps = args.include?('page') || args.include?('path')
|
5
|
-
@generate_email_steps = args.include?('email')
|
6
4
|
File.exists?('features/support/env.rb') or raise "features/support/env.rb not found, try running script/generate cucumber"
|
5
|
+
@generate_email_steps = args.include?('email')
|
6
|
+
if @generate_path_steps = args.include?('path') || args.include?('paths')
|
7
|
+
File.exists?('features/support/paths.rb') or raise "features/support/paths.rb not found, is your cucumber up to date?"
|
8
|
+
end
|
7
9
|
end
|
8
10
|
|
9
11
|
def manifest
|
@@ -15,12 +17,19 @@ class PickleGenerator < Rails::Generator::Base
|
|
15
17
|
|
16
18
|
if @generate_path_steps
|
17
19
|
env_assigns[:pickle_path] = true unless current_env.include?("require 'pickle/path/world'")
|
18
|
-
|
20
|
+
current_paths = File.read('features/support/paths.rb')
|
21
|
+
unless current_paths.include?('#{capture_model}')
|
22
|
+
if current_paths =~ /^(.*)(\n\s+else\n\s+raise ".*"\n\s+end\nend\s*)$/m
|
23
|
+
env_assigns[:current_paths_header] = $1
|
24
|
+
env_assigns[:current_paths_footer] = $2
|
25
|
+
m.template 'paths.rb', File.join('features/support', "paths.rb"), :assigns => env_assigns, :collision => :force
|
26
|
+
end
|
27
|
+
end
|
19
28
|
end
|
20
29
|
|
21
30
|
if @generate_email_steps
|
22
31
|
env_assigns[:pickle_email] = true unless current_env.include?("require 'pickle/email/world'")
|
23
|
-
m.template '
|
32
|
+
m.template 'email_steps.rb', File.join('features/step_definitions', "email_steps.rb")
|
24
33
|
end
|
25
34
|
|
26
35
|
env_assigns[:pickle] = true unless current_env.include?("require 'pickle/world'")
|
@@ -41,8 +41,8 @@ Then(/^#{capture_email} should not contain "(.*)"$/) do |email_ref, text|
|
|
41
41
|
email(email_ref).body.should_not =~ /#{text}/
|
42
42
|
end
|
43
43
|
|
44
|
-
Then(/^#{capture_email} should link to (.+)
|
45
|
-
email(email_ref).body.should =~ /#{
|
44
|
+
Then(/^#{capture_email} should link to (.+)$/) do |email_ref, page|
|
45
|
+
email(email_ref).body.should =~ /#{path_to(page)}/
|
46
46
|
end
|
47
47
|
|
48
48
|
Then(/^show me the emails?$/) do
|
@@ -1,12 +1,14 @@
|
|
1
|
-
<%= current_env
|
2
|
-
|
3
|
-
|
4
|
-
<% if pickle_email %>require 'pickle/email/world'<% end %>
|
5
|
-
<% if pickle %>
|
1
|
+
<%= current_env -%>
|
2
|
+
<%- if pickle -%>
|
3
|
+
require 'pickle/world'
|
6
4
|
# Example of configuring pickle:
|
7
5
|
#
|
8
6
|
# Pickle.configure do |config|
|
9
7
|
# config.adaptors = [:machinist]
|
10
8
|
# config.map 'I', 'myself', 'me', 'my', :to => 'user: "me"'
|
11
9
|
# end
|
12
|
-
|
10
|
+
<%- end -%>
|
11
|
+
<%- if pickle_path -%>require 'pickle/path/world'
|
12
|
+
<%- end -%>
|
13
|
+
<%- if pickle_email -%>require 'pickle/email/world'
|
14
|
+
<%- end -%>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%= current_paths_header %>
|
2
|
+
# added by script/generate pickle path
|
3
|
+
|
4
|
+
when /^#{capture_model}(?:'s)? page$/ # eg. the forum's page
|
5
|
+
path_to_pickle $1
|
6
|
+
|
7
|
+
when /^#{capture_model}(?:'s)? #{capture_model}(?:'s)? page$/ # eg. the forum's post's page
|
8
|
+
path_to_pickle $1, $2
|
9
|
+
|
10
|
+
when /^#{capture_model}(?:'s)? #{capture_model}'s (.+?) page$/ # eg. the forum's post's comments page
|
11
|
+
path_to_pickle $1, $2, :extra => $3 # or the forum's post's edit page
|
12
|
+
|
13
|
+
when /^#{capture_model}(?:'s)? (.+?) page$/ # eg. the forum's posts page
|
14
|
+
path_to_pickle $1, :extra => $2 # or the forum's edit page
|
15
|
+
|
16
|
+
when /^the (.+?) page$/ # translate to named route
|
17
|
+
send "#{$1.downcase.gsub(' ','_')}_path"
|
18
|
+
|
19
|
+
# end added by pickle path
|
20
|
+
<%= current_paths_footer %>
|
@@ -7,52 +7,52 @@ describe Pickle::Path do
|
|
7
7
|
stub!(:model).and_return(@user = mock_model(User))
|
8
8
|
end
|
9
9
|
|
10
|
-
describe "#
|
10
|
+
describe "#path_to_pickle" do
|
11
11
|
it "('a user', 'the user: \"fred\"') should retrieve 'a user', and 'the user: \"fred\"' models" do
|
12
12
|
should_receive(:model).with('a user')
|
13
13
|
should_receive(:model).with('the user: "fred"')
|
14
14
|
stub!(:user_user_path).and_return('the path')
|
15
|
-
|
15
|
+
path_to_pickle 'a user', 'the user: "fred"'
|
16
16
|
end
|
17
17
|
|
18
18
|
it "('a user', :action => 'foo') should return foo_user_path(<user>)" do
|
19
19
|
should_receive(:foo_user_path).with(@user).and_return('the path')
|
20
|
-
|
20
|
+
path_to_pickle('a user', :action => 'foo').should == 'the path'
|
21
21
|
end
|
22
22
|
|
23
23
|
it "('a user', :action => 'foo') should raise informative error if foo_user_path not defined" do
|
24
24
|
should_receive(:foo_user_path).with(@user).and_raise(NoMethodError)
|
25
|
-
lambda {
|
25
|
+
lambda { path_to_pickle('a user', :action => 'foo') }.should raise_error(Exception, /Could not figure out a path for/)
|
26
26
|
end
|
27
27
|
|
28
28
|
it "('a user', :segment => 'foo') should return user_foo_path(<user>)" do
|
29
29
|
should_receive(:user_foo_path).with(@user).and_return('the path')
|
30
|
-
|
30
|
+
path_to_pickle('a user', :segment => 'foo').should == 'the path'
|
31
31
|
end
|
32
32
|
|
33
33
|
it "('a user', :segment => 'foo') should raise informative error if foo_user_path not defined" do
|
34
34
|
should_receive(:user_foo_path).with(@user).and_raise(NoMethodError)
|
35
|
-
lambda {
|
35
|
+
lambda { path_to_pickle('a user', :segment => 'foo') }.should raise_error(Exception, /Could not figure out a path for/)
|
36
36
|
end
|
37
37
|
|
38
38
|
it "('a user', :action => 'new', :segment => 'comment') should return new_user_comment_path(<user>)" do
|
39
39
|
should_receive(:new_user_comment_path).with(@user).and_return('the path')
|
40
|
-
|
40
|
+
path_to_pickle('a user', :segment => 'comment', :action => 'new').should == 'the path'
|
41
41
|
end
|
42
42
|
|
43
43
|
it "('a user', :action => 'new', :segment => 'comment') should raise informative error if new_user_comment_path not defined" do
|
44
44
|
should_receive(:new_user_comment_path).with(@user).and_raise(NoMethodError)
|
45
|
-
lambda {
|
45
|
+
lambda { path_to_pickle('a user', :action => 'new', :segment => 'comment') }.should raise_error(Exception, /Could not figure out a path for/)
|
46
46
|
end
|
47
47
|
|
48
48
|
it "('a user', :extra => 'new comment') should return new_user_comment_path(<user>)" do
|
49
49
|
should_receive(:new_user_comment_path).with(@user).and_return('the path')
|
50
|
-
|
50
|
+
path_to_pickle('a user', :extra => 'new comment').should == 'the path'
|
51
51
|
end
|
52
52
|
|
53
53
|
it "('a user', :extra => 'new comment') should raise informative error if new_user_comment_path not defined" do
|
54
54
|
should_receive(:new_user_comment_path).with(@user).and_raise(NoMethodError)
|
55
|
-
lambda {
|
55
|
+
lambda { path_to_pickle('a user', :extra => 'new comment') }.should raise_error(Exception, /Could not figure out a path for/)
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "(private API)" do
|
@@ -61,7 +61,7 @@ describe Pickle::Path do
|
|
61
61
|
should_receive(:pickle_path_for_models_action_segment).with([@user], 'new', 'ish_comment').once
|
62
62
|
should_receive(:pickle_path_for_models_action_segment).with([@user], 'new_ish', 'comment').once
|
63
63
|
should_receive(:pickle_path_for_models_action_segment).with([@user], 'new_ish_comment', '').once
|
64
|
-
lambda {
|
64
|
+
lambda { path_to_pickle('a user', :extra => 'new ish comment') }.should raise_error(Exception, /Could not figure out a path for/)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ianwhite-pickle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian White
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-29 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -37,9 +37,9 @@ files:
|
|
37
37
|
- lib/pickle/world.rb
|
38
38
|
- lib/pickle.rb
|
39
39
|
- rails_generators/pickle/pickle_generator.rb
|
40
|
+
- rails_generators/pickle/templates/email_steps.rb
|
40
41
|
- rails_generators/pickle/templates/env.rb
|
41
|
-
- rails_generators/pickle/templates/
|
42
|
-
- rails_generators/pickle/templates/pickle_path_steps.rb
|
42
|
+
- rails_generators/pickle/templates/paths.rb
|
43
43
|
- rails_generators/pickle/templates/pickle_steps.rb
|
44
44
|
- License.txt
|
45
45
|
- README.textile
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# this file generated by script/generate pickle page.
|
2
|
-
# You should edit the page_to_path method below for your own app's needs
|
3
|
-
|
4
|
-
# When I go to /sessions/new
|
5
|
-
When(/^I go to \/(.+?)$/) do |path|
|
6
|
-
visit "/#{path}"
|
7
|
-
end
|
8
|
-
|
9
|
-
# Then I should be at /sessions/new
|
10
|
-
Then(/^I should be at \/(.+?)$/) do |path|
|
11
|
-
request.path.should =~ /^\/#{path}/
|
12
|
-
end
|
13
|
-
|
14
|
-
# When I go to the posts's new comment page
|
15
|
-
When(/^I go to (.+?) page$/) do |page|
|
16
|
-
visit page_to_path(page)
|
17
|
-
end
|
18
|
-
|
19
|
-
# Then I should be at the posts's new comment page
|
20
|
-
Then(/^I should be at (.+?) page$/) do |page|
|
21
|
-
request.path.should =~ /^#{page_to_path(page)}/
|
22
|
-
end
|
23
|
-
|
24
|
-
# passed a string like 'the home', returns a path
|
25
|
-
def page_to_path(page)
|
26
|
-
case page
|
27
|
-
# add your own app-specific mappings, e.g.
|
28
|
-
#
|
29
|
-
# when 'the home'
|
30
|
-
# '/'
|
31
|
-
#
|
32
|
-
# when /$#{capture_model}'s activation^/
|
33
|
-
# activation_by_code_path(created_model($1).activation_code)
|
34
|
-
|
35
|
-
when /^#{capture_model}'s$/ # the forum's
|
36
|
-
pickle_path $1
|
37
|
-
|
38
|
-
when /^#{capture_model}'s #{capture_model}'s$/ # the forum's post's
|
39
|
-
pickle_path $1, $2
|
40
|
-
|
41
|
-
when /^#{capture_model}'s #{capture_model}'s (.+?)$/ # the forum's post's comments
|
42
|
-
pickle_path $1, $2, :extra => $3
|
43
|
-
|
44
|
-
when /^#{capture_model}'s (.+?)$/ # the post's comments
|
45
|
-
pickle_path $1, :extra => $2
|
46
|
-
|
47
|
-
when /^the (.+?)$/ # the new session
|
48
|
-
send "#{$1.downcase.gsub(' ','_')}_path"
|
49
|
-
|
50
|
-
else
|
51
|
-
raise "Could not map '#{page}' page to a path"
|
52
|
-
end
|
53
|
-
end
|