schematic 0.6.2 → 0.7.0

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.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -8
  3. data/.travis.yml +17 -0
  4. data/Gemfile +6 -1
  5. data/LICENSE +1 -1
  6. data/README.md +106 -0
  7. data/Rakefile +3 -8
  8. data/lib/schematic.rb +3 -42
  9. data/lib/schematic/exceptions.rb +13 -0
  10. data/lib/schematic/generator/column.rb +17 -11
  11. data/lib/schematic/generator/namespaces.rb +3 -3
  12. data/lib/schematic/generator/restrictions/base.rb +5 -5
  13. data/lib/schematic/generator/restrictions/custom.rb +3 -2
  14. data/lib/schematic/generator/restrictions/enumeration.rb +5 -2
  15. data/lib/schematic/generator/restrictions/length.rb +4 -2
  16. data/lib/schematic/generator/restrictions/numericality.rb +3 -1
  17. data/lib/schematic/generator/restrictions/pattern.rb +4 -3
  18. data/lib/schematic/generator/sandbox.rb +4 -1
  19. data/lib/schematic/generator/types.rb +14 -13
  20. data/lib/schematic/generator/uniqueness.rb +7 -8
  21. data/lib/schematic/generator/xsd.rb +32 -26
  22. data/lib/schematic/serializers/xsd.rb +6 -6
  23. data/lib/schematic/version.rb +1 -1
  24. data/schematic.gemspec +23 -24
  25. data/spec/schematic/generator/restrictions/custom_spec.rb +15 -18
  26. data/spec/schematic/generator/restrictions/enumeration_spec.rb +31 -31
  27. data/spec/schematic/generator/restrictions/length_spec.rb +35 -30
  28. data/spec/schematic/generator/restrictions/mixin_spec.rb +11 -15
  29. data/spec/schematic/generator/restrictions/numericality_spec.rb +11 -11
  30. data/spec/schematic/generator/restrictions/pattern_spec.rb +20 -21
  31. data/spec/schematic/generator/sandbox_spec.rb +17 -17
  32. data/spec/schematic/generator/uniqueness_spec.rb +38 -37
  33. data/spec/schematic/serializers/xsd_extend_spec.rb +11 -11
  34. data/spec/schematic/serializers/xsd_validation_presence_spec.rb +16 -11
  35. data/spec/schematic/serializers/xsd_xsd_ignore_methods_spec.rb +3 -3
  36. data/spec/schematic/serializers/xsd_xsd_methods_spec.rb +27 -24
  37. data/spec/schematic/serializers/xsd_xsd_minimum_occurrences_for_spec.rb +13 -8
  38. data/spec/schematic_serializers_xsd_spec.rb +70 -67
  39. data/spec/spec_helper.rb +8 -113
  40. data/spec/support/database.rb +9 -0
  41. data/spec/support/helpers.rb +111 -0
  42. data/spec/support/with_model.rb +5 -0
  43. data/spec/{xsd → support/xsd}/XMLSchema.xsd +0 -0
  44. data/spec/{xsd → support/xsd}/xml.xsd +0 -0
  45. metadata +54 -69
  46. data/.rspec +0 -1
  47. data/.rvmrc +0 -1
  48. data/README.rdoc +0 -103
  49. data/spec/support/extensions/active_model/validations/inclusion.rb +0 -69
@@ -1,3 +1,6 @@
1
+ require 'builder'
2
+ require 'schematic/generator/xsd'
3
+
1
4
  module Schematic
2
5
  module Generator
3
6
  class Sandbox
@@ -20,7 +23,7 @@ module Schematic
20
23
  end
21
24
 
22
25
  def to_xsd(options = {})
23
- output = ""
26
+ output = ''
24
27
  builder = Builder::XmlMarkup.new(:target => output, :indent => 2)
25
28
  xsd_generator.options = options
26
29
  xsd_generator.header(builder)
