saki 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/README.markdown +13 -1
  2. data/VERSION +1 -1
  3. data/lib/saki.rb +27 -19
  4. data/saki.gemspec +2 -2
  5. metadata +3 -7
@@ -41,7 +41,11 @@ The only assumption is that you are using factories instead of fixtures. You al
41
41
 
42
42
  with_existing :user, :state => "happy" do...
43
43
 
44
- `on_visiting` preferably uses some dynamic functions for establishing a path: `new_X_path`, `Xs_path`, `edit_X_path`, `X_path` and `new_X_path`. In these cases, substitute X for the resource name (e.g. `new_user_path`). In cases where the resource is nested, it has a :parent => parent_resource option. This lets you set up blocks like:
44
+ `on_visiting` preferably uses some dynamic functions for establishing a path: `new_X_path`, `Xs_path`, `edit_X_path`, `X_path` and `new_X_path`. In these cases, substitute X for the resource name (e.g. `new_user_path`).
45
+
46
+ Note that for examples like `edit_user_path`, it behaves with a slight difference from the rails route helpers, because it assumes that there already exists an instance variable named `@user`. Since the `edit_user_path` call occurs when there is no `@user`, we can't mention it explicitly.
47
+
48
+ For cases where the resource is nested, these path helpers have a :parent => parent_resource option. This lets you set up blocks like:
45
49
 
46
50
  on_visiting auctions_path(:parent => :user) do ...
47
51
 
@@ -114,6 +118,14 @@ You can generate new acceptance tests with `rails generate saki:spec SPEC_NAME`.
114
118
  end
115
119
  end
116
120
 
121
+ ## Why no specs/tests for Saki, oh test guy?
122
+
123
+ They'll get there :). Saki is extracted from some spec helpers I used in moving from Cucumber to Steak. Once I realized they also work as helpers for vanilla RSpec acceptance testing I made them a separate gem.
124
+
125
+ ## Why are there ugly command-line descriptions?
126
+
127
+ I haven't pimped that up yet, but will at some point. Personally I'm a "green-dot" guy and just care what line a test fails on.
128
+
117
129
  ## References
118
130
 
119
131
  The motivation behind my migration from Cucumber and to Saki, are described in blog posts [Encumbered by Cucumber](http://ludicast.com/articles/1), [Introducing Saki](http://ludicast.com/articles/2).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -1,13 +1,36 @@
1
1
  require 'rspec/core'
2
2
 
3
3
  module Saki
4
- module AcceptanceHelpers
5
- extend ActiveSupport::Concern
6
-
4
+ module GeneralHelpers
5
+ extend ActiveSupport::Concern
7
6
  def default_factory(name, opts = {})
8
7
  Factory name, opts
9
8
  end
10
9
 
10
+ module ClassMethods
11
+ def with_existing resource, opts={}, &block
12
+ context "with exisiting #{resource}" do
13
+ before do
14
+ instance_variable_set "@#{resource}", default_factory(resource, opts)
15
+ end
16
+ module_eval &block
17
+ end
18
+ end
19
+
20
+ def where(executable, *opts, &block)
21
+ context "anonymous closure" do
22
+ before { instance_eval &executable }
23
+ module_eval &block
24
+ end
25
+ end
26
+ end
27
+
28
+ end
29
+
30
+ module AcceptanceHelpers
31
+ extend ActiveSupport::Concern
32
+
33
+
11
34
  def get_path(path)
12
35
  if path.is_a? String
13
36
  path
@@ -67,15 +90,6 @@ module Saki
67
90
  end
68
91
 
69
92
  module ClassMethods
70
- def with_existing resource, opts={}, &block
71
- context "with exisiting #{resource}" do
72
- before do
73
- instance_variable_set "@#{resource}", default_factory(resource, opts)
74
- end
75
- module_eval &block
76
- end
77
- end
78
-
79
93
  def on_following_link_to path, &block
80
94
  context "on following link" do
81
95
  before do
@@ -128,13 +142,6 @@ module Saki
128
142
  add_opts "/#{resource.to_s.pluralize}", opts, context
129
143
  end
130
144
  end
131
-
132
- def where(executable, *opts, &block)
133
- context "anonymous closure" do
134
- before { instance_eval &executable }
135
- module_eval &block
136
- end
137
- end
138
145
  end
139
146
  end
140
147
  end
@@ -187,4 +194,5 @@ module RSpec::Core::ObjectExtensions
187
194
  end
188
195
  end
189
196
 
197
+ RSpec.configuration.include Saki::GeneralHelpers
190
198
  RSpec.configuration.include Saki::AcceptanceHelpers, :type => :acceptance
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{saki}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Nate Kidwell"]
12
- s.date = %q{2010-08-31}
12
+ s.date = %q{2010-09-19}
13
13
  s.description = %q{Cucumber scenarios are long and confusing sometimes. Release yourself from the tyranny of client-centered specing!}
14
14
  s.email = %q{nate@ludicast.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saki
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 1
9
- - 0
10
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
11
10
  platform: ruby
12
11
  authors:
13
12
  - Nate Kidwell
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-08-31 00:00:00 -04:00
17
+ date: 2010-09-19 00:00:00 -04:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -26,7 +25,6 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 3
30
28
  segments:
31
29
  - 0
32
30
  version: "0"
@@ -71,7 +69,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
69
  requirements:
72
70
  - - ">="
73
71
  - !ruby/object:Gem::Version
74
- hash: 3
75
72
  segments:
76
73
  - 0
77
74
  version: "0"
@@ -80,7 +77,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
77
  requirements:
81
78
  - - ">="
82
79
  - !ruby/object:Gem::Version
83
- hash: 3
84
80
  segments:
85
81
  - 0
86
82
  version: "0"