pickle 0.4.6 → 0.4.7

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pickle (0.4.6)
4
+ pickle (0.4.7)
5
5
  cucumber (>= 0.8)
6
6
  rake
7
7
 
@@ -47,29 +47,31 @@ GEM
47
47
  selenium-webdriver (>= 0.0.27)
48
48
  xpath (~> 0.1.3)
49
49
  celerity (0.8.8)
50
- childprocess (0.1.7)
51
- ffi (~> 0.6.3)
52
- cucumber (0.10.0)
50
+ childprocess (0.1.8)
51
+ ffi (~> 1.0.6)
52
+ cucumber (0.10.2)
53
53
  builder (>= 2.1.2)
54
- diff-lcs (~> 1.1.2)
55
- gherkin (~> 2.3.2)
56
- json (~> 1.4.6)
57
- term-ansicolor (~> 1.0.5)
58
- cucumber-rails (0.3.2)
59
- cucumber (>= 0.8.0)
54
+ diff-lcs (>= 1.1.2)
55
+ gherkin (>= 2.3.5)
56
+ json (>= 1.4.6)
57
+ term-ansicolor (>= 1.0.5)
58
+ cucumber-rails (0.4.0)
59
+ cucumber (>= 0.10.1)
60
+ nokogiri (>= 1.4.4)
61
+ rack-test (>= 0.5.7)
60
62
  culerity (0.2.15)
61
- database_cleaner (0.6.5)
63
+ database_cleaner (0.6.6)
62
64
  diff-lcs (1.1.2)
63
65
  erubis (2.6.6)
64
66
  abstract (>= 1.0.0)
65
67
  factory_girl (1.3.3)
66
- ffi (0.6.3)
68
+ ffi (1.0.7)
67
69
  rake (>= 0.8.7)
68
- gherkin (2.3.3)
69
- json (~> 1.4.6)
70
+ gherkin (2.3.5)
71
+ json (>= 1.4.6)
70
72
  git (1.2.5)
71
73
  i18n (0.5.0)
72
- json (1.4.6)
74
+ json (1.5.1)
73
75
  json_pure (1.5.1)
74
76
  machinist (1.0.6)
75
77
  mail (2.2.15)
@@ -80,8 +82,8 @@ GEM
80
82
  mime-types (1.16)
81
83
  nokogiri (1.4.4)
82
84
  polyglot (0.3.1)
83
- rack (1.2.1)
84
- rack-mount (0.6.13)
85
+ rack (1.2.2)
86
+ rack-mount (0.6.14)
85
87
  rack (>= 1.0.0)
86
88
  rack-test (0.5.7)
87
89
  rack (>= 1.0)
@@ -114,9 +116,9 @@ GEM
114
116
  railties (~> 3.0)
115
117
  rspec (~> 2.5.0)
116
118
  rubyzip (0.9.4)
117
- selenium-webdriver (0.1.3)
118
- childprocess (~> 0.1.5)
119
- ffi (~> 0.6.3)
119
+ selenium-webdriver (0.1.4)
120
+ childprocess (>= 0.1.7)
121
+ ffi (>= 1.0.7)
120
122
  json_pure
121
123
  rubyzip
122
124
  sqlite3 (1.3.3)
@@ -126,10 +128,10 @@ GEM
126
128
  thor (0.14.6)
127
129
  treetop (1.4.9)
128
130
  polyglot (>= 0.3.1)
129
- tzinfo (0.3.24)
131
+ tzinfo (0.3.25)
130
132
  xpath (0.1.3)
131
133
  nokogiri (~> 1.3)
132
- yard (0.6.4)
134
+ yard (0.6.5)
133
135
 
134
136
  PLATFORMS
135
137
  ruby
@@ -1,3 +1,10 @@
1
+ == 0.4.7
2
+
3
+ * 2 minor improvements
4
+ * Better error message for failing to find a model [Ian White, reported by Yuval Karmi]
5
+ * dev deps updated to latest cucumber & cucumber-rails [Ian White]
6
+
7
+
1
8
  == 0.4.6
2
9
  Documentation updates
3
10
 
@@ -40,21 +40,21 @@ Feature: I can test emails are sent
40
40
 
41
41
  Scenario: Following the first link in an email
42
42
  Given a user exists with name: "Fred", email: "fred@gmail.com"
