sandwich 0.0.19 → 0.0.20

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.19
1
+ 0.0.20
@@ -8,7 +8,7 @@ end
8
8
 
9
9
  World(Sandwich::WithinHelper)
10
10
 
11
- Given /^I(?:'m| am) on the page for (.+)$/ do |record|
11
+ Given /^I(?:\'m| am) on the page for (.+)$/ do |record|
12
12
  visit(polymorphic_path(record))
13
13
  end
14
14
 
@@ -28,6 +28,14 @@ Then /^I should see "([^\"]*)" (?:with)?in (.+)$/ do |text, selector|
28
28
  page.should have_xpath(xpath(selector_for(selector)), :text => text)
29
29
  end
30
30
 
31
+ Then /^I should not see "([^\"]*)" (?:with)?in (.+)$/ do |text, selector|
32
+ page.should_not have_xpath(xpath(selector_for(selector)), :text => text)
33
+ end
34
+
35
+ Then /^I (should|should not) see a link to "([^\"]+)"/ do |action, text|
36
+ page.send(action.underscore, have_xpath("//a", :text => text))
37
+ end
38
+
31
39
  Then /^I should see the header "([^\"]*)"$/ do |text|
32
40
  page.should have_xpath("//h1 | //h2 | //h3 | //h4 | //h5 | //h6")
33
41
  end
@@ -37,7 +45,11 @@ Then /^I should see the (notice|error) "([^\"]*)"$/ do |type, message|
37
45
  end
38
46
 
39
47
  Then /^I should see (.+)$/ do |selector|
40
- locate(:xpath, xpath(selector_for(selector)))
48
+ page.should have_xpath(xpath(selector_for(selector)))
49
+ end
50
+
51
+ Then /^I should not see (.+)$/ do |selector|
52
+ page.should_not have_xpath(xpath(selector_for(selector)))
41
53
  end
42
54
 
43
55
  When /^I fill in the following:$/ do |table|
@@ -27,6 +27,31 @@ module Sandwich
27
27
  raise "No default attribute defined for #{self}"
28
28
  end
29
29
  end
30
+
31
+ def prepare_args(args, op)
32
+ case args
33
+ when Hash
34
+ Hash[*args.each_pair.map { |k, v| prepare_pair(k, v) }.flatten]
35
+ when nil
36
+ {}
37
+ else
38
+ default_attribute_args(args, op)
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def prepare_pair(k, v)
45
+ [k.underscore, prepare_value(k, v)]
46
+ end
47
+
48
+ def prepare_value(key, value)
49
+ if assoc = reflect_on_association(key.to_sym)
50
+ Sandwich::Model::Materializer[assoc.class_name].get(value)
51
+ else
52
+ value
53
+ end
54
+ end
30
55
  end
31
56
  end
32
57
  end
@@ -11,7 +11,7 @@ module Sandwich
11
11
 
12
12
  module Base
13
13
  def Materializer(name)
14
- Materializer[name]
14
+ Sandwich::Model::Materializer[name]
15
15
  end
16
16
 
17
17
  def materialize!(match)
@@ -72,7 +72,7 @@ module Sandwich
72
72
  def attribute_value
73
73
  skip(/\s*"/)
74
74
 
75
- scan(/[^"]+/).tap { |val| skip(/(?:"|\s+)/) }
75
+ scan(/[^"]+/).tap { |val| skip(/(?:"|\s+)/) }.to_s
76
76
  end
77
77
 
78
78
  def has_attribute_separator?
@@ -7,7 +7,7 @@ module Sandwich
7
7
 
8
8
  class Materializer < Sandwich::Model::Materializer
9
9
  def new(args = nil)
10
- @model.make_unsaved(@key, prepare_args(args, :create))
10
+ @model.make_unsaved(@key, @model.prepare_args(args, :create))
11
11
  end
12
12
  end
13
13
 
@@ -19,8 +19,8 @@ module Sandwich
19
19
  include Sandwich::Model::Base::Extensions
20
20
 
21
21
  def blueprint(name = :master, &blueprints)
22
- if block_given?
23
- Machinist::Materializer[name] = self unless name == :master
22
+ if block_given? && name != :master
23
+ Machinist::Materializer[name] = self
24
24
  end
25
25
 
26
26
  super
@@ -37,31 +37,10 @@ module Sandwich
37
37
  end
38
38
 
39
39
  def get(args)
40
- @model.find(:first, :conditions => prepare_args(args, :find)).tap do |result|
40
+ @model.find(:first, :conditions => @model.prepare_args(args, :find)).tap do |result|
41
41
  raise "Could not find model for args: #{args.inspect}" if result.nil?
42
42
  end
43
43
  end
44
-
45
- private
46
-
47
- def prepare_args(args, op)
48
- case args
49
- when Hash
50
- Hash[*args.each_pair.map { |k, v| [k.underscore, prepare_value(k, v)] }.flatten]
51
- when nil
52
- {}
53
- else
54
- @model.default_attribute_args(args, op)
55
- end
56
- end
57
-
58
- def prepare_value(key, value)
59
- if assoc = @model.reflect_on_association(key.to_sym)
60
- self.class[assoc.class_name].get(value)
61
- else
62
- value
63
- end
64
- end
65
44
  end
66
45
  end
67
46
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 19
9
- version: 0.0.19
8
+ - 20
9
+ version: 0.0.20
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-06-09 00:00:00 +01:00
17
+ date: 2010-06-12 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency