schematic 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,7 +19,10 @@ module Schematic
19
19
  def generate(builder)
20
20
  return if skip_generation?
21
21
 
22
- builder.xs :element, "name" => @column.name.dasherize, "minOccurs" => minimum_occurrences_for_column, "maxOccurs" => "1" do |field|
22
+ builder.xs :element,
23
+ "name" => @column.name.dasherize,
24
+ "minOccurs" => minimum_occurrences_for_column,
25
+ "maxOccurs" => "1" do |field|
23
26
  field.xs :complexType do |complex_type|
24
27
  complex_type.xs :simpleContent do |simple_content|
25
28
  simple_content.xs :restriction, "base" => map_type(@column) do |restriction|
@@ -19,6 +19,7 @@ module Schematic
19
19
  complex_type.xs :simpleContent do |simple_content|
20
20
  simple_content.xs :extension, "base" => xsd_type do |extension|
21
21
  extension.xs :attribute, "name" => "type", "type" => "xs:string", "use" => "optional"
22
+ extension.xs :attribute, "name" => "nil", "type" => "xs:boolean", "use" => "optional"
22
23
  end
23
24
  end
24
25
  end
@@ -38,7 +38,9 @@ module Schematic
38
38
  nested_attributes.each do |nested_attribute|
39
39
  next if nested_attribute.klass == klass
40
40
  next if nested_attribute.klass == klass.superclass
41
- next if @options && @options[:generated_types] && @options[:generated_types].include?(nested_attribute.klass)
41
+ @options ||= {}
42
+ @options[:generated_types] ||= []
43
+ next if @options[:generated_types].include?(nested_attribute.klass)
42
44
  nested_attribute.klass.schematic_sandbox.generate_xsd(builder, klass, @options)
43
45
  @options[:generated_types] << nested_attribute.klass
44
46
  end
@@ -1,3 +1,3 @@
1
1
  module Schematic
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -41,7 +41,9 @@ describe Schematic::Serializers::Xsd do
41
41
 
42
42
  context "given a method with validations" do
43
43
  with_model :some_model do
44
- table {}
44
+ table :id => false do |t|
45
+ t.string :foo
46
+ end
45
47
 
46
48
  model do
47
49
  validates :foo_bar, :inclusion => { :in => [1,2,3] }
@@ -68,10 +70,10 @@ describe Schematic::Serializers::Xsd do
68
70
  it "should generate validation restrictions for the method if there are any" do
69
71
  xsd = generate_xsd_for_model(SomeModel) do
70
72
  <<-XML
71
- <xs:element name="id" minOccurs="0" maxOccurs="1">
73
+ <xs:element name="foo" minOccurs="0" maxOccurs="1">
72
74
  <xs:complexType>
73
75
  <xs:simpleContent>
74
- <xs:restriction base="Integer">
76
+ <xs:restriction base="String">
75
77
  </xs:restriction>
76
78
  </xs:simpleContent>
77
79
  </xs:complexType>
@@ -111,7 +113,9 @@ describe Schematic::Serializers::Xsd do
111
113
 
112
114
  context "given a singular enumeration restriction" do
113
115
  with_model :some_model do
114
- table {}
116
+ table :id => false do |t|
117
+ t.string :foo
118
+ end
115
119
 
116
120
  model do
117
121
 
@@ -134,10 +138,10 @@ describe Schematic::Serializers::Xsd do
134
138
  it "should include the additional methods" do
135
139
  xsd = generate_xsd_for_model(SomeModel) do
136
140
  <<-XML
137
- <xs:element name="id" minOccurs="0" maxOccurs="1">
141
+ <xs:element name="foo" minOccurs="0" maxOccurs="1">
138
142
  <xs:complexType>
139
143
  <xs:simpleContent>
140
- <xs:restriction base="Integer">
144
+ <xs:restriction base="String">
141
145
  </xs:restriction>
142
146
  </xs:simpleContent>
143
147
  </xs:complexType>
@@ -176,7 +180,9 @@ describe Schematic::Serializers::Xsd do
176
180
 
177
181
  context "given a an array of methods" do
178
182
  with_model :some_model do
