sandwich 0.0.13 → 0.0.14
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/VERSION +1 -1
- data/lib/sandwich/cucumber/model_steps.rb +14 -2
- data/lib/sandwich/cucumber/web_steps.rb +14 -0
- data/lib/sandwich/cucumber/world.rb +1 -1
- data/lib/sandwich/model/base.rb +11 -2
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.14
|
@@ -1,6 +1,13 @@
|
|
1
1
|
require 'sandwich/ext/string'
|
2
2
|
|
3
|
-
Given /^((?:an?|the|\d+) .+)$/ do |
|
3
|
+
Given /^((?:an?|the|\d+) .+)$/ do |target|
|
4
|
+
case target
|
5
|
+
when String
|
6
|
+
raise %Q{Could not materialize "#{target}"}
|
7
|
+
else
|
8
|
+
target
|
9
|
+
end
|
10
|
+
end
|
4
11
|
|
5
12
|
Transform /(?:an?|\d+|the) .+/ do |match|
|
6
13
|
materialize!(match)
|
@@ -23,7 +30,12 @@ Given /^(.+) belong(?:ing|s) to (an?|the) (.+)$/ do |child, determiner, rest|
|
|
23
30
|
end
|
24
31
|
|
25
32
|
Given /^(.+) has (.+)$/ do |parent, child|
|
26
|
-
|
33
|
+
case child
|
34
|
+
when Array
|
35
|
+
child.each { |c| parent.send(child.first.class.name.underscore.pluralize) << c }
|
36
|
+
else
|
37
|
+
parent.send(child.class.name.underscore.pluralize) << c
|
38
|
+
end
|
27
39
|
end
|
28
40
|
|
29
41
|
Given /^the following (.+):$/ do |what, table|
|
@@ -1,3 +1,17 @@
|
|
1
|
+
module Sandwich
|
2
|
+
module WithinHelper
|
3
|
+
def inside(locator)
|
4
|
+
locator ? within(:xpath, xpath(locator)) { yield } : yield
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
World(Sandwich::WithinHelper)
|
10
|
+
|
11
|
+
When /^I follow "([^\"]*)"(?: (?:with)?in (.+))$/ do |link, container|
|
12
|
+
inside(selector_for(container)) { click_link(link) }
|
13
|
+
end
|
14
|
+
|
1
15
|
Then /^I should see "([^\"]*)" (?:with)?in (.+)$/ do |text, selector|
|
2
16
|
page.should have_xpath(xpath(selector_for(selector)), :text => text)
|
3
17
|
end
|
data/lib/sandwich/model/base.rb
CHANGED
@@ -123,7 +123,14 @@ module Sandwich
|
|
123
123
|
|
124
124
|
def default_attribute_args(value, op)
|
125
125
|
if @default_attribute.respond_to?(:call)
|
126
|
-
@default_attribute.
|
126
|
+
case @default_attribute.arity
|
127
|
+
when 1
|
128
|
+
@default_attribute.call(value)
|
129
|
+
when 2
|
130
|
+
@default_attribute.call(value, op)
|
131
|
+
else
|
132
|
+
raise ArgumentError, "the block sent to #{name}.default_attribute needs 1 or 2 arguments"
|
133
|
+
end
|
127
134
|
elsif @default_attribute
|
128
135
|
{@default_attribute => value}
|
129
136
|
else
|
@@ -134,12 +141,14 @@ module Sandwich
|
|
134
141
|
|
135
142
|
def materialize!(match)
|
136
143
|
determiner, model, values = definition(match).model_definition
|
144
|
+
|
145
|
+
return match if model.nil?
|
137
146
|
|
138
147
|
if creator?(determiner)
|
139
148
|
if determiner.to_i == 1
|
140
149
|
record!(model, values)
|
141
150
|
else
|
142
|
-
determiner.times.map { record!(model, values) }
|
151
|
+
determiner.times.map { record!(model.singularize, values) }
|
143
152
|
end
|
144
153
|
else
|
145
154
|
record(model, values)
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 14
|
9
|
+
version: 0.0.14
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- David Leal
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-12 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|