@@ -2,24 +2,25 @@ module Schematic
2
2
  module Generator
3
3
  class Types
4
4
  COMPLEX = {
5
- :integer => { :complex_type => "Integer", :xsd_type => "xs:integer" },
6
- :float => { :complex_type => "Float", :xsd_type => "xs:float" },
7
- :string => { :complex_type => "String", :xsd_type => "xs:string" },
8
- :text => { :complex_type => "Text", :xsd_type => "xs:string" },
9
- :datetime => { :complex_type => "DateTime", :xsd_type => "xs:dateTime" },
10
- :date => { :complex_type => "Date", :xsd_type => "xs:date" },
11
- :boolean => { :complex_type => "Boolean", :xsd_type => "xs:boolean" },
12
- }
5
+ :integer => { :complex_type => 'Integer', :xsd_type => 'xs:integer' }.freeze,
6
+ :float => { :complex_type => 'Float', :xsd_type => 'xs:float' }.freeze,
7
+ :string => { :complex_type => 'String', :xsd_type => 'xs:string' }.freeze,
8
+ :text => { :complex_type => 'Text', :xsd_type => 'xs:string' }.freeze,
9
+ :datetime => { :complex_type => 'DateTime', :xsd_type => 'xs:dateTime' }.freeze,
10
+ :date => { :complex_type => 'Date', :xsd_type => 'xs:date' }.freeze,
11
+ :boolean => { :complex_type => 'Boolean', :xsd_type => 'xs:boolean' }.freeze,
12
+ :uuid => { :complex_type => 'String', :xsd_type => 'xs:string' }.freeze,
13
+ }.freeze
13
14
 
14
15
  def self.xsd(builder)
15
- Types::COMPLEX.each do |key, value|
16
+ Types::COMPLEX.values.uniq.each do |value|
16
17
  complex_type_name = value[:complex_type]
17
18
  xsd_type = value[:xsd_type]
18
- builder.xs :complexType, "name" => complex_type_name do |complex_type|
19
+ builder.xs :complexType, 'name' => complex_type_name do |complex_type|
19
20
  complex_type.xs :simpleContent do |simple_content|
20
- simple_content.xs :extension, "base" => xsd_type do |extension|
21
- extension.xs :attribute, "name" => "type", "type" => "xs:string", "use" => "optional"
22
- extension.xs :attribute, "name" => "nil", "type" => "xs:boolean", "use" => "optional"
21
+ simple_content.xs :extension, 'base' => xsd_type do |extension|
22
+ extension.xs :attribute, 'name' => 'type', 'type' => 'xs:string', 'use' => 'optional'
23
+ extension.xs :attribute, 'name' => 'nil', 'type' => 'xs:boolean', 'use' => 'optional'
23
24
  end
24
25
  end
25
26
  end
@@ -1,18 +1,20 @@
1
+ require 'active_record/validations/uniqueness'
2
+ require 'schematic/generator/column_validator'
3
+
1
4
  module Schematic
2
5
  module Generator
3
6
  class Uniqueness < ColumnValidator
4
-
5
7
  def generate(builder)
6
8
  for_validator ActiveRecord::Validations::UniquenessValidator do |validator|
7
9
  unique_name = validator.attributes.first.to_s.dasherize
8
10
  additional_fields = (Array.wrap(validator.options[:scope]) || []).map(&:to_s).map(&:dasherize)
9
11
 
10
12
  names = Schematic::Generator::Names.new(@klass)
11
- builder.xs :unique, "name" => "#{unique_name}-must-be-unique" do |unique|
12
- unique.xs :selector, "xpath" => "./#{names.element}"
13
- unique.xs :field, "xpath" => unique_name
13
+ builder.xs :unique, 'name' => "#{unique_name}-must-be-unique" do |unique|
14
+ unique.xs :selector, 'xpath' => "./#{names.element}"
15
+ unique.xs :field, 'xpath' => unique_name
14
16
  additional_fields.each do |additional_field|
