sequel 3.21.0 → 3.31.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.
- data/CHANGELOG +485 -3
- data/README.rdoc +20 -6
- data/Rakefile +37 -19
- data/bin/sequel +1 -5
- data/doc/association_basics.rdoc +249 -43
- data/doc/dataset_basics.rdoc +4 -4
- data/doc/dataset_filtering.rdoc +8 -0
- data/doc/mass_assignment.rdoc +54 -0
- data/doc/migration.rdoc +15 -538
- data/doc/model_hooks.rdoc +72 -27
- data/doc/opening_databases.rdoc +89 -50
- data/doc/prepared_statements.rdoc +40 -13
- data/doc/reflection.rdoc +8 -2
- data/doc/release_notes/3.22.0.txt +39 -0
- data/doc/release_notes/3.23.0.txt +172 -0
- data/doc/release_notes/3.24.0.txt +420 -0
- data/doc/release_notes/3.25.0.txt +88 -0
- data/doc/release_notes/3.26.0.txt +88 -0
- data/doc/release_notes/3.27.0.txt +82 -0
- data/doc/release_notes/3.28.0.txt +304 -0
- data/doc/release_notes/3.29.0.txt +459 -0
- data/doc/release_notes/3.30.0.txt +135 -0
- data/doc/release_notes/3.31.0.txt +146 -0
- data/doc/schema_modification.rdoc +547 -0
- data/doc/sharding.rdoc +7 -1
- data/doc/testing.rdoc +129 -0
- data/doc/transactions.rdoc +137 -0
- data/doc/virtual_rows.rdoc +2 -2
- data/lib/sequel/adapters/ado/mssql.rb +18 -6
- data/lib/sequel/adapters/ado.rb +40 -18
- data/lib/sequel/adapters/amalgalite.rb +17 -9
- data/lib/sequel/adapters/db2.rb +175 -86
- data/lib/sequel/adapters/dbi.rb +15 -15
- data/lib/sequel/adapters/do/mysql.rb +5 -7
- data/lib/sequel/adapters/do/postgres.rb +0 -5
- data/lib/sequel/adapters/do/sqlite.rb +0 -5
- data/lib/sequel/adapters/do.rb +17 -36
- data/lib/sequel/adapters/firebird.rb +27 -208
- data/lib/sequel/adapters/ibmdb.rb +448 -0
- data/lib/sequel/adapters/informix.rb +6 -23
- data/lib/sequel/adapters/jdbc/as400.rb +16 -34
- data/lib/sequel/adapters/jdbc/db2.rb +45 -0
- data/lib/sequel/adapters/jdbc/derby.rb +247 -0
- data/lib/sequel/adapters/jdbc/firebird.rb +29 -0
- data/lib/sequel/adapters/jdbc/h2.rb +56 -29
- data/lib/sequel/adapters/jdbc/hsqldb.rb +170 -0
- data/lib/sequel/adapters/jdbc/informix.rb +26 -0
- data/lib/sequel/adapters/jdbc/jtds.rb +34 -0
- data/lib/sequel/adapters/jdbc/mssql.rb +3 -33
- data/lib/sequel/adapters/jdbc/mysql.rb +11 -11
- data/lib/sequel/adapters/jdbc/oracle.rb +81 -25
- data/lib/sequel/adapters/jdbc/postgresql.rb +9 -13
- data/lib/sequel/adapters/jdbc/sqlite.rb +2 -6
- data/lib/sequel/adapters/jdbc/sqlserver.rb +71 -0
- data/lib/sequel/adapters/jdbc/transactions.rb +83 -0
- data/lib/sequel/adapters/jdbc.rb +231 -78
- data/lib/sequel/adapters/mock.rb +335 -0
- data/lib/sequel/adapters/mysql.rb +82 -184
- data/lib/sequel/adapters/mysql2.rb +26 -25
- data/lib/sequel/adapters/odbc/db2.rb +17 -0
- data/lib/sequel/adapters/odbc/mssql.rb +1 -6
- data/lib/sequel/adapters/odbc.rb +28 -9
- data/lib/sequel/adapters/openbase.rb +3 -5
- data/lib/sequel/adapters/oracle.rb +351 -53
- data/lib/sequel/adapters/postgres.rb +194 -33
- data/lib/sequel/adapters/shared/access.rb +32 -9
- data/lib/sequel/adapters/shared/db2.rb +321 -0
- data/lib/sequel/adapters/shared/firebird.rb +221 -0
- data/lib/sequel/adapters/shared/informix.rb +53 -0
- data/lib/sequel/adapters/shared/mssql.rb +231 -106
- data/lib/sequel/adapters/shared/mysql.rb +181 -63
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +149 -0
- data/lib/sequel/adapters/shared/oracle.rb +231 -41
- data/lib/sequel/adapters/shared/postgres.rb +214 -82
- data/lib/sequel/adapters/shared/progress.rb +4 -7
- data/lib/sequel/adapters/shared/sqlite.rb +201 -57
- data/lib/sequel/adapters/sqlite.rb +29 -21
- data/lib/sequel/adapters/swift/mysql.rb +12 -7
- data/lib/sequel/adapters/swift/postgres.rb +0 -5
- data/lib/sequel/adapters/swift/sqlite.rb +8 -6
- data/lib/sequel/adapters/swift.rb +5 -5
- data/lib/sequel/adapters/tinytds.rb +160 -19
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +66 -0
- data/lib/sequel/adapters/utils/stored_procedures.rb +1 -11
- data/lib/sequel/ast_transformer.rb +190 -0
- data/lib/sequel/connection_pool/threaded.rb +3 -2
- data/lib/sequel/connection_pool.rb +1 -1
- data/lib/sequel/core.rb +46 -5
- data/lib/sequel/database/connecting.rb +5 -6
- data/lib/sequel/database/dataset.rb +4 -4
- data/lib/sequel/database/dataset_defaults.rb +59 -1
- data/lib/sequel/database/logging.rb +1 -1
- data/lib/sequel/database/misc.rb +104 -19
- data/lib/sequel/database/query.rb +153 -58
- data/lib/sequel/database/schema_generator.rb +17 -7
- data/lib/sequel/database/schema_methods.rb +59 -29
- data/lib/sequel/dataset/actions.rb +231 -76
- data/lib/sequel/dataset/features.rb +91 -8
- data/lib/sequel/dataset/graph.rb +38 -11
- data/lib/sequel/dataset/misc.rb +50 -23
- data/lib/sequel/dataset/mutation.rb +5 -6
- data/lib/sequel/dataset/prepared_statements.rb +48 -27
- data/lib/sequel/dataset/query.rb +236 -43
- data/lib/sequel/dataset/sql.rb +665 -253
- data/lib/sequel/dataset.rb +8 -0
- data/lib/sequel/exceptions.rb +4 -0
- data/lib/sequel/extensions/columns_introspection.rb +61 -0
- data/lib/sequel/extensions/migration.rb +6 -4
- data/lib/sequel/extensions/named_timezones.rb +5 -0
- data/lib/sequel/extensions/thread_local_timezones.rb +1 -1
- data/lib/sequel/extensions/to_dot.rb +95 -83
- data/lib/sequel/model/associations.rb +1020 -337
- data/lib/sequel/model/base.rb +414 -132
- data/lib/sequel/model/errors.rb +1 -1
- data/lib/sequel/model/exceptions.rb +5 -1
- data/lib/sequel/model.rb +15 -8
- data/lib/sequel/plugins/association_pks.rb +22 -4
- data/lib/sequel/plugins/class_table_inheritance.rb +4 -4
- data/lib/sequel/plugins/dataset_associations.rb +100 -0
- data/lib/sequel/plugins/defaults_setter.rb +58 -0
- data/lib/sequel/plugins/force_encoding.rb +6 -6
- data/lib/sequel/plugins/identity_map.rb +114 -7
- data/lib/sequel/plugins/many_through_many.rb +65 -7
- data/lib/sequel/plugins/prepared_statements.rb +151 -0
- data/lib/sequel/plugins/prepared_statements_associations.rb +84 -0
- data/lib/sequel/plugins/prepared_statements_safe.rb +82 -0
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +59 -0
- data/lib/sequel/plugins/rcte_tree.rb +29 -15
- data/lib/sequel/plugins/serialization.rb +88 -44
- data/lib/sequel/plugins/serialization_modification_detection.rb +51 -0
- data/lib/sequel/plugins/sharding.rb +21 -54
- data/lib/sequel/plugins/single_table_inheritance.rb +3 -1
- data/lib/sequel/plugins/typecast_on_load.rb +9 -12
- data/lib/sequel/plugins/update_primary_key.rb +2 -2
- data/lib/sequel/plugins/xml_serializer.rb +3 -3
- data/lib/sequel/sql.rb +109 -52
- data/lib/sequel/timezones.rb +57 -38
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/db2_spec.rb +146 -0
- data/spec/adapters/mssql_spec.rb +111 -29
- data/spec/adapters/mysql_spec.rb +135 -123
- data/spec/adapters/oracle_spec.rb +49 -77
- data/spec/adapters/postgres_spec.rb +267 -78
- data/spec/adapters/spec_helper.rb +6 -5
- data/spec/adapters/sqlite_spec.rb +35 -21
- data/spec/core/connection_pool_spec.rb +71 -92
- data/spec/core/core_sql_spec.rb +21 -30
- data/spec/core/database_spec.rb +788 -512
- data/spec/core/dataset_spec.rb +1073 -1053
- data/spec/core/expression_filters_spec.rb +159 -42
- data/spec/core/mock_adapter_spec.rb +419 -0
- data/spec/core/object_graph_spec.rb +86 -114
- data/spec/core/schema_generator_spec.rb +3 -3
- data/spec/core/schema_spec.rb +298 -38
- data/spec/core/spec_helper.rb +6 -48
- data/spec/extensions/association_autoreloading_spec.rb +1 -10
- data/spec/extensions/association_dependencies_spec.rb +2 -12
- data/spec/extensions/association_pks_spec.rb +66 -32
- data/spec/extensions/caching_spec.rb +23 -50
- data/spec/extensions/class_table_inheritance_spec.rb +31 -83
- data/spec/extensions/columns_introspection_spec.rb +91 -0
- data/spec/extensions/composition_spec.rb +18 -13
- data/spec/extensions/dataset_associations_spec.rb +199 -0
- data/spec/extensions/defaults_setter_spec.rb +64 -0
- data/spec/extensions/hook_class_methods_spec.rb +65 -91
- data/spec/extensions/identity_map_spec.rb +114 -22
- data/spec/extensions/instance_filters_spec.rb +11 -21
- data/spec/extensions/instance_hooks_spec.rb +53 -0
- data/spec/extensions/json_serializer_spec.rb +4 -5
- data/spec/extensions/lazy_attributes_spec.rb +16 -20
- data/spec/extensions/list_spec.rb +17 -39
- data/spec/extensions/many_through_many_spec.rb +283 -250
- data/spec/extensions/migration_spec.rb +35 -32
- data/spec/extensions/named_timezones_spec.rb +23 -3
- data/spec/extensions/nested_attributes_spec.rb +97 -88
- data/spec/extensions/optimistic_locking_spec.rb +9 -20
- data/spec/extensions/prepared_statements_associations_spec.rb +111 -0
- data/spec/extensions/prepared_statements_safe_spec.rb +61 -0
- data/spec/extensions/prepared_statements_spec.rb +53 -0
- data/spec/extensions/prepared_statements_with_pk_spec.rb +31 -0
- data/spec/extensions/pretty_table_spec.rb +1 -6
- data/spec/extensions/rcte_tree_spec.rb +41 -43
- data/spec/extensions/schema_dumper_spec.rb +5 -8
- data/spec/extensions/schema_spec.rb +13 -21
- data/spec/extensions/serialization_modification_detection_spec.rb +37 -0
- data/spec/extensions/serialization_spec.rb +72 -43
- data/spec/extensions/sharding_spec.rb +66 -140
- data/spec/extensions/single_table_inheritance_spec.rb +18 -29
- data/spec/extensions/spec_helper.rb +13 -61
- data/spec/extensions/sql_expr_spec.rb +20 -60
- data/spec/extensions/tactical_eager_loading_spec.rb +9 -19
- data/spec/extensions/thread_local_timezones_spec.rb +22 -2
- data/spec/extensions/timestamps_spec.rb +6 -6
- data/spec/extensions/to_dot_spec.rb +4 -7
- data/spec/extensions/touch_spec.rb +13 -14
- data/spec/extensions/tree_spec.rb +11 -26
- data/spec/extensions/typecast_on_load_spec.rb +1 -6
- data/spec/extensions/update_primary_key_spec.rb +30 -24
- data/spec/extensions/validation_class_methods_spec.rb +30 -51
- data/spec/extensions/validation_helpers_spec.rb +16 -35
- data/spec/extensions/xml_serializer_spec.rb +16 -4
- data/spec/integration/associations_test.rb +537 -21
- data/spec/integration/database_test.rb +4 -2
- data/spec/integration/dataset_test.rb +461 -65
- data/spec/integration/eager_loader_test.rb +19 -21
- data/spec/integration/model_test.rb +80 -1
- data/spec/integration/plugin_test.rb +304 -116
- data/spec/integration/prepared_statement_test.rb +212 -122
- data/spec/integration/schema_test.rb +161 -30
- data/spec/integration/spec_helper.rb +39 -30
- data/spec/integration/timezone_test.rb +38 -12
- data/spec/integration/transaction_test.rb +172 -5
- data/spec/integration/type_test.rb +17 -3
- data/spec/model/association_reflection_spec.rb +201 -7
- data/spec/model/associations_spec.rb +865 -662
- data/spec/model/base_spec.rb +275 -95
- data/spec/model/dataset_methods_spec.rb +7 -27
- data/spec/model/eager_loading_spec.rb +677 -676
- data/spec/model/hooks_spec.rb +309 -67
- data/spec/model/model_spec.rb +222 -168
- data/spec/model/plugins_spec.rb +24 -13
- data/spec/model/record_spec.rb +381 -218
- data/spec/model/spec_helper.rb +13 -71
- data/spec/model/validations_spec.rb +11 -0
- metadata +115 -73
|
@@ -527,13 +527,8 @@ describe Sequel::Model do
|
|
|
527
527
|
end
|
|
528
528
|
|
|
529
529
|
specify "should raise an error if inclusion_of doesn't receive a valid :in option" do
|
|
530
|
-
lambda
|
|
531
|
-
|
|
532
|
-
}.should raise_error(ArgumentError)
|
|
533
|
-
|
|
534
|
-
lambda {
|
|
535
|
-
@c.validates_inclusion_of :value, :in => 1
|
|
536
|
-
}.should raise_error(ArgumentError)
|
|
530
|
+
lambda{@c.validates_inclusion_of :value}.should raise_error(ArgumentError)
|
|
531
|
+
lambda{@c.validates_inclusion_of :value, :in => 1}.should raise_error(ArgumentError)
|
|
537
532
|
end
|
|
538
533
|
|
|
539
534
|
specify "should raise an error if inclusion_of handles :allow_nil too" do
|
|
@@ -570,7 +565,6 @@ describe Sequel::Model do
|
|
|
570
565
|
|
|
571
566
|
specify "should validate uniqueness_of with if => false" do
|
|
572
567
|
@c.validates_uniqueness_of :value, :if => :skip
|
|
573
|
-
|
|
574
568
|
@m.value = 'a'
|
|
575
569
|
@m.should be_valid
|
|
576
570
|
end
|
|
@@ -602,16 +596,11 @@ describe "Superclass validations" do
|
|
|
602
596
|
o = @c2.new
|
|
603
597
|
o.value = 'ab'
|
|
604
598
|
o.valid?.should == false
|
|
605
|
-
o.errors.full_messages.should == [
|
|
606
|
-
'value is too short'
|
|
607
|
-
]
|
|
599
|
+
o.errors.full_messages.should == ['value is too short']
|
|
608
600
|
|
|
609
601
|
o.value = '12'
|
|
610
602
|
o.valid?.should == false
|
|
611
|
-
o.errors.full_messages.should == [
|
|
612
|
-
'value is too short',
|
|
613
|
-
'value is invalid'
|
|
614
|
-
]
|
|
603
|
+
o.errors.full_messages.should == ['value is too short', 'value is invalid']
|
|
615
604
|
|
|
616
605
|
o.value = 'abcde'
|
|
617
606
|
o.valid?.should be_true
|
|
@@ -626,9 +615,7 @@ describe "Superclass validations" do
|
|
|
626
615
|
|
|
627
616
|
o.value = '12'
|
|
628
617
|
o.valid?.should == false
|
|
629
|
-
o.errors.full_messages.should == [
|
|
630
|
-
'value is invalid'
|
|
631
|
-
]
|
|
618
|
+
o.errors.full_messages.should == ['value is invalid']
|
|
632
619
|
|
|
633
620
|
o.value = 'abcde'
|
|
634
621
|
o.valid?.should be_true
|
|
@@ -824,22 +811,18 @@ describe Sequel::Model, "Validations" do
|
|
|
824
811
|
uniqueness_of :username
|
|
825
812
|
end
|
|
826
813
|
end
|
|
827
|
-
User.dataset.
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
yield({:v => 1})
|
|
838
|
-
when /username = '1record'/
|
|
839
|
-
yield({:id => 3, :username => "1record", :password => "test"})
|
|
840
|
-
end
|
|
814
|
+
User.dataset._fetch = proc do |sql|
|
|
815
|
+
case sql
|
|
816
|
+
when /COUNT.*username = '0records'/
|
|
817
|
+
{:v => 0}
|
|
818
|
+
when /COUNT.*username = '2records'/
|
|
819
|
+
{:v => 2}
|
|
820
|
+
when /COUNT.*username = '1record'/
|
|
821
|
+
{:v => 1}
|
|
822
|
+
when /username = '1record'/
|
|
823
|
+
{:id => 3, :username => "1record", :password => "test"}
|
|
841
824
|
end
|
|
842
|
-
|
|
825
|
+
end
|
|
843
826
|
|
|
844
827
|
@user = User.new(:username => "2records", :password => "anothertest")
|
|
845
828
|
@user.should_not be_valid
|
|
@@ -869,26 +852,22 @@ describe Sequel::Model, "Validations" do
|
|
|
869
852
|
uniqueness_of [:username, :password]
|
|
870
853
|
end
|
|
871
854
|
end
|
|
872
|
-
User.dataset.
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
yield({:id => 3, :username => "1record", :password => "anothertest"})
|
|
886
|
-
else
|
|
887
|
-
yield({:id => 4, :username => "1record", :password => "test"})
|
|
888
|
-
end
|
|
855
|
+
User.dataset._fetch = proc do |sql|
|
|
856
|
+
case sql
|
|
857
|
+
when /COUNT.*username = '0records'/
|
|
858
|
+
{:v => 0}
|
|
859
|
+
when /COUNT.*username = '2records'/
|
|
860
|
+
{:v => 2}
|
|
861
|
+
when /COUNT.*username = '1record'/
|
|
862
|
+
{:v => 1}
|
|
863
|
+
when /username = '1record'/
|
|
864
|
+
if sql =~ /password = 'anothertest'/
|
|
865
|
+
{:id => 3, :username => "1record", :password => "anothertest"}
|
|
866
|
+
else
|
|
867
|
+
{:id => 4, :username => "1record", :password => "test"}
|
|
889
868
|
end
|
|
890
869
|
end
|
|
891
|
-
|
|
870
|
+
end
|
|
892
871
|
|
|
893
872
|
@user = User.new(:username => "2records", :password => "anothertest")
|
|
894
873
|
@user.should_not be_valid
|
|
@@ -317,18 +317,14 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
|
317
317
|
@c.columns(:id, :username, :password)
|
|
318
318
|
@c.set_dataset MODEL_DB[:items]
|
|
319
319
|
@c.set_validations{validates_unique(:username)}
|
|
320
|
-
@c.dataset.
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
yield({:v => 0})
|
|
327
|
-
when /COUNT.*username = '1record'/
|
|
328
|
-
yield({:v => 1})
|
|
329
|
-
end
|
|
320
|
+
@c.dataset._fetch = proc do |sql|
|
|
321
|
+
case sql
|
|
322
|
+
when /COUNT.*username = '0records'/
|
|
323
|
+
{:v => 0}
|
|
324
|
+
when /COUNT.*username = '1record'/
|
|
325
|
+
{:v => 1}
|
|
330
326
|
end
|
|
331
|
-
|
|
327
|
+
end
|
|
332
328
|
|
|
333
329
|
@user = @c.new(:username => "0records", :password => "anothertest")
|
|
334
330
|
@user.should be_valid
|
|
@@ -359,18 +355,14 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
|
359
355
|
@c.columns(:id, :username, :password)
|
|
360
356
|
@c.set_dataset MODEL_DB[:items]
|
|
361
357
|
@c.set_validations{validates_unique([:username, :password])}
|
|
362
|
-
@c.dataset.
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
yield({:v => 0})
|
|
369
|
-
when /COUNT.*username = '1record'/
|
|
370
|
-
yield({:v => 1})
|
|
371
|
-
end
|
|
358
|
+
@c.dataset._fetch = proc do |sql|
|
|
359
|
+
case sql
|
|
360
|
+
when /COUNT.*username = '0records'/
|
|
361
|
+
{:v => 0}
|
|
362
|
+
when /COUNT.*username = '1record'/
|
|
363
|
+
{:v => 1}
|
|
372
364
|
end
|
|
373
|
-
|
|
365
|
+
end
|
|
374
366
|
|
|
375
367
|
@user = @c.new(:username => "0records", :password => "anothertest")
|
|
376
368
|
@user.should be_valid
|
|
@@ -401,12 +393,7 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
|
401
393
|
@c.columns(:id, :username, :password)
|
|
402
394
|
@c.set_dataset MODEL_DB[:items]
|
|
403
395
|
@c.set_validations{validates_unique(:username){|ds| ds.filter(:active)}}
|
|
404
|
-
@c.dataset.
|
|
405
|
-
def fetch_rows (sql)
|
|
406
|
-
@db << sql
|
|
407
|
-
yield({:v => 0})
|
|
408
|
-
end
|
|
409
|
-
})
|
|
396
|
+
@c.dataset._fetch = {:v=>0}
|
|
410
397
|
|
|
411
398
|
MODEL_DB.reset
|
|
412
399
|
@c.new(:username => "0records", :password => "anothertest").should be_valid
|
|
@@ -419,13 +406,7 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
|
419
406
|
@c.columns(:id, :username, :password)
|
|
420
407
|
@c.set_dataset MODEL_DB[:items]
|
|
421
408
|
@c.set_validations{validates_unique([:username, :password], :only_if_modified=>true)}
|
|
422
|
-
|
|
423
|
-
@c.dataset.extend(Module.new {
|
|
424
|
-
def fetch_rows (sql)
|
|
425
|
-
@db << sql
|
|
426
|
-
yield({:v => 0})
|
|
427
|
-
end
|
|
428
|
-
})
|
|
409
|
+
@c.dataset._fetch = {:v=>0}
|
|
429
410
|
|
|
430
411
|
MODEL_DB.reset
|
|
431
412
|
@c.new(:username => "0records", :password => "anothertest").should be_valid
|
|
@@ -36,6 +36,18 @@ describe "Sequel::Plugins::XmlSerializer" do
|
|
|
36
36
|
Album.from_xml(@album.to_xml).should == @album
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
it "should round trip successfully for namespaced models" do
|
|
40
|
+
module XmlSerializerTest
|
|
41
|
+
class Artist < Sequel::Model
|
|
42
|
+
plugin :xml_serializer
|
|
43
|
+
columns :id, :name
|
|
44
|
+
@db_schema = {:id=>{:type=>:integer}, :name=>{:type=>:string}}
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
artist = XmlSerializerTest::Artist.load(:id=>2, :name=>'YJM')
|
|
48
|
+
XmlSerializerTest::Artist.from_xml(artist.to_xml).should == artist
|
|
49
|
+
end
|
|
50
|
+
|
|
39
51
|
it "should round trip successfully with empty strings" do
|
|
40
52
|
artist = Artist.load(:id=>2, :name=>'')
|
|
41
53
|
Artist.from_xml(artist.to_xml).should == artist
|
|
@@ -106,13 +118,13 @@ describe "Sequel::Plugins::XmlSerializer" do
|
|
|
106
118
|
end
|
|
107
119
|
|
|
108
120
|
it "should support an :encoding option when serializing" do
|
|
109
|
-
["<?xml version=\"1.0\" encoding=\"
|
|
110
|
-
"<?xml version=\"1.0\" encoding=\"
|
|
121
|
+
["<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><id>2</id><name>YJM</name></artist>",
|
|
122
|
+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><name>YJM</name><id>2</id></artist>"].should include(@artist.to_xml(:encoding=>'UTF-8').gsub(/\n */m, ''))
|
|
111
123
|
end
|
|
112
124
|
|
|
113
125
|
it "should support a :builder_opts option when serializing" do
|
|
114
|
-
["<?xml version=\"1.0\" encoding=\"
|
|
115
|
-
"<?xml version=\"1.0\" encoding=\"
|
|
126
|
+
["<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><id>2</id><name>YJM</name></artist>",
|
|
127
|
+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><name>YJM</name><id>2</id></artist>"].should include(@artist.to_xml(:builder_opts=>{:encoding=>'UTF-8'}).gsub(/\n */m, ''))
|
|
116
128
|
end
|
|
117
129
|
|
|
118
130
|
it "should support an :types option when serializing" do
|