require "spec_helper" require "support/extensions/active_model/validations/inclusion" describe Schematic::Generator::Restrictions::Enumeration do describe ".to_xsd" do context "with a model with inclusion validations" do subject { sanitize_xml(EnumerationModel.to_xsd) } with_model :enumeration_model do table :id => false do |t| t.string "title" t.boolean "active" t.string "options" end model do validates :title, :inclusion => { :in => ["a", "b", "c"] } validates :active, :inclusion => { :in => [true, false] } validates :options, :inclusion => { :in => lambda { |f| ["some valid attribute"] } } end end it "should validate against it's own XSD" do invalid_instance = EnumerationModel.new(:title => "d") xml = [invalid_instance].to_xml lambda { validate_xml_against_xsd(xml, subject) }.should raise_error valid_instance = EnumerationModel.new(:title => "a", :active => true, :options => "some valid attribute") xml = [valid_instance].to_xml lambda { validate_xml_against_xsd(xml, subject) }.should_not raise_error end it "should mark that the field with the allowed values" do xsd = generate_xsd_for_model(EnumerationModel) do <<-XML XML end subject.should == xsd end end end end