15
- unique.xs :field, "xpath" => additional_field
17
+ unique.xs :field, 'xpath' => additional_field
16
18
  end
17
19
  end
18
20
  end
@@ -20,6 +22,3 @@ module Schematic
20
22
  end
21
23
  end
22
24
  end
23
-
24
-
25
-
@@ -1,3 +1,9 @@
1
+ require 'schematic/generator/column'
2
+ require 'schematic/generator/names'
3
+ require 'schematic/generator/namespaces'
4
+ require 'schematic/generator/types'
5
+ require 'schematic/generator/uniqueness'
6
+
1
7
  module Schematic
2
8
  module Generator
3
9
  class Xsd
@@ -21,7 +27,7 @@ module Schematic
21
27
  end
22
28
 
23
29
  def schema(builder)
24
- builder.xs :schema, ns("xs", :w3, :schema) do |schema|
30
+ builder.xs :schema, ns('xs', :w3, :schema) do |schema|
25
31
  Types.xsd(schema)
26
32
  element_for_klass(schema)
27
33
  generate(schema, @klass)
@@ -29,7 +35,7 @@ module Schematic
29
35
  end
30
36
 
31
37
  def element_for_klass(builder)
32
- builder.xs :element, "name" => @names.element_collection, "type" => @names.collection_type do |element|
38
+ builder.xs :element, 'name' => @names.element_collection, 'type' => @names.collection_type do |element|
33
39
  generate_uniqueness_constraints(element)
34
40
  end
35
41
  end
@@ -65,16 +71,16 @@ module Schematic
65
71
  end
66
72
 
67
73
  def generate_complex_type_for_collection(builder)
68
- builder.xs :complexType, "name" => @names.collection_type do |complex_type|
74
+ builder.xs :complexType, 'name' => @names.collection_type do |complex_type|
69
75
  complex_type.xs :sequence do |sequence|
70
- sequence.xs :element, "name" => @names.element, "type" => @names.type, "minOccurs" => "0", "maxOccurs" => "unbounded"
76
+ sequence.xs :element, 'name' => @names.element, 'type' => @names.type, 'minOccurs' => '0', 'maxOccurs' => 'unbounded'
71
77
  end
72
- complex_type.xs :attribute, "name" => "type", "type" => "xs:string", "fixed" => "array"
78
+ complex_type.xs :attribute, 'name' => 'type', 'type' => 'xs:string', 'fixed' => 'array'
73
79
  end
74
80
  end
75
81
 
76
82
  def generate_complex_type_for_model(builder)
77
- builder.xs :complexType, "name" => @names.type do |complex_type|
83
+ builder.xs :complexType, 'name' => @names.type do |complex_type|
78
84
  additional_methods = @klass.schematic_sandbox.added_elements.merge(@options[:methods] || {})
79
85
  ignored_methods = @klass.schematic_sandbox.ignored_elements.dup
80
86
  exclude = @exclude
@@ -98,22 +104,22 @@ module Schematic
98
104
  case nested_attribute.macro
99
105
  when :has_many
100
106
  all.xs :element,
101
- "name" => nested_attribute_name(nested_attribute.name),
102
- "type" => nested_attribute.klass.schematic_sandbox.xsd_generator.names.collection_type,
103
- "minOccurs" => "0",
104
- "maxOccurs" => "1"
107
+ 'name' => nested_attribute_name(nested_attribute.name),
108
+ 'type' => nested_attribute.klass.schematic_sandbox.xsd_generator.names.collection_type,
109
+ 'minOccurs' => '0',
110
+ 'maxOccurs' => '1'
105
111
  when :has_one
106
112
  all.xs :element,