43
- And an email "cool" with body: "some text <a href='http://example.com/users/1'>example page</a> more text" is delivered to fred@gmail.com
43
+ And an email with a link "example page" to the user's page is delivered to fred@gmail.com
44
44
  Then 1 email should be delivered to the user
45
45
  And I click the first link in the email
46
46
  Then I should be at the user's page
47
47
 
48
48
  Scenario: Following a link in an email by url
49
49
  Given a user exists with name: "Fred", email: "fred@gmail.com"
50
- And an email "cool" with body: "some text <a href='http://example.com/users/1'>example page</a> more text" is delivered to fred@gmail.com
50
+ And an email with a link "example page" to the user's page is delivered to fred@gmail.com
51
51
  Then 1 email should be delivered to the user
52
52
  And I follow "example.com/" in the email
53
53
  Then I should be at the user's page
54
54
 
55
55
  Scenario: Following a link in an email by the text
56
56
  Given a user exists with name: "Fred", email: "fred@gmail.com"
57
- And an email "cool" with body: "some text <a href='http://example.com/users/1'>example page</a> more text" is delivered to fred@gmail.com
57
+ And an email with a link "example page" to the user's page is delivered to fred@gmail.com
58
58
  Then 1 email should be delivered to the user
59
59
  And I follow "example page" in the email
60
60
  Then I should be at the user's page
@@ -59,5 +59,8 @@ Feature: I can easily create models from my factories
59
59
  And the fancy fork: "of cornwood" should be fancy
60
60
 
61
61
  Scenario: create a tine with a missing fork
62
- Then the following should raise Pickle::Session::ModelNotKnownError: "Given a tine exists with fork: the fork"
62
+ Then the following should raise a Pickle::Session::ModelNotKnownError:
63
+ """
64
+ Given a tine exists with fork: the fork
65
+ """
63
66
 
@@ -36,4 +36,11 @@ Feature: I can easily create models from my blueprints
36
36
 
37
37
  And 2 spoons should exist with round: true
38
38
  And the first spoon should be round
39
- And the last spoon should be round
39
+ And the last spoon should be round
40
+
41
+ Scenario: ModelNotKnownError should be informative when failing to find
42
+ Given a spoon exists with round: true
43
+ Then the following should raise a Pickle::Session::ModelNotFoundError with "Can't find a spoon with round: false from the orm in this scenario":
44
+ """
45
+ Then a spoon should exist with round: false
46
+ """
@@ -2,6 +2,11 @@ Given(/^an email "(.*?)" with body: "(.*?)" is delivered to (.+?)$/) do |subject
2
2
  Notifier.email(to, subject, body).deliver
3
3
  end
4
4
 
5
+ Given(/^an email with a link "(.+?)" to (.+?) is delivered to (.+?)$/) do |text, page, to|
6
+ body = "some text <a href='http://example.com/#{path_to(page)}'>#{text}</a> more text"
7
+ Notifier.email(to, "example", body).deliver
8
+ end
9
+
5
10
  Given(/^#{capture_model}'s email is delivered$/) do |model|
6
11
  Notifier.user_email(model!(model)).deliver
7
12
  end
@@ -1,3 +1,7 @@
1
- Then /^the following should raise Pickle::Session::ModelNotKnownError: "([^"]*)"$/ do |step|
2
- lambda { steps step }.should raise_error(Pickle::Session::ModelNotKnownError)
1
+ Then /^the following should raise an? ([\w:]+):$/ do |error, step|
2
+ lambda { steps step }.should raise_error(error.constantize)
3
+ end
4
+
5
+ Then /^the following should raise an? ([\w:]+) with "([^"]*)":$/ do |error, message, step|
6
+ lambda { steps step }.should raise_error(error.constantize, message)
3
7
  end
@@ -5,53 +5,10 @@
5
5
  # files.
6
6
 
7
7
  ENV["RAILS_ENV"] ||= "test"
8
- require File.expand_path(File.dirname(__FILE__) + '/../../cucumber_test_app/config/environment')
8
+ ENV["RAILS_ROOT"] ||= File.expand_path(File.dirname(__FILE__) + '/../../cucumber_test_app')
9
9
 