179
- table {}
183
+ table :id => false do |t|
184
+ t.string :bar
185
+ end
180
186
 
181
187
  model do
182
188
  def foo=(value)
@@ -204,10 +210,10 @@ describe Schematic::Serializers::Xsd do
204
210
  it "should include the additional methods" do
205
211
  xsd = generate_xsd_for_model(SomeModel) do
206
212
  <<-XML
207
- <xs:element name="id" minOccurs="0" maxOccurs="1">
213
+ <xs:element name="bar" minOccurs="0" maxOccurs="1">
208
214
  <xs:complexType>
209
215
  <xs:simpleContent>
210
- <xs:restriction base="Integer">
216
+ <xs:restriction base="String">
211
217
  </xs:restriction>
212
218
  </xs:simpleContent>
213
219
  </xs:complexType>
@@ -56,7 +56,7 @@ describe Schematic::Serializers::Xsd do
56
56
  subject { SomeModel.to_xsd }
57
57
 
58
58
  with_model :some_model do
59
- table do |t|
59
+ table :id => false do |t|
60
60
  t.string "some_string"
61
61
  t.text "some_text"
62
62
  t.float "some_float"
@@ -134,39 +134,42 @@ describe Schematic::Serializers::Xsd do
134
134
  end
135
135
 
136
136
  context "when the model has a nested attribute on a subclass with a reference to the superclass" do
137
- with_model :parent do
138
- table {}
139
- model do
140
- has_many :children, :class_name => "Namespace::Child"
141
- accepts_nested_attributes_for :children
142
- end
143
- end
144
-
145
137
  with_model :child do
146
138
  table do |t|
147
139
  t.integer :parent_id
148
140
  end
149
-
150
- model do
151
- belongs_to :parent
152
- end
141
+ model {}
153
142
  end
143
+ with_model :parent do
144
+ table {}
145
+ model {}
146
+ end
147
+
154
148
 
155
149
  before do
156
- module Namespace; end
157
- class Namespace::Child < Child
150
+ ::Child.class_eval do
151
+ belongs_to :parent
152
+ end
153
+ module Namespace
154
+ if defined?(SubChild)
155
+ remove_const(:SubChild)
156
+ end
157
+ end
158
+ class Namespace::SubChild < ::Child
158
159
  accepts_nested_attributes_for :parent
159
160
  end
161
+ ::Parent.class_eval do
162
+ has_many :children, :class_name => "Namespace::SubChild"
163
+ accepts_nested_attributes_for :children
164
+ end
160
165
  end
161
166
 
162
- subject { Namespace::Child.to_xsd }
167
+ subject { Namespace::SubChild.to_xsd }
163
168
 
164
- it "should generate a valid XSD" do
169
+ it "should generate a valid xsd and validate against its own XSD" do
165
170
  validate_xsd(subject)
166
- end
167
-
168
- it "should validate against its own XSD" do
169
- child_instance = Namespace::Child.new(:parent_id => 123)
171
+ child_instance = Namespace::SubChild.new(:parent_id => 123)
172
+ child_instance.save!
170
173
  xml = [child_instance].to_xml