107
- "name" => nested_attribute_name(nested_attribute.name, {:pluralized => false}),
108
- "type" => nested_attribute.klass.schematic_sandbox.xsd_generator.names.type,
109
- "minOccurs" => "0",
110
- "maxOccurs" => "1"
113
+ 'name' => nested_attribute_name(nested_attribute.name, {:pluralized => false}),
114
+ 'type' => nested_attribute.klass.schematic_sandbox.xsd_generator.names.type,
115
+ 'minOccurs' => '0',
116
+ 'maxOccurs' => '1'
111
117
  when :belongs_to
112
118
  all.xs :element,
113
- "name" => nested_attribute_name(nested_attribute.name, {:pluralized => false}),
114
- "type" => nested_attribute.klass.schematic_sandbox.xsd_generator.names.type,
115
- "minOccurs" => "0",
116
- "maxOccurs" => "1"
119
+ 'name' => nested_attribute_name(nested_attribute.name, {:pluralized => false}),
120
+ 'type' => nested_attribute.klass.schematic_sandbox.xsd_generator.names.type,
121
+ 'minOccurs' => '0',
122
+ 'maxOccurs' => '1'
117
123
  end
118
124
  end
119
125
 
@@ -140,10 +146,10 @@ module Schematic
140
146
  enumeration_method = "xsd_#{value}_enumeration_restrictions".to_sym
141
147
  builder.xs :complexType do |complex_type|
142
148
  complex_type.xs :simpleContent do |simple_content|
143
- simple_content.xs :restriction, "base" => "String" do |restriction|
149
+ simple_content.xs :restriction, 'base' => 'String' do |restriction|
144
150
  if @klass.respond_to? enumeration_method
145
151
  @klass.send(enumeration_method).each do |enumeration|
146
- restriction.xs :enumeration, "value" => enumeration
152
+ restriction.xs :enumeration, 'value' => enumeration
147
153
  end
148
154
  end
149
155
  end
@@ -155,18 +161,18 @@ module Schematic
155
161
  additional_methods.each do |method_name, values|
156
162
  method_xsd_name = method_name.to_s.dasherize
157
163
  if values.is_a?(Array) || values.is_a?(Hash)
158
- builder.xs :element, "name" => method_xsd_name, "minOccurs" => "0", "maxOccurs" => "1" do |element|
164
+ builder.xs :element, 'name' => method_xsd_name, 'minOccurs' => '0', 'maxOccurs' => '1' do |element|
159
165
  element.xs :complexType do |complex_type|
160
166
  if values.is_a?(Array)
161
167
  complex_type.xs :sequence do |nested_sequence|
162
168
  if values.present?
163
169
  values.each do |value|
164
- nested_sequence.xs :element, "name" => value.to_s.dasherize, "minOccurs" => "0", "maxOccurs" => "unbounded" do |sequence_element|
170
+ nested_sequence.xs :element, 'name' => value.to_s.dasherize, 'minOccurs' => '0', 'maxOccurs' => 'unbounded' do |sequence_element|
165
171
  generate_inclusion_value_restrictions(sequence_element, value)
166
172
  end
167
173
  end
168
174
  else
169
- nested_sequence.xs :any, "processContents" => "skip", "minOccurs" => "0", "maxOccurs" => "unbounded"
175
+ nested_sequence.xs :any, 'processContents' => 'skip', 'minOccurs' => '0', 'maxOccurs' => 'unbounded'
170
176
  end
171
177
  end
172
178
  elsif values.is_a?(Hash)
@@ -174,9 +180,9 @@ module Schematic
174
180
  generate_additional_methods(nested_all, values)
175
181
  end
176
182
  else
177
- raise "Additional methods must be a hash of hashes or hash of arrays"
183
+ raise 'Additional methods must be a hash of hashes or hash of arrays'
178
184
  end
179
- complex_type.xs :attribute, "name" => "type", "type" => "xs:string", "fixed" => "array", "use" => "optional"
185
+ complex_type.xs :attribute, 'name' => 'type', 'type' => 'xs:string', 'fixed' => 'array', 'use' => 'optional'
180
186
  end
181
187
  end
182
188
  else
@@ -203,7 +209,7 @@ module Schematic
203
209
  def nested_attribute_name(name, options={})
204
210
  pluralized = options.delete(:pluralized)
205
211
  pluralized = true if pluralized.nil?
206
- name = name.to_s.gsub("_", "-")
212
+ name = name.to_s.gsub('_', '-')
207
213
  name = name.pluralize if pluralized
208
214
  "#{name}-attributes"
209
215
  end
@@ -1,11 +1,12 @@
1
+ require 'schematic/generator/sandbox'
2
+ require 'schematic/exceptions'
3
+
1
4
  module Schematic
2
5
  module Serializers
3
6
  module Xsd
4
- class << self
5
- def extended(klass)
6
- raise ClassMissingXmlSerializer unless klass.ancestors.include?(ActiveModel::Serializers::Xml)
7
- raise ClassMissingAttributes unless klass.instance_methods.include?(:attributes)
8
- end
7
+ def self.extended(klass)
8
+ raise ClassMissingXmlSerializer unless klass.ancestors.include?(ActiveModel::Serializers::Xml)
9
+ raise ClassMissingAttributes unless klass.instance_methods.include?(:attributes)
9
10
  end
10
11
 
11
12
  def schematic(&block)
@@ -19,7 +20,6 @@ module Schematic
19
20
  def to_xsd(options = {})
20
21
  schematic_sandbox.to_xsd(options)
21
22
  end
22
-
23
23
  end
24
24
  end
25
25
  end
@@ -1,3 +1,3 @@
1
1
  module Schematic
2
- VERSION = "0.6.2"
2
+ VERSION = '0.7.0'.freeze
3
3
  end
data/schematic.gemspec CHANGED
@@ -1,29 +1,28 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "schematic/version"
1
+ # encoding: utf-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'schematic/version'
4
4
 
5
- Gem::Specification.new do |s|
6
- s.name = "schematic"
7
- s.version = Schematic::VERSION
8
- s.platform = Gem::Platform::RUBY
9
- s.authors = ["Case Commons, LLC"]
10
- s.email = ["casecommons-dev@googlegroups.com"]
11
- s.homepage = "https://github.com/Casecommons/schematic"
12
- s.summary = %q{Automatic XSD generation from ActiveRecord models}
13
- s.description = %q{Automatic XSD generation from ActiveRecord models}
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'schematic'
7
+ spec.version = Schematic::VERSION
8
+ spec.authors = ['Case Commons, LLC']
9
+ spec.email = ['casecommons-dev@googlegroups.com', 'andrew@johnandrewmarshall.com']
10
+ spec.homepage = 'https://github.com/Casecommons/schematic'
11
+ spec.summary = %q{Automatic XSD generation from ActiveRecord models}
12
+ spec.description = spec.summary
13
+ spec.license = 'MIT'
14
14
 
15
- s.rubyforge_project = "schematic"
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ['lib']
16
19
 
17
- s.add_dependency('activerecord', '>= 3.0.0')
18
- s.add_dependency('builder')
19
- s.add_development_dependency('rspec-rails', '= 2.7')
20
- s.add_development_dependency('with_model', '>= 0.2.4')
21
- s.add_development_dependency('nokogiri')
22
- s.add_development_dependency('sqlite3')
23
- s.add_development_dependency('autotest')
20
+ spec.add_dependency 'activerecord', '~> 4.0'
21
+ spec.add_dependency 'builder'
24
22
 
25
- s.files = `git ls-files`.split("\n")
26
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
27
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
28
- s.require_paths = ["lib"]
23
+ spec.add_development_dependency 'nokogiri'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec', '~> 2.14'
26
+ spec.add_development_dependency 'sqlite3'
27
+ spec.add_development_dependency 'with_model', '~> 1.0'
29
28
  end
@@ -1,12 +1,12 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
- describe Schematic::Generator::Restrictions::Enumeration do
3
+ describe "Schematic::Generator::Restrictions::Custom" do
4
4
  describe ".to_xsd" do
5
5
  context "with a model with custom validations" do
6
6
  before do
7
7
  class CrazyTownValidator < ActiveModel::EachValidator
8
8
  def validate_each(record, attribute, value)
9
- record.errors.add(attribute, "must be crazy") unless value.match /.*crazy.*|\w/
9
+ record.errors.add(attribute, 'must be crazy') unless value.match /.*crazy.*|\w/
10
10
  end
11
11
 
12
12
  def xsd_pattern_restrictions
@@ -18,30 +18,31 @@ describe Schematic::Generator::Restrictions::Enumeration do
18
18
  subject { sanitize_xml(CustomModel.to_xsd) }
19
19
  with_model :custom_model do
20
20
  table :id => false do |t|
21
- t.string "title"
21
+ t.string 'title'
22
22
  end
23
23
 
24
24
  model do
25
+ self.primary_key = :title
25
26
  validates :title, :crazy_town => true
26
27
  end
27
28
  end
28
29
 
29
30
  it "should validate against it's own XSD" do
30
- invalid_instance = CustomModel.new(:title => "happy today")
31
+ invalid_instance = CustomModel.new(:title => 'happy today')
31
32
  xml = [invalid_instance].to_xml
32
- lambda {
33
+ expect {
33
34
  validate_xml_against_xsd(xml, subject)
34
- }.should raise_error
35
- invalid_instance = CustomModel.new(:title => "happytoday")
35
+ }.to raise_error
36
+ invalid_instance = CustomModel.new(:title => 'happytoday')
36
37
  xml = [invalid_instance].to_xml
37
- lambda {
38
+ expect {
38
39
  validate_xml_against_xsd(xml, subject)
39
- }.should raise_error
40
- valid_instance = CustomModel.new(:title => "iamcrazytoday")
40
+ }.to raise_error
41
+ valid_instance = CustomModel.new(:title => 'iamcrazytoday')
41
42
  xml = [valid_instance].to_xml
42
- lambda {
43
+ expect {
43
44
  validate_xml_against_xsd(xml, subject)
44
- }.should_not raise_error
45
+ }.not_to raise_error
45
46
  end
46
47
 
47
48
  it "should mark that the field with the allowed values" do
@@ -60,12 +61,8 @@ describe Schematic::Generator::Restrictions::Enumeration do
60
61
  XML
61
62
  end
62
63
 
63
- subject.should == xsd
64
+ expect(subject).to eq(xsd)
64
65
  end
65
66
  end
66
67
  end
67
68
  end
68
-
69
-
70
-
71
-
@@ -1,32 +1,32 @@
1
- require "spec_helper"
2
- require "support/extensions/active_model/validations/inclusion"
1
+ require 'spec_helper'
3
2
 
4
- describe Schematic::Generator::Restrictions::Enumeration do
3
+ describe "Schematic::Generator::Restrictions::Enumeration" do
5
4
  describe ".to_xsd" do
6
5
  context "with a model with inclusion validations" do
7
6
  subject { sanitize_xml(EnumerationModel.to_xsd) }
8
7
  with_model :enumeration_model do
9
8
  table :id => false do |t|
10
- t.string "title"
11
- t.string "should_be_skipped"
12
- t.string "should_also_be_skipped"
13
- t.string "and_also_be_skipped"
14
- t.boolean "active"
15
- t.string "options"
16
- t.string "more_options"
17
- t.integer "force_enumeration"
18
- t.integer "skip_enumeration"
19
- t.integer "skip_inclusion_set_lambda"
9
+ t.string 'title'
10
+ t.string 'should_be_skipped'
11
+ t.string 'should_also_be_skipped'
12
+ t.string 'and_also_be_skipped'
13
+ t.boolean 'active'
14
+ t.string 'options'
15
+ t.string 'more_options'
16
+ t.integer 'force_enumeration'
17
+ t.integer 'skip_enumeration'
18
+ t.integer 'skip_inclusion_set_lambda'
20
19
  end
