schematic 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.rvmrc +1 -1
- data/lib/schematic/serializers/xsd.rb +8 -2
- data/lib/schematic/version.rb +1 -1
- data/spec/schematic_serializers_xsd_spec.rb +103 -11
- metadata +2 -2
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm 1.9.2-p136@schematic
|
1
|
+
rvm 1.9.2-p136@schematic --create
|
@@ -115,8 +115,14 @@ module Schematic
|
|
115
115
|
builder.xs :element, "name" => method_xsd_name, "minOccurs" => "0", "maxOccurs" => "1" do |element|
|
116
116
|
element.xs :complexType do |complex_type|
|
117
117
|
complex_type.xs :all do |nested_all|
|
118
|
-
values.
|
119
|
-
|
118
|
+
if values.is_a?(Array)
|
119
|
+
values.each do |value|
|
120
|
+
nested_all.xs :element, "name" => value.to_s.dasherize, "minOccurs" => "0"
|
121
|
+
end
|
122
|
+
elsif values.is_a?(Hash)
|
123
|
+
generate_xsd_additional_methods(nested_all, values)
|
124
|
+
else
|
125
|
+
raise "Additional methods must be a hash of hashes or hash of arrays"
|
120
126
|
end
|
121
127
|
end
|
122
128
|
complex_type.xs :attribute, "name" => "type", "type" => "xs:string", "fixed" => "array", "use" => "optional"
|
data/lib/schematic/version.rb
CHANGED
@@ -55,6 +55,12 @@ describe Schematic::Serializers::Xsd do
|
|
55
55
|
validates :some_string, :presence => true
|
56
56
|
validates :some_date, :presence => true, :allow_blank => true
|
57
57
|
validates :some_datetime, :presence => true, :allow_blank => false
|
58
|
+
|
59
|
+
class << self
|
60
|
+
def xsd_methods
|
61
|
+
{:foo => { :bar => { :baz => nil } } }
|
62
|
+
end
|
63
|
+
end
|
58
64
|
end
|
59
65
|
|
60
66
|
end
|
@@ -347,19 +353,20 @@ describe Schematic::Serializers::Xsd do
|
|
347
353
|
end
|
348
354
|
|
349
355
|
describe ".xsd_methods" do
|
350
|
-
|
351
|
-
|
356
|
+
context "given a method" do
|
357
|
+
with_model :some_model do
|
358
|
+
table {}
|
352
359
|
|
353
|
-
|
354
|
-
|
355
|
-
|
360
|
+
model do
|
361
|
+
def self.xsd_methods
|
362
|
+
{:foo_bar => nil}
|
363
|
+
end
|
356
364
|
end
|
357
365
|
end
|
358
|
-
end
|
359
366
|
|
360
|
-
|
361
|
-
|
362
|
-
|
367
|
+
it "should include the additional method" do
|
368
|
+
xsd = generate_xsd_for_model(SomeModel) do
|
369
|
+
<<-XML
|
363
370
|
<xs:element name="id" minOccurs="0" maxOccurs="1">
|
364
371
|
<xs:complexType>
|
365
372
|
<xs:simpleContent>
|
@@ -370,10 +377,95 @@ describe Schematic::Serializers::Xsd do
|
|
370
377
|
</xs:complexType>
|
371
378
|
</xs:element>
|
372
379
|
<xs:element name="foo-bar" minOccurs="0" maxOccurs="1"/>
|
373
|
-
|
380
|
+
XML
|
381
|
+
end
|
382
|
+
|
383
|
+
SomeModel.to_xsd.should == sanitize_xml(xsd)
|
374
384
|
end
|
385
|
+
end
|
375
386
|
|
376
|
-
|
387
|
+
context "given a an array of methods" do
|
388
|
+
with_model :some_model do
|
389
|
+
table {}
|
390
|
+
|
391
|
+
model do
|
392
|
+
def self.xsd_methods
|
393
|
+
{:foo => [:bar, :baz]}
|
394
|
+
end
|
395
|
+
end
|
396
|
+
end
|
397
|
+
|
398
|
+
it "should include the additional methods" do
|
399
|
+
xsd = generate_xsd_for_model(SomeModel) do
|
400
|
+
<<-XML
|
401
|
+
<xs:element name="id" minOccurs="0" maxOccurs="1">
|
402
|
+
<xs:complexType>
|
403
|
+
<xs:simpleContent>
|
404
|
+
<xs:extension base="xs:integer">
|
405
|
+
<xs:attribute name="type" type="xs:string" use="optional"/>
|
406
|
+
</xs:extension>
|
407
|
+
</xs:simpleContent>
|
408
|
+
</xs:complexType>
|
409
|
+
</xs:element>
|
410
|
+
<xs:element name="foo" minOccurs="0" maxOccurs="1">
|
411
|
+
<xs:complexType>
|
412
|
+
<xs:all>
|
413
|
+
<xs:element name="bar" minOccurs="0"/>
|
414
|
+
<xs:element name="baz" minOccurs="0"/>
|
415
|
+
</xs:all>
|
416
|
+
<xs:attribute name="type" type="xs:string" fixed="array" use="optional"/>
|
417
|
+
</xs:complexType>
|
418
|
+
</xs:element>
|
419
|
+
XML
|
420
|
+
end
|
421
|
+
|
422
|
+
SomeModel.to_xsd.should == sanitize_xml(xsd)
|
423
|
+
end
|
424
|
+
end
|
425
|
+
|
426
|
+
context "given nested methods" do
|
427
|
+
with_model :some_model do
|
428
|
+
table {}
|
429
|
+
|
430
|
+
model do
|
431
|
+
def self.xsd_methods
|
432
|
+
{ :foo => { :bar => {:baz => nil } } }
|
433
|
+
end
|
434
|
+
end
|
435
|
+
end
|
436
|
+
|
437
|
+
it "should nested the additional methods" do
|
438
|
+
xsd = generate_xsd_for_model(SomeModel) do
|
439
|
+
<<-XML
|
440
|
+
<xs:element name="id" minOccurs="0" maxOccurs="1">
|
441
|
+
<xs:complexType>
|
442
|
+
<xs:simpleContent>
|
443
|
+
<xs:extension base="xs:integer">
|
444
|
+
<xs:attribute name="type" type="xs:string" use="optional"/>
|
445
|
+
</xs:extension>
|
446
|
+
</xs:simpleContent>
|
447
|
+
</xs:complexType>
|
448
|
+
</xs:element>
|
449
|
+
<xs:element name="foo" minOccurs="0" maxOccurs="1">
|
450
|
+
<xs:complexType>
|
451
|
+
<xs:all>
|
452
|
+
<xs:element name="bar" minOccurs="0" maxOccurs="1">
|
453
|
+
<xs:complexType>
|
454
|
+
<xs:all>
|
455
|
+
<xs:element name="baz" minOccurs="0" maxOccurs="1"/>
|
456
|
+
</xs:all>
|
457
|
+
<xs:attribute name="type" type="xs:string" fixed="array" use="optional"/>
|
458
|
+
</xs:complexType>
|
459
|
+
</xs:element>
|
460
|
+
</xs:all>
|
461
|
+
<xs:attribute name="type" type="xs:string" fixed="array" use="optional"/>
|
462
|
+
</xs:complexType>
|
463
|
+
</xs:element>
|
464
|
+
XML
|
465
|
+
end
|
466
|
+
|
467
|
+
SomeModel.to_xsd.should == sanitize_xml(xsd)
|
468
|
+
end
|
377
469
|
end
|
378
470
|
end
|
379
471
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: schematic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Case Commons, LLC
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-12 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|