171
174
  lambda {
172
175
  validate_xml_against_xsd(xml, subject)
@@ -175,7 +178,7 @@ describe Schematic::Serializers::Xsd do
175
178
  end
176
179
 
177
180
  context "when the model has a nested attribute on a subclass with a different class name than the association" do
178
- with_model :parent do
181
+ with_model :parent2 do
179
182
  table {}
180
183
  model do
181
184
  has_many :children, :class_name => "SpecialChild"
@@ -189,11 +192,11 @@ describe Schematic::Serializers::Xsd do
189
192
  end
190
193
 
191
194
  model do
192
- belongs_to :parent
195
+ belongs_to :parent2
193
196
  end
194
197
  end
195
198
 
196
- subject { Parent.to_xsd }
199
+ subject { Parent2.to_xsd }
197
200
 
198
201
  it "should generate a valid XSD" do
199
202
  subject.should include "children-attributes"
@@ -281,6 +284,7 @@ describe Schematic::Serializers::Xsd do
281
284
  <xs:simpleContent>
282
285
  <xs:extension base="xs:integer">
283
286
  <xs:attribute name="type" type="xs:string" use="optional"/>
287
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
284
288
  </xs:extension>
285
289
  </xs:simpleContent>
286
290
  </xs:complexType>
@@ -288,6 +292,7 @@ describe Schematic::Serializers::Xsd do
288
292
  <xs:simpleContent>
289
293
  <xs:extension base="xs:float">
290
294
  <xs:attribute name="type" type="xs:string" use="optional"/>
295
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
291
296
  </xs:extension>
292
297
  </xs:simpleContent>
293
298
  </xs:complexType>
@@ -295,6 +300,7 @@ describe Schematic::Serializers::Xsd do
295
300
  <xs:simpleContent>
296
301
  <xs:extension base="xs:string">
297
302
  <xs:attribute name="type" type="xs:string" use="optional"/>
303
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
298
304
  </xs:extension>
299
305
  </xs:simpleContent>
300
306
  </xs:complexType>
@@ -302,6 +308,7 @@ describe Schematic::Serializers::Xsd do
302
308
  <xs:simpleContent>
303
309
  <xs:extension base="xs:string">
304
310
  <xs:attribute name="type" type="xs:string" use="optional"/>
311
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
305
312
  </xs:extension>
306
313
  </xs:simpleContent>
307
314
  </xs:complexType>
@@ -309,6 +316,7 @@ describe Schematic::Serializers::Xsd do
309
316
  <xs:simpleContent>
310
317
  <xs:extension base="xs:dateTime">
311
318
  <xs:attribute name="type" type="xs:string" use="optional"/>
319
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
312
320
  </xs:extension>
313
321
  </xs:simpleContent>
314
322
  </xs:complexType>
@@ -316,6 +324,7 @@ describe Schematic::Serializers::Xsd do
316
324
  <xs:simpleContent>
317
325
  <xs:extension base="xs:date">
318
326
  <xs:attribute name="type" type="xs:string" use="optional"/>
327
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
319
328
  </xs:extension>
320
329
  </xs:simpleContent>
321
330
  </xs:complexType>
@@ -323,6 +332,7 @@ describe Schematic::Serializers::Xsd do
323
332
  <xs:simpleContent>
324
333
  <xs:extension base="xs:boolean">
325
334
  <xs:attribute name="type" type="xs:string" use="optional"/>
335
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
326
336
  </xs:extension>
327
337
  </xs:simpleContent>
328
338
  </xs:complexType>
data/spec/spec_helper.rb CHANGED
@@ -48,6 +48,7 @@ def generate_xsd_for_model(model, header_element = nil)
48
48
  <xs:simpleContent>
49
49
  <xs:extension base="xs:integer">
50
50
  <xs:attribute name="type" type="xs:string" use="optional"/>
51
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
51
52
  </xs:extension>
52
53
  </xs:simpleContent>
53
54
  </xs:complexType>
@@ -55,6 +56,7 @@ def generate_xsd_for_model(model, header_element = nil)
55
56
  <xs:simpleContent>
56
57
  <xs:extension base="xs:float">
57
58
  <xs:attribute name="type" type="xs:string" use="optional"/>
59
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
58
60
  </xs:extension>
59
61
  </xs:simpleContent>
60
62
  </xs:complexType>
@@ -62,6 +64,7 @@ def generate_xsd_for_model(model, header_element = nil)
62
64
  <xs:simpleContent>
63
65
  <xs:extension base="xs:string">
64
66
  <xs:attribute name="type" type="xs:string" use="optional"/>
67
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
65
68
  </xs:extension>
66
69
  </xs:simpleContent>
67
70
  </xs:complexType>
@@ -69,6 +72,7 @@ def generate_xsd_for_model(model, header_element = nil)
69
72
  <xs:simpleContent>
70
73
  <xs:extension base="xs:string">
71
74
  <xs:attribute name="type" type="xs:string" use="optional"/>
75
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
72
76
  </xs:extension>
73
77
  </xs:simpleContent>
74
78
  </xs:complexType>
@@ -76,6 +80,7 @@ def generate_xsd_for_model(model, header_element = nil)
76
80
  <xs:simpleContent>
77
81
  <xs:extension base="xs:dateTime">
78
82
  <xs:attribute name="type" type="xs:string" use="optional"/>
83
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
79
84
  </xs:extension>
80
85
  </xs:simpleContent>
81
86
  </xs:complexType>
@@ -83,6 +88,7 @@ def generate_xsd_for_model(model, header_element = nil)
83
88
  <xs:simpleContent>
84
89
  <xs:extension base="xs:date">
85
90
  <xs:attribute name="type" type="xs:string" use="optional"/>
91
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
86
92
  </xs:extension>
87
93
  </xs:simpleContent>
88
94
  </xs:complexType>
@@ -90,6 +96,7 @@ def generate_xsd_for_model(model, header_element = nil)
90
96
  <xs:simpleContent>
91
97
  <xs:extension base="xs:boolean">
92
98
  <xs:attribute name="type" type="xs:string" use="optional"/>
99
+ <xs:attribute name="nil" type="xs:boolean" use="optional"/>
93
100
  </xs:extension>
94
101
  </xs:simpleContent>
95
102
  </xs:complexType>
@@ -6,12 +6,11 @@ module ActiveModel
6
6
  # == Active Model Inclusion Validator
7
7
  module Validations
8
8
  class InclusionValidator < EachValidator
9
- ERROR_MESSAGE = "An object with the method #include? or a proc or lambda is required, " <<
10
- "and must be supplied as the :in option of the configuration hash"
11
-
12
9
  def check_validity!
13
10
  unless [:include?, :call].any?{ |method| options[:in].respond_to?(method) }
14
- raise ArgumentError, ERROR_MESSAGE
11
+ error_message = "An object with the method #include? or a proc or lambda is required, " <<
12
+ "and must be supplied as the :in option of the configuration hash"
13
+ raise ArgumentError, error_message
15
14
  end
16
15
  end
17
16
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schematic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-30 00:00:00.000000000Z
12
+ date: 2011-09-15 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &2160710780 !ruby/object:Gem::Requirement
16
+ requirement: &2164310000 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2160710780
24
+ version_requirements: *2164310000
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: builder
27
- requirement: &2160710120 !ruby/object:Gem::Requirement
27
+ requirement: &2164309120 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2160710120
35
+ version_requirements: *2164309120
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec-rails
38
- requirement: &2160709240 !ruby/object:Gem::Requirement
38
+ requirement: &2164308120 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '2.1'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2160709240
46
+ version_requirements: *2164308120
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: with_model
49
- requirement: &2160708640 !ruby/object:Gem::Requirement
49
+ requirement: &2164307420 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2160708640
57
+ version_requirements: *2164307420
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: nokogiri
60
- requirement: &2160707900 !ruby/object:Gem::Requirement
60
+ requirement: &2164304880 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2160707900
68
+ version_requirements: *2164304880
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
- requirement: &2160707220 !ruby/object:Gem::Requirement
71
+ requirement: &2164303960 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2160707220
79
+ version_requirements: *2164303960
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: autotest
82
- requirement: &2160700000 !ruby/object:Gem::Requirement
82
+ requirement: &2164288000 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2160700000
90
+ version_requirements: *2164288000
91
91
  description: Automatic XSD generation from ActiveRecord models
92
92
  email:
93
93
  - casecommons-dev@googlegroups.com
@@ -153,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
153
153
  version: '0'
154
154
  segments:
155
155
  - 0
156
- hash: 2951425198536234180
156
+ hash: -1652545114662954696
157
157
  required_rubygems_version: !ruby/object:Gem::Requirement
158
158
  none: false
159
159
  requirements:
@@ -162,10 +162,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
162
  version: '0'
163
163
  segments:
164
164
  - 0
165
- hash: 2951425198536234180
165
+ hash: -1652545114662954696
166
166
  requirements: []
167
167
  rubyforge_project: schematic
168
- rubygems_version: 1.8.6
168
+ rubygems_version: 1.8.10
169
169
  signing_key:
170
170
  specification_version: 3
171
171
  summary: Automatic XSD generation from ActiveRecord models