21
20
 
22
21
  model do
23
- validates :title, :inclusion => { :in => ["a", "b", "c"] }
24
- validates :should_be_skipped, :inclusion => ["a", "b", "c"], :if => lambda { false }
25
- validates :should_also_be_skipped, :inclusion => ["a", "b", "c"], :unless => lambda { false }
26
- validates :and_also_be_skipped, :inclusion => ["a", "b", "c"], :if => lambda { true}, :unless => lambda { false }
22
+ self.primary_key = :title
23
+ validates :title, :inclusion => { :in => ['a', 'b', 'c'] }
24
+ validates :should_be_skipped, :inclusion => ['a', 'b', 'c'], :if => lambda { false }
25
+ validates :should_also_be_skipped, :inclusion => ['a', 'b', 'c'], :unless => lambda { false }
26
+ validates :and_also_be_skipped, :inclusion => ['a', 'b', 'c'], :if => lambda { true}, :unless => lambda { false }
27
27
  validates :active, :inclusion => { :in => [true, false] }
28
- validates :options, :inclusion => { :in => lambda { |f| ["some valid attribute"] } }
29
- validates :more_options, :inclusion => { :in => lambda { |f| f.title == "something" ? ["test"] : ["something else"] } }
28
+ validates :options, :inclusion => { :in => lambda { |f| ['some valid attribute'] } }
29
+ validates :more_options, :inclusion => { :in => lambda { |f| f.title == 'something' ? ['test'] : ['something else'] } }
30
30
  validates :force_enumeration, :inclusion => { :in => [1, 2], :xsd => { :include => true} }, :if => lambda { false }
31
31
  validates :skip_enumeration, :inclusion => { :in => [1, 2], :xsd => { :include => false} }, :if => lambda { true }
32
32
  validates :skip_inclusion_set_lambda, :inclusion => { :in => lambda { |x| [1, 2] } }, :if => :some_method
@@ -38,25 +38,25 @@ describe Schematic::Generator::Restrictions::Enumeration do
38
38
  end
39
39
 
40
40
  it "should validate against it's own XSD" do
41
- invalid_instance = EnumerationModel.new(:title => "d")
41
+ invalid_instance = EnumerationModel.new(:title => 'd')
42
42
  xml = [invalid_instance].to_xml
43
- lambda {
43
+ expect {
44
44
  validate_xml_against_xsd(xml, subject)
45
- }.should raise_error
46
- valid_instance = EnumerationModel.new(:title => "a",
47
- :should_be_skipped => "a",
48
- :should_also_be_skipped => "a",
49
- :and_also_be_skipped => "a",
45
+ }.to raise_error
46
+ valid_instance = EnumerationModel.new(:title => 'a',
47
+ :should_be_skipped => 'a',
48
+ :should_also_be_skipped => 'a',
49
+ :and_also_be_skipped => 'a',
50
50
  :active => true,
51
- :options => "some valid attribute",
52
- :more_options => "something else",
51
+ :options => 'some valid attribute',
52
+ :more_options => 'something else',
53
53
  :force_enumeration => 2,
54
54
  :skip_enumeration => 2,
55
55
  :skip_inclusion_set_lambda => 2)
56
56
  xml = [valid_instance].to_xml
57
- lambda {
57
+ expect {
58
58
  validate_xml_against_xsd(xml, subject)
59
- }.should_not raise_error
59
+ }.not_to raise_error
60
60
  end
61
61
 
62
62
  it "should mark that the field with the allowed values" do
@@ -151,7 +151,7 @@ describe Schematic::Generator::Restrictions::Enumeration do
151
151
  XML
152
152
  end
153
153
 
154
- subject.should == xsd
154
+ expect(subject).to eq(xsd)
155
155
  end
156
156
  end
157
157
  end