10
- require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
11
- require 'cucumber/rails/world'
12
- require 'cucumber/rails/active_record'
13
- require 'cucumber/web/tableish'
14
-
15
- require 'capybara/rails'
16
- require 'capybara/cucumber'
17
- require 'capybara/session'
18
- require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
19
- # Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
20
- # order to ease the transition to Capybara we set the default here. If you'd
21
- # prefer to use XPath just remove this line and adjust any selectors in your
22
- # steps to use the XPath syntax.
10
+ require 'capybara'
11
+ require 'cucumber/rails'
23
12
  Capybara.default_selector = :css
24
-
25
- # If you set this to false, any error raised from within your app will bubble
26
- # up to your step definition and out to cucumber unless you catch it somewhere
27
- # on the way. You can make Rails rescue errors and render error pages on a
28
- # per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
29
- #
30
- # If you set this to true, Rails will rescue all errors and render error
31
- # pages, more or less in the same way your application would behave in the
32
- # default production environment. It's not recommended to do this for all
33
- # of your scenarios, as this makes it hard to discover errors in your application.
34
13
  ActionController::Base.allow_rescue = false
35
-
36
- # If you set this to true, each scenario will run in a database transaction.
37
- # You can still turn off transactions on a per-scenario basis, simply tagging
38
- # a feature or scenario with the @no-txn tag. If you are using Capybara,
39
- # tagging with @culerity or @javascript will also turn transactions off.
40
- #
41
- # If you set this to false, transactions will be off for all scenarios,
42
- # regardless of whether you use @no-txn or not.
43
- #
44
- # Beware that turning transactions off will leave data in your database
45
- # after each scenario, which can lead to hard-to-debug failures in
46
- # subsequent scenarios. If you do this, we recommend you create a Before
47
- # block that will explicitly put your database in a known state.
48
- Cucumber::Rails::World.use_transactional_fixtures = true
49
- # How to clean your database when transactions are turned off. See
50
- # http://github.com/bmabey/database_cleaner for more info.
51
- if defined?(ActiveRecord::Base)
52
- begin
53
- require 'database_cleaner'
54
- DatabaseCleaner.strategy = :truncation
55
- rescue LoadError => ignore_if_database_cleaner_not_present
56
- end
57
- end
14
+ DatabaseCleaner.strategy = :truncation
@@ -5,7 +5,7 @@ module Pickle
5
5
 
6
6
  def initialize(name, message = nil)
7
7
  @name = name
8
- @message = message || "The model: '#{name}' is not known in this scenario. Use #create_model to create, or #find_model to find, and store a reference in this scenario."
8
+ @message = message.presence || "The model: '#{name}' is not known in this scenario. Use #create_model to create, or #find_model to find, and store a reference in this scenario."
9
9
  end
10
10
 
11
11
  def to_s
@@ -13,6 +13,9 @@ module Pickle
13
13
  end
14
14
  end
15
15
 
16
+ class ModelNotFoundError < RuntimeError
17
+ end
18
+
16
19
  class << self
17
20
  def included(world_class)
18
21
  proxy_to_pickle_parser(world_class)
@@ -67,7 +70,7 @@ module Pickle
67
70
  end
68
71
 
69
72
  def find_model!(name, fields = nil)
70
- find_model(name, fields) or raise ModelNotKnownError, name
73
+ find_model(name, fields) or raise ModelNotFoundError, "Can't find #{name}#{" with #{fields}" if fields.present?} from the orm in this scenario"
71
74
  end
72
75
 
73
76
  def find_models(factory, fields = nil)
@@ -1,3 +1,3 @@
1
1
  module Pickle
2
- VERSION = "0.4.6"
2
+ VERSION = "0.4.7"
3
3
  end
@@ -253,7 +253,7 @@ describe Pickle::Session do
253
253
 
254
254
  it "should call raise error if find_model returns nil" do
255
255
  should_receive(:find_model).with('name', 'fields').and_return(nil)
256
- lambda { find_model!('name', 'fields') }.should raise_error(Pickle::Session::ModelNotKnownError)
256
+ lambda { find_model!('name', 'fields') }.should raise_error(Pickle::Session::ModelNotFoundError)
257
257
  end
258
258
  end
259
259
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pickle
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 6
10
- version: 0.4.6
9
+ - 7
10
+ version: 0.4.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ian White
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-14 00:00:00 +00:00
18
+ date: 2011-03-24 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency