lutaml-model 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/dependent-repos.json +2 -1
  3. data/.rubocop_todo.yml +10 -80
  4. data/lib/lutaml/model/attribute.rb +6 -1
  5. data/lib/lutaml/model/schema/xml_compiler.rb +3 -1
  6. data/lib/lutaml/model/type/float.rb +0 -4
  7. data/lib/lutaml/model/version.rb +1 -1
  8. data/lib/lutaml/model/xml_adapter/xml_document.rb +0 -4
  9. data/lib/lutaml/model/xml_adapter/xml_element.rb +1 -3
  10. data/spec/address_spec.rb +3 -3
  11. data/spec/benchmarks/xml_parsing_benchmark_spec.rb +3 -3
  12. data/spec/lutaml/model/collection_spec.rb +0 -16
  13. data/spec/lutaml/model/json_adapter_spec.rb +26 -24
  14. data/spec/lutaml/model/key_value_mapping_spec.rb +1 -13
  15. data/spec/lutaml/model/schema/json_schema_spec.rb +12 -12
  16. data/spec/lutaml/model/schema/relaxng_schema_spec.rb +12 -12
  17. data/spec/lutaml/model/schema/xml_compiler_spec.rb +447 -147
  18. data/spec/lutaml/model/schema/xsd_schema_spec.rb +12 -12
  19. data/spec/lutaml/model/schema/yaml_schema_spec.rb +12 -12
  20. data/spec/lutaml/model/sequence_spec.rb +129 -113
  21. data/spec/lutaml/model/toml_adapter_spec.rb +27 -25
  22. data/spec/lutaml/model/transformation_spec.rb +80 -80
  23. data/spec/lutaml/model/type/boolean_spec.rb +4 -10
  24. data/spec/lutaml/model/type/decimal_spec.rb +3 -3
  25. data/spec/lutaml/model/type/hash_spec.rb +39 -26
  26. data/spec/lutaml/model/type/integer_spec.rb +2 -2
  27. data/spec/lutaml/model/type/time_without_date_spec.rb +0 -6
  28. data/spec/lutaml/model/type_spec.rb +6 -26
  29. data/spec/lutaml/model/utils_spec.rb +25 -30
  30. data/spec/lutaml/model/validation_spec.rb +9 -6
  31. data/spec/lutaml/model/xml_adapter/oga_adapter_spec.rb +2 -2
  32. data/spec/lutaml/model/xml_adapter/ox_adapter_spec.rb +2 -2
  33. data/spec/lutaml/model/xml_adapter/xml_namespace_spec.rb +280 -281
  34. data/spec/lutaml/model/xml_adapter_spec.rb +128 -120
  35. data/spec/lutaml/model/xml_mapping_spec.rb +23 -16
  36. data/spec/person_spec.rb +6 -16
  37. metadata +2 -2
@@ -65,7 +65,8 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
65
65
 
66
66
  it "raises InvalidValueError" do
67
67
  expect(defined?(MathDocument)).to eq("constant")
68
- expect { MathDocument.from_xml(invalid_example) }.to raise_error(Lutaml::Model::Type::InvalidValueError)
68
+ expect { MathDocument.from_xml(invalid_example) }
69
+ .to raise_error(Lutaml::Model::Type::InvalidValueError)
69
70
  end
70
71
  end
71
72
  end
@@ -167,6 +168,10 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
167
168
 
168
169
  describe "structure setup methods" do
169
170
  describe ".as_models" do
171
+ let(:as_models) do
172
+ described_class.send(:as_models, schema)
173
+ end
174
+
170
175
  context "when the XML adapter is not set" do
171
176
  before do
172
177
  Lutaml::Model::Config.xml_adapter_type = :ox
@@ -176,21 +181,39 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
176
181
  Lutaml::Model::Config.xml_adapter_type = :nokogiri
177
182
  end
178
183
 
184
+ let(:schema) do
185
+ '<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>'
186
+ end
187
+
179
188
  it "raises an error" do
180
- expect { described_class.send(:as_models, '<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>') }.to raise_error(Lutaml::Model::Error)
189
+ expect { as_models }.to raise_error(Lutaml::Model::Error)
181
190
  end
182
191
  end
183
192
 
184
193
  context "when the XML adapter is set and schema is given" do
185
- let(:schema) { '<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>' }
194
+ let(:schema) do
195
+ '<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>'
196
+ end
197
+
198
+ let(:instance_variables) do
199
+ %i[
200
+ @elements
201
+ @attributes
202
+ @group_types
203
+ @simple_types
204
+ @complex_types
205
+ @attribute_groups
206
+ ]
207
+ end
186
208
 
187
209
  it "initializes the instance variables with empty MappingHash" do
188
- described_class.send(:as_models, schema)
189
- variables = %i[@elements @attributes @group_types @simple_types @complex_types @attribute_groups]
190
- variables.each do |variable|
210
+ as_models
211
+ instance_variables.each do |variable|
191
212
  instance_variable = described_class.instance_variable_get(variable)
192
- expect(instance_variable).to be_a(Lutaml::Model::MappingHash)
193
- expect(instance_variable).to be_empty
213
+
214
+ expect(instance_variable)
215
+ .to be_a(Lutaml::Model::MappingHash)
216
+ .and be_empty
194
217
  end
195
218
  end
196
219
 
@@ -217,7 +240,10 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
217
240
  context "when given schema contains all the elements" do
218
241
  before do
219
242
  variables.each_key do |key|
220
- described_class.instance_variable_set(:"@#{key}", to_mapping_hash({}))
243
+ described_class.instance_variable_set(
244
+ :"@#{key}",
245
+ to_mapping_hash({}),
246
+ )
221
247
  end
222
248
  end
223
249
 
@@ -242,8 +268,18 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
242
268
 
243
269
  let(:variables) do
244
270
  {
245
- elements: { "test_element" => { element_name: "test_element", type_name: nil } },
246
- attributes: { "test_attribute" => { name: "test_attribute", base_class: "xsd:string" } },
271
+ elements: {
272
+ "test_element" => {
273
+ element_name: "test_element",
274
+ type_name: nil,
275
+ },
276
+ },
277
+ attributes: {
278
+ "test_attribute" => {
279
+ name: "test_attribute",
280
+ base_class: "xsd:string",
281
+ },
282
+ },
247
283
  group_types: { "test_group" => {} },
248
284
  simple_types: { "test_simple_type" => {} },
249
285
  complex_types: { "test_complex_type" => { mixed: true } },
@@ -254,15 +290,21 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
254
290
  it "initializes the instance variables with empty MappingHash" do
255
291
  described_class.send(:schema_to_models, [schema])
256
292
  variables.each do |variable, expected_value|
257
- instance_variable = described_class.instance_variable_get(:"@#{variable}")
258
- expect(instance_variable).to be_a(Lutaml::Model::MappingHash)
259
- expect(instance_variable).to eql(expected_value)
293
+ value = described_class.instance_variable_get(:"@#{variable}")
294
+
295
+ expect(value)
296
+ .to be_a(Lutaml::Model::MappingHash)
297
+ .and eql(expected_value)
260
298
  end
261
299
  end
262
300
  end
263
301
  end
264
302
 
265
303
  describe ".setup_simple_type" do
304
+ let(:setup_simple_type) do
305
+ described_class.send(:setup_simple_type, simple_type)
306
+ end
307
+
266
308
  context "when given simple_type contains restriction and union" do
267
309
  let(:simple_type) do
268
310
  Lutaml::Xsd::SimpleType.new.tap do |st|
@@ -271,8 +313,10 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
271
313
  end
272
314
  end
273
315
 
316
+ let(:expected_output) { { base_class: "test_base", union: [] } }
317
+
274
318
  it "initializes the instance variables with empty MappingHash" do
275
- expect(described_class.send(:setup_simple_type, simple_type)).to eql({ base_class: "test_base", union: [] })
319
+ expect(setup_simple_type).to eql(expected_output)
276
320
  end
277
321
  end
278
322
 
@@ -280,7 +324,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
280
324
  let(:simple_type) { Lutaml::Xsd::SimpleType.new }
281
325
 
282
326
  it "initializes the instance variables with empty MappingHash" do
283
- expect(described_class.send(:setup_simple_type, simple_type)).to eql({})
327
+ expect(setup_simple_type).to eql({})
284
328
  end
285
329
  end
286
330
  end
@@ -297,9 +341,19 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
297
341
  end
298
342
  end
299
343
 
344
+ let(:expected_output) do
345
+ {
346
+ max_length: 10,
347
+ min_length: 1,
348
+ min_inclusive: "1",
349
+ max_inclusive: "10",
350
+ length: [{ value: 10 }],
351
+ }
352
+ end
353
+
300
354
  it "initializes the instance variables with empty MappingHash" do
301
355
  described_class.send(:restriction_content, hash = {}, restriction)
302
- expect(hash).to eql({ max_length: 10, min_length: 1, min_inclusive: "1", max_inclusive: "10", length: [{ value: 10 }] })
356
+ expect(hash).to eql(expected_output)
303
357
  end
304
358
  end
305
359
 
@@ -314,6 +368,10 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
314
368
  end
315
369
 
316
370
  describe ".restriction_length" do
371
+ let(:restriction_length) do
372
+ described_class.send(:restriction_length, lengths)
373
+ end
374
+
317
375
  context "when given restriction contains max_length, min_length, min_inclusive, max_inclusive, length" do
318
376
  let(:lengths) do
319
377
  [
@@ -336,13 +394,15 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
336
394
  end
337
395
 
338
396
  it "initializes the instance variables with empty MappingHash" do
339
- expect(described_class.send(:restriction_length, lengths)).to eql(expected_content)
397
+ expect(restriction_length).to eql(expected_content)
340
398
  end
341
399
  end
342
400
 
343
401
  context "when restriction contains nothing" do
402
+ let(:lengths) { [] }
403
+
344
404
  it "initializes the instance variables with empty MappingHash" do
345
- expect(described_class.send(:restriction_length, [])).to be_empty
405
+ expect(restriction_length).to be_empty
346
406
  end
347
407
  end
348
408
  end
@@ -402,18 +462,24 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
402
462
  end
403
463
 
404
464
  describe ".setup_simple_content" do
465
+ let(:setup_simple_content) do
466
+ described_class.send(:setup_simple_content, complex_type)
467
+ end
468
+
405
469
  context "when given complex_type contains extension" do
406
470
  let(:complex_type) do
407
471
  Lutaml::Xsd::SimpleContent.new.tap do |ct|
408
472
  ct.extension = Lutaml::Xsd::ExtensionSimpleContent.new(base: "test_extension")
409
- ct.element_order = [Lutaml::Model::XmlAdapter::Element.new("Element", "extension")]
473
+ ct.element_order = [
474
+ Lutaml::Model::XmlAdapter::Element.new("Element", "extension"),
475
+ ]
410
476
  end
411
477
  end
412
478
 
413
479
  let(:expected_hash) { { extension_base: "test_extension" } }
414
480
 
415
481
  it "initializes the instance variables with empty MappingHash" do
416
- expect(described_class.send(:setup_simple_content, complex_type)).to eql(expected_hash)
482
+ expect(setup_simple_content).to eql(expected_hash)
417
483
  end
418
484
  end
419
485
 
@@ -421,17 +487,25 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
421
487
  let(:complex_type) do
422
488
  Lutaml::Xsd::SimpleContent.new.tap do |ct|
423
489
  ct.restriction = Lutaml::Xsd::RestrictionSimpleContent.new(base: "test_restriction")
424
- ct.element_order = [Lutaml::Model::XmlAdapter::Element.new("Element", "restriction")]
490
+ ct.element_order = [
491
+ Lutaml::Model::XmlAdapter::Element.new("Element", "restriction"),
492
+ ]
425
493
  end
426
494
  end
427
495
 
496
+ let(:expected_hash) { { base_class: "test_restriction" } }
497
+
428
498
  it "initializes the instance variables with empty MappingHash" do
429
- expect(described_class.send(:setup_simple_content, complex_type)).to eql({ base_class: "test_restriction" })
499
+ expect(setup_simple_content).to eql(expected_hash)
430
500
  end
431
501
  end
432
502
  end
433
503
 
434
504
  describe ".setup_sequence" do
505
+ let(:setup_sequence) do
506
+ described_class.send(:setup_sequence, sequence)
507
+ end
508
+
435
509
  context "when given sequence contains sequence, element, choice, group" do
436
510
  let(:sequence) do
437
511
  Lutaml::Xsd::Sequence.new.tap do |ct|
@@ -459,14 +533,17 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
459
533
  let(:expected_hash) do
460
534
  {
461
535
  sequences: [{}],
462
- elements: [{ element_name: "test_element", type_name: nil }, { ref_class: "test_ref" }],
536
+ elements: [
537
+ { element_name: "test_element", type_name: nil },
538
+ { ref_class: "test_ref" },
539
+ ],
463
540
  choice: [{}],
464
541
  groups: [{}, { ref_class: "test_ref" }],
465
542
  }
466
543
  end
467
544
 
468
545
  it "initializes the instance variables with empty MappingHash" do
469
- expect(described_class.send(:setup_sequence, sequence)).to eql(expected_hash)
546
+ expect(setup_sequence).to eql(expected_hash)
470
547
  end
471
548
  end
472
549
 
@@ -478,12 +555,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
478
555
  end
479
556
 
480
557
  it "initializes the instance variables with empty MappingHash" do
481
- expect(described_class.send(:setup_sequence, sequence)).to be_empty
558
+ expect(setup_sequence).to be_empty
482
559
  end
483
560
  end
484
561
  end
485
562
 
486
563
  describe ".setup_group_type" do
564
+ let(:setup_group_type) do
565
+ described_class.send(:setup_group_type, group)
566
+ end
567
+
487
568
  context "when given group contains sequence, choice" do
488
569
  let(:group) do
489
570
  Lutaml::Xsd::Group.new.tap do |ct|
@@ -499,7 +580,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
499
580
  let(:expected_hash) { { sequence: {}, choice: {} } }
500
581
 
501
582
  it "initializes the instance variables with empty MappingHash" do
502
- expect(described_class.send(:setup_group_type, group)).to eql(expected_hash)
583
+ expect(setup_group_type).to eql(expected_hash)
503
584
  end
504
585
  end
505
586
 
@@ -511,12 +592,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
511
592
  end
512
593
 
513
594
  it "initializes the instance variables with empty MappingHash" do
514
- expect(described_class.send(:setup_group_type, group)).to be_empty
595
+ expect(setup_group_type).to be_empty
515
596
  end
516
597
  end
517
598
  end
518
599
 
519
600
  describe ".setup_choice" do
601
+ let(:setup_choice) do
602
+ described_class.send(:setup_choice, choice)
603
+ end
604
+
520
605
  context "when given choice contains sequence, choice" do
521
606
  let(:choice) do
522
607
  Lutaml::Xsd::Choice.new.tap do |ct|
@@ -533,10 +618,20 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
533
618
  end
534
619
  end
535
620
 
536
- let(:expected_hash) { { sequence: {}, choice: {}, group: {}, "test_element" => { element_name: "test_element", type_name: nil } } }
621
+ let(:expected_hash) do
622
+ {
623
+ sequence: {},
624
+ choice: {},
625
+ group: {},
626
+ "test_element" => {
627
+ element_name: "test_element",
628
+ type_name: nil,
629
+ },
630
+ }
631
+ end
537
632
 
538
633
  it "initializes the instance variables with empty MappingHash" do
539
- expect(described_class.send(:setup_choice, choice)).to eql(expected_hash)
634
+ expect(setup_choice).to eql(expected_hash)
540
635
  end
541
636
  end
542
637
 
@@ -548,12 +643,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
548
643
  end
549
644
 
550
645
  it "initializes the instance variables with empty MappingHash" do
551
- expect(described_class.send(:setup_choice, choice)).to be_empty
646
+ expect(setup_choice).to be_empty
552
647
  end
553
648
  end
554
649
  end
555
650
 
556
651
  describe ".setup_union" do
652
+ let(:setup_union) do
653
+ described_class.send(:setup_union, union)
654
+ end
655
+
557
656
  context "when given union contains member_types" do
558
657
  before do
559
658
  described_class.instance_variable_set(:@simple_types, simple_types)
@@ -576,10 +675,15 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
576
675
  end
577
676
  end
578
677
 
579
- let(:expected_hash) { [{ name: "test_member_type" }, { name: "test_member_type1" }] }
678
+ let(:expected_output) do
679
+ [
680
+ { name: "test_member_type" },
681
+ { name: "test_member_type1" },
682
+ ]
683
+ end
580
684
 
581
685
  it "returns the expected hash" do
582
- expect(described_class.send(:setup_union, union)).to eql(expected_hash)
686
+ expect(setup_union).to eql(expected_output)
583
687
  end
584
688
  end
585
689
 
@@ -587,12 +691,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
587
691
  let(:union) { Lutaml::Xsd::Union.new }
588
692
 
589
693
  it "returns the empty hash" do
590
- expect(described_class.send(:setup_union, union)).to be_empty
694
+ expect(setup_union).to be_empty
591
695
  end
592
696
  end
593
697
  end
594
698
 
595
699
  describe ".setup_attribute" do
700
+ let(:setup_attribute) do
701
+ described_class.send(:setup_attribute, attribute)
702
+ end
703
+
596
704
  context "when given attribute contains name and type" do
597
705
  let(:attribute) do
598
706
  Lutaml::Xsd::Attribute.new.tap do |attr|
@@ -604,7 +712,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
604
712
  let(:expected_hash) { { name: "test_name", base_class: "test_type" } }
605
713
 
606
714
  it "returns the expected hash" do
607
- expect(described_class.send(:setup_attribute, attribute)).to eql(expected_hash)
715
+ expect(setup_attribute).to eql(expected_hash)
608
716
  end
609
717
  end
610
718
 
@@ -618,7 +726,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
618
726
  let(:expected_hash) { { ref_class: "test_ref" } }
619
727
 
620
728
  it "returns the expected hash" do
621
- expect(described_class.send(:setup_attribute, attribute)).to eql(expected_hash)
729
+ expect(setup_attribute).to eql(expected_hash)
622
730
  end
623
731
  end
624
732
 
@@ -627,12 +735,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
627
735
  let(:expected_hash) { { name: nil, base_class: nil } }
628
736
 
629
737
  it "returns the empty hash" do
630
- expect(described_class.send(:setup_attribute, attribute)).to eql(expected_hash)
738
+ expect(setup_attribute).to eql(expected_hash)
631
739
  end
632
740
  end
633
741
  end
634
742
 
635
743
  describe ".setup_attribute_groups" do
744
+ let(:setup_attribute_groups) do
745
+ described_class.send(:setup_attribute_groups, attribute_group)
746
+ end
747
+
636
748
  context "when given attribute_group contains attribute and attribute_group" do
637
749
  let(:attribute_group) do
638
750
  Lutaml::Xsd::AttributeGroup.new.tap do |attr_group|
@@ -645,10 +757,17 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
645
757
  end
646
758
  end
647
759
 
648
- let(:expected_hash) { { attributes: [{ name: "test_name", base_class: "test_type" }], attribute_groups: [{}] } }
760
+ let(:expected_hash) do
761
+ {
762
+ attributes: [
763
+ { name: "test_name", base_class: "test_type" },
764
+ ],
765
+ attribute_groups: [{}],
766
+ }
767
+ end
649
768
 
650
769
  it "returns the expected hash" do
651
- expect(described_class.send(:setup_attribute_groups, attribute_group)).to eql(expected_hash)
770
+ expect(setup_attribute_groups).to eql(expected_hash)
652
771
  end
653
772
  end
654
773
 
@@ -662,7 +781,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
662
781
  let(:expected_hash) { { ref_class: "test_ref" } }
663
782
 
664
783
  it "returns the expected hash" do
665
- expect(described_class.send(:setup_attribute_groups, attribute_group)).to eql(expected_hash)
784
+ expect(setup_attribute_groups).to eql(expected_hash)
666
785
  end
667
786
  end
668
787
 
@@ -670,7 +789,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
670
789
  let(:attribute_group) { Lutaml::Xsd::AttributeGroup.new }
671
790
 
672
791
  it "returns the empty hash" do
673
- expect(described_class.send(:setup_attribute_groups, attribute_group)).to be_empty
792
+ expect(setup_attribute_groups).to be_empty
674
793
  end
675
794
  end
676
795
  end
@@ -722,6 +841,10 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
722
841
  described_class.instance_variable_set(:@complex_types, nil)
723
842
  end
724
843
 
844
+ let(:setup_element) do
845
+ described_class.send(:setup_element, element)
846
+ end
847
+
725
848
  let(:complex_types) { { "test_complex_type" => {} } }
726
849
 
727
850
  context "when given element contains ref" do
@@ -734,7 +857,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
734
857
  let(:expected_hash) { { ref_class: "test_ref" } }
735
858
 
736
859
  it "returns the expected hash" do
737
- expect(described_class.send(:setup_element, element)).to eql(expected_hash)
860
+ expect(setup_element).to eql(expected_hash)
738
861
  end
739
862
  end
740
863
 
@@ -754,7 +877,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
754
877
  let(:expected_hash) { { ref_class: "test_ref" } }
755
878
 
756
879
  it "returns the expected hash" do
757
- expect(described_class.send(:setup_element, element)).to eql(expected_hash)
880
+ expect(setup_element).to eql(expected_hash)
758
881
  end
759
882
  end
760
883
 
@@ -768,10 +891,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
768
891
  end
769
892
  end
770
893
 
771
- let(:expected_hash) { { type_name: "test_type", element_name: "test_name", arguments: { min_occurs: "0", max_occurs: "1" } } }
894
+ let(:expected_hash) do
895
+ {
896
+ type_name: "test_type",
897
+ element_name: "test_name",
898
+ arguments: { min_occurs: "0", max_occurs: "1" },
899
+ }
900
+ end
772
901
 
773
902
  it "returns the expected hash" do
774
- expect(described_class.send(:setup_element, element)).to eql(expected_hash)
903
+ expect(setup_element).to eql(expected_hash)
775
904
  end
776
905
  end
777
906
 
@@ -785,10 +914,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
785
914
  end
786
915
  end
787
916
 
788
- let(:expected_hash) { { type_name: "test_type", element_name: "test_name", complex_type: { mixed: false } } }
917
+ let(:expected_hash) do
918
+ {
919
+ type_name: "test_type",
920
+ element_name: "test_name",
921
+ complex_type: { mixed: false },
922
+ }
923
+ end
789
924
 
790
925
  it "returns the expected hash" do
791
- expect(described_class.send(:setup_element, element)).to eql(expected_hash)
926
+ expect(setup_element).to eql(expected_hash)
792
927
  end
793
928
  end
794
929
 
@@ -797,12 +932,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
797
932
  let(:expected_hash) { { type_name: nil, element_name: nil } }
798
933
 
799
934
  it "returns the expected hash" do
800
- expect(described_class.send(:setup_element, element)).to eql(expected_hash)
935
+ expect(setup_element).to eql(expected_hash)
801
936
  end
802
937
  end
803
938
  end
804
939
 
805
940
  describe ".setup_restriction" do
941
+ let(:setup_restriction) do
942
+ described_class.send(:setup_restriction, restriction, {})
943
+ end
944
+
806
945
  context "when given restriction contains base and pattern" do
807
946
  let(:restriction) do
808
947
  Lutaml::Xsd::RestrictionSimpleType.new.tap do |restriction|
@@ -818,10 +957,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
818
957
  end
819
958
  end
820
959
 
821
- let(:expected_hash) { { base_class: "test_base", pattern: "((?-mix:test_pattern))|((?-mix:test_pattern1))", values: ["test_value", "test_value1"] } }
960
+ let(:expected_hash) do
961
+ {
962
+ base_class: "test_base",
963
+ pattern: "((?-mix:test_pattern))|((?-mix:test_pattern1))",
964
+ values: ["test_value", "test_value1"],
965
+ }
966
+ end
822
967
 
823
968
  it "returns the expected hash" do
824
- expect(described_class.send(:setup_restriction, restriction, {})).to eql(expected_hash)
969
+ expect(setup_restriction).to eql(expected_hash)
825
970
  end
826
971
  end
827
972
 
@@ -829,12 +974,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
829
974
  let(:restriction) { Lutaml::Xsd::RestrictionSimpleType.new }
830
975
 
831
976
  it "returns the expected hash" do
832
- expect(described_class.send(:setup_restriction, restriction, {})).to eql({ base_class: nil })
977
+ expect(setup_restriction).to eql({ base_class: nil })
833
978
  end
834
979
  end
835
980
  end
836
981
 
837
982
  describe ".restriction_patterns" do
983
+ let(:restriction_patterns) do
984
+ described_class.send(:restriction_patterns, patterns, {})
985
+ end
986
+
838
987
  context "when given patterns are not empty" do
839
988
  let(:patterns) do
840
989
  [
@@ -843,10 +992,12 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
843
992
  ]
844
993
  end
845
994
 
846
- let(:expected_hash) { { pattern: "((?-mix:test_pattern))|((?-mix:test_pattern1))" } }
995
+ let(:expected_hash) do
996
+ { pattern: "((?-mix:test_pattern))|((?-mix:test_pattern1))" }
997
+ end
847
998
 
848
999
  it "returns the expected hash" do
849
- expect(described_class.send(:restriction_patterns, patterns, {})).to eql(expected_hash)
1000
+ expect(restriction_patterns).to eql(expected_hash)
850
1001
  end
851
1002
  end
852
1003
 
@@ -854,43 +1005,55 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
854
1005
  let(:patterns) { [] }
855
1006
 
856
1007
  it "returns the expected hash" do
857
- expect(described_class.send(:restriction_patterns, patterns, {})).to be_nil
1008
+ expect(restriction_patterns).to be_nil
858
1009
  end
859
1010
  end
860
1011
  end
861
1012
 
862
1013
  describe ".setup_complex_content" do
863
- context "when given complex_content contains extension with mixed attribute" do
1014
+ let(:setup_complex_content) do
1015
+ described_class.send(:setup_complex_content, complex_content)
1016
+ end
1017
+
1018
+ context "when complex_content contains extension with mixed attribute" do
864
1019
  let(:complex_content) do
865
1020
  Lutaml::Xsd::ComplexContent.new.tap do |complex_content|
866
1021
  complex_content.mixed = true
867
- complex_content.extension = Lutaml::Xsd::ExtensionComplexContent.new(base: "test_base")
1022
+ complex_content.extension =
1023
+ Lutaml::Xsd::ExtensionComplexContent.new(base: "test_base")
868
1024
  end
869
1025
  end
870
1026
 
871
- let(:expected_hash) { { mixed: true, extension: { extension_base: "test_base" } } }
1027
+ let(:expected_hash) do
1028
+ { mixed: true, extension: { extension_base: "test_base" } }
1029
+ end
872
1030
 
873
1031
  it "returns the expected hash" do
874
- expect(described_class.send(:setup_complex_content, complex_content)).to eql(expected_hash)
1032
+ expect(setup_complex_content).to eql(expected_hash)
875
1033
  end
876
1034
  end
877
1035
 
878
- context "when given complex_content contains restriction" do
1036
+ context "when complex_content contains restriction" do
879
1037
  let(:complex_content) do
880
1038
  Lutaml::Xsd::ComplexContent.new.tap do |complex_content|
881
- complex_content.restriction = Lutaml::Xsd::RestrictionComplexContent.new(base: "test_base")
1039
+ complex_content.restriction =
1040
+ Lutaml::Xsd::RestrictionComplexContent.new(base: "test_base")
882
1041
  end
883
1042
  end
884
1043
 
885
1044
  let(:expected_hash) { { base_class: "test_base" } }
886
1045
 
887
1046
  it "returns the expected hash" do
888
- expect(described_class.send(:setup_complex_content, complex_content)).to eql(expected_hash)
1047
+ expect(setup_complex_content).to eql(expected_hash)
889
1048
  end
890
1049
  end
891
1050
  end
892
1051
 
893
1052
  describe ".setup_extension" do
1053
+ let(:setup_extension) do
1054
+ described_class.send(:setup_extension, extension)
1055
+ end
1056
+
894
1057
  context "when given extension contains attributes" do
895
1058
  let(:extension) do
896
1059
  Lutaml::Xsd::ExtensionComplexContent.new.tap do |extension|
@@ -920,7 +1083,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
920
1083
  end
921
1084
 
922
1085
  it "returns the expected hash" do
923
- expect(described_class.send(:setup_extension, extension)).to eql(expected_hash)
1086
+ expect(setup_extension).to eql(expected_hash)
924
1087
  end
925
1088
  end
926
1089
 
@@ -928,12 +1091,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
928
1091
  let(:extension) { Lutaml::Xsd::ExtensionComplexContent.new }
929
1092
 
930
1093
  it "returns the expected hash" do
931
- expect(described_class.send(:setup_extension, extension)).to eql({ extension_base: nil })
1094
+ expect(setup_extension).to eql({ extension_base: nil })
932
1095
  end
933
1096
  end
934
1097
  end
935
1098
 
936
1099
  describe ".element_arguments" do
1100
+ let(:element_arguments) do
1101
+ described_class.send(:element_arguments, element, {})
1102
+ end
1103
+
937
1104
  context "when given element contains min_occurs and max_occurs" do
938
1105
  let(:element) do
939
1106
  Lutaml::Xsd::Element.new.tap do |element|
@@ -945,7 +1112,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
945
1112
  let(:expected_hash) { { min_occurs: "0", max_occurs: "1" } }
946
1113
 
947
1114
  it "returns the expected hash" do
948
- expect(described_class.send(:element_arguments, element, {})).to eql(expected_hash)
1115
+ expect(element_arguments).to eql(expected_hash)
949
1116
  end
950
1117
  end
951
1118
 
@@ -953,12 +1120,16 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
953
1120
  let(:element) { Lutaml::Xsd::Element.new }
954
1121
 
955
1122
  it "returns the expected hash" do
956
- expect(described_class.send(:element_arguments, element, {})).to be_empty
1123
+ expect(element_arguments).to be_empty
957
1124
  end
958
1125
  end
959
1126
  end
960
1127
 
961
1128
  describe ".resolved_element_order" do
1129
+ let(:resolved_element_order) do
1130
+ described_class.send(:resolved_element_order, element)
1131
+ end
1132
+
962
1133
  context "when given element contains element_order but no instance relevant elements/instances" do
963
1134
  let(:element) do
964
1135
  Lutaml::Xsd::Element.new.tap do |element|
@@ -973,12 +1144,12 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
973
1144
 
974
1145
  it "raises an error when element_order contains elements that isn't an attribute of the instance" do
975
1146
  element.element_order << Lutaml::Model::XmlAdapter::Element.new("Element", "test_element")
976
- expect { described_class.send(:resolved_element_order, element) }.to raise_error(NoMethodError)
1147
+ expect { resolved_element_order }.to raise_error(NoMethodError)
977
1148
  end
978
1149
 
979
1150
  it "returns the array with nil values" do
980
1151
  expected_hash = [nil, nil, nil, nil]
981
- expect(described_class.send(:resolved_element_order, element)).to eql(expected_hash)
1152
+ expect(resolved_element_order).to eql(expected_hash)
982
1153
  end
983
1154
  end
984
1155
 
@@ -998,10 +1169,17 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
998
1169
  end
999
1170
  end
1000
1171
 
1001
- let(:expected_hash) { [element.annotation, element.simple_type, element.complex_type, element.key] }
1172
+ let(:expected_hash) do
1173
+ [
1174
+ element.annotation,
1175
+ element.simple_type,
1176
+ element.complex_type,
1177
+ element.key,
1178
+ ]
1179
+ end
1002
1180
 
1003
1181
  it "returns the expected hash" do
1004
- expect(described_class.send(:resolved_element_order, element)).to eql(expected_hash)
1182
+ expect(resolved_element_order).to eql(expected_hash)
1005
1183
  end
1006
1184
  end
1007
1185
 
@@ -1013,7 +1191,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1013
1191
  end
1014
1192
 
1015
1193
  it "returns the expected hash" do
1016
- expect(described_class.send(:resolved_element_order, element)).to be_empty
1194
+ expect(resolved_element_order).to be_empty
1017
1195
  end
1018
1196
  end
1019
1197
  end
@@ -1021,73 +1199,115 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1021
1199
 
1022
1200
  describe "structure to template content resolving methods" do
1023
1201
  describe ".resolve_parent_class" do
1202
+ let(:resolve_parent_class) do
1203
+ described_class.send(:resolve_parent_class, content)
1204
+ end
1205
+
1024
1206
  context "when complex_content.extension is not present" do
1207
+ let(:content) { {} }
1208
+
1025
1209
  it "returns Lutaml::Model::Serializable" do
1026
- expect(described_class.send(:resolve_parent_class, {})).to eql("Lutaml::Model::Serializable")
1210
+ expect(resolve_parent_class).to eql("Lutaml::Model::Serializable")
1027
1211
  end
1028
1212
  end
1029
1213
 
1030
1214
  context "when complex_content.extension is present" do
1215
+ let(:content) do
1216
+ { complex_content: { extension: { extension_base: "ST_Parent" } } }
1217
+ end
1218
+
1031
1219
  it "returns the extension_base value" do
1032
- content = { complex_content: { extension: { extension_base: "ST_Parent" } } }
1033
- expect(described_class.send(:resolve_parent_class, content)).to eql("STParent")
1220
+ expect(resolve_parent_class).to eql("STParent")
1034
1221
  end
1035
1222
  end
1036
1223
  end
1037
1224
 
1038
1225
  describe ".resolve_attribute_class" do
1039
- context "when attribute.base_class is one of the standard classes" do
1040
- described_class::DEFAULT_CLASSES.each do |standard_class|
1041
- it "returns the attribute_class value for #{standard_class.capitalize}" do
1042
- base_class_hash = to_mapping_hash({ base_class: "xsd:#{standard_class}" })
1043
- expect(described_class.send(:resolve_attribute_class, base_class_hash)).to eql(":#{standard_class}")
1226
+ let(:resolve_attribute_class) do
1227
+ described_class.send(:resolve_attribute_class, base_class_hash)
1228
+ end
1229
+
1230
+ described_class::DEFAULT_CLASSES.each do |standard_class|
1231
+ context "when #{standard_class.capitalize}" do
1232
+ let(:base_class_hash) do
1233
+ to_mapping_hash({ base_class: "xsd:#{standard_class}" })
1234
+ end
1235
+
1236
+ it "returns :#{standard_class}" do
1237
+ expect(resolve_attribute_class).to eql(":#{standard_class}")
1044
1238
  end
1045
1239
  end
1046
1240
  end
1047
1241
 
1048
1242
  context "when attribute.base_class is not one of the standard classes" do
1243
+ let(:base_class_hash) do
1244
+ to_mapping_hash({ base_class: "test_st_attr1" })
1245
+ end
1246
+
1049
1247
  it "returns the attribute_class value" do
1050
- base_class_hash = to_mapping_hash({ base_class: "test_st_attr1" })
1051
- expect(described_class.send(:resolve_attribute_class, base_class_hash)).to eql("TestStAttr1")
1248
+ expect(resolve_attribute_class).to eql("TestStAttr1")
1052
1249
  end
1053
1250
  end
1054
1251
  end
1055
1252
 
1056
1253
  describe ".resolve_element_class" do
1057
- context "when element.type_name is one of the standard classes" do
1058
- described_class::DEFAULT_CLASSES.each do |standard_class|
1059
- it "returns the element_class value for #{standard_class.capitalize}" do
1060
- type_name_hash = to_mapping_hash({ type_name: "xsd:#{standard_class}" })
1061
- expect(described_class.send(:resolve_element_class, type_name_hash)).to eql(":#{standard_class}")
1254
+ let(:resolve_element_class) do
1255
+ described_class.send(:resolve_element_class, type_name_hash)
1256
+ end
1257
+
1258
+ described_class::DEFAULT_CLASSES.each do |standard_class|
1259
+ context "when #{standard_class.capitalize}" do
1260
+ let(:type_name_hash) do
1261
+ to_mapping_hash({ type_name: "xsd:#{standard_class}" })
1262
+ end
1263
+
1264
+ it "returns :#{standard_class}" do
1265
+ expect(resolve_element_class).to eql(":#{standard_class}")
1062
1266
  end
1063
1267
  end
1064
1268
  end
1065
1269
 
1066
1270
  context "when element.type_name is not one of the standard classes" do
1271
+ let(:type_name_hash) do
1272
+ to_mapping_hash({ type_name: "test_st_element1" })
1273
+ end
1274
+
1067
1275
  it "returns the element_class value" do
1068
- type_name_hash = to_mapping_hash({ type_name: "test_st_element1" })
1069
- expect(described_class.send(:resolve_element_class, type_name_hash)).to eql("TestStElement1")
1276
+ expect(resolve_element_class).to eql("TestStElement1")
1070
1277
  end
1071
1278
  end
1072
1279
  end
1073
1280
 
1074
1281
  describe ".resolve_occurs" do
1075
- context "when min_occurs and max_occurs are present" do
1282
+ let(:resolve_occours) do
1283
+ described_class.send(:resolve_occurs, base_class_hash)
1284
+ end
1285
+
1286
+ context "when max_occurs is unbounded" do
1287
+ let(:base_class_hash) do
1288
+ to_mapping_hash({ min_occurs: 0, max_occurs: "unbounded" })
1289
+ end
1290
+
1076
1291
  it "returns the collection: true" do
1077
- base_class_hash = to_mapping_hash({ min_occurs: 0, max_occurs: "unbounded" })
1078
- expect(described_class.send(:resolve_occurs, base_class_hash)).to eql(", collection: true")
1292
+ expect(resolve_occours).to eql(", collection: true")
1293
+ end
1294
+ end
1295
+
1296
+ context "when max_occurs is 1" do
1297
+ let(:base_class_hash) do
1298
+ to_mapping_hash({ min_occurs: 0, max_occurs: 1 })
1079
1299
  end
1080
1300
 
1081
1301
  it "returns the collection: 0..1" do
1082
- base_class_hash = to_mapping_hash({ min_occurs: 0, max_occurs: 1 })
1083
- expect(described_class.send(:resolve_occurs, base_class_hash)).to eql(", collection: 0..1")
1302
+ expect(resolve_occours).to eql(", collection: 0..1")
1084
1303
  end
1085
1304
  end
1086
1305
 
1087
1306
  context "when min_occurs/max_occurs are not present" do
1307
+ let(:base_class_hash) { {} }
1308
+
1088
1309
  it "returns the collection: 0.." do
1089
- base_class_hash = to_mapping_hash({ min_occurs: 0, max_occurs: 1 })
1090
- expect(described_class.send(:resolve_occurs, base_class_hash)).to eql(", collection: 0..1")
1310
+ expect(resolve_occours).to eql(", collection: true")
1091
1311
  end
1092
1312
  end
1093
1313
  end
@@ -1101,15 +1321,33 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1101
1321
  described_class.instance_variable_set(:@elements, nil)
1102
1322
  end
1103
1323
 
1324
+ let(:resolve_elements) do
1325
+ described_class.send(:resolve_elements, content)
1326
+ end
1327
+
1104
1328
  let(:elements) do
1105
- to_mapping_hash({ "testRef" => to_mapping_hash({ element_name: "testElement" }) })
1329
+ to_mapping_hash(
1330
+ { "testRef" => to_mapping_hash({ element_name: "testElement" }) },
1331
+ )
1106
1332
  end
1107
1333
 
1108
1334
  context "when elements contain ref_class and base_class elements" do
1335
+ let(:content) do
1336
+ [
1337
+ to_mapping_hash({ ref_class: "testRef" }),
1338
+ to_mapping_hash({ element_name: "testElement1" }),
1339
+ ]
1340
+ end
1341
+
1342
+ let(:expected_elements) do
1343
+ {
1344
+ "testElement" => { element_name: "testElement" },
1345
+ "testElement1" => { element_name: "testElement1" },
1346
+ }
1347
+ end
1348
+
1109
1349
  it "returns the elements hash" do
1110
- content = [to_mapping_hash({ ref_class: "testRef" }), to_mapping_hash({ element_name: "testElement1" })]
1111
- expected_elements = { "testElement" => { element_name: "testElement" }, "testElement1" => { element_name: "testElement1" } }
1112
- expect(described_class.send(:resolve_elements, content)).to eql(expected_elements)
1350
+ expect(resolve_elements).to eql(expected_elements)
1113
1351
  end
1114
1352
  end
1115
1353
  end
@@ -1140,7 +1378,7 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1140
1378
  }
1141
1379
  end
1142
1380
 
1143
- context "when sequence contain empty elements and other empty attributes" do
1381
+ context "when sequence contain empty elements and empty attributes" do
1144
1382
  it "returns the elements empty hash" do
1145
1383
  expect(described_class.send(:resolve_sequence, sequence)).to be_empty
1146
1384
  end
@@ -1148,6 +1386,10 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1148
1386
  end
1149
1387
 
1150
1388
  describe ".resolve_choice" do
1389
+ let(:resolve_choice) do
1390
+ described_class.send(:resolve_choice, choice)
1391
+ end
1392
+
1151
1393
  let(:choice) do
1152
1394
  {
1153
1395
  "string" => to_mapping_hash({ element_name: "testElement" }),
@@ -1159,7 +1401,8 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1159
1401
 
1160
1402
  context "when choice contain empty elements and other empty attributes" do
1161
1403
  it "returns the one element hash" do
1162
- expect(described_class.send(:resolve_choice, choice)).to eql({ "string" => { element_name: "testElement" } })
1404
+ expect(resolve_choice)
1405
+ .to eql({ "string" => { element_name: "testElement" } })
1163
1406
  end
1164
1407
  end
1165
1408
  end
@@ -1192,6 +1435,10 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1192
1435
  end
1193
1436
 
1194
1437
  describe ".resolve_complex_content" do
1438
+ let(:resolve_complex_content) do
1439
+ described_class.send(:resolve_complex_content, complex_content)
1440
+ end
1441
+
1195
1442
  let(:complex_content) do
1196
1443
  {
1197
1444
  extension: {},
@@ -1201,15 +1448,22 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1201
1448
 
1202
1449
  context "when complex_content contain extension and restriction" do
1203
1450
  it "returns the one element hash" do
1204
- expect(described_class.send(:resolve_complex_content, complex_content)).to be_empty
1451
+ expect(resolve_complex_content).to be_empty
1205
1452
  end
1206
1453
  end
1207
1454
  end
1208
1455
 
1209
1456
  describe ".resolve_extension" do
1457
+ let(:resolve_extension) do
1458
+ described_class.send(:resolve_extension, to_mapping_hash(extension))
1459
+ end
1460
+
1210
1461
  let(:extension) do
1211
1462
  {
1212
- attributes: [{ base_class: "ST_Attr1", default: "1" }, { base_class: "ST_Attr2", default: "2" }],
1463
+ attributes: [
1464
+ { base_class: "ST_Attr1", default: "1" },
1465
+ { base_class: "ST_Attr2", default: "2" },
1466
+ ],
1213
1467
  sequence: {},
1214
1468
  choice: {},
1215
1469
  }
@@ -1217,63 +1471,105 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1217
1471
 
1218
1472
  context "when extension contain attributes, sequence and choice" do
1219
1473
  it "returns the one element hash" do
1220
- expect(described_class.send(:resolve_extension, to_mapping_hash(extension))).to eql({ attributes: extension[:attributes] })
1474
+ expect(resolve_extension)
1475
+ .to eql({ attributes: extension[:attributes] })
1221
1476
  end
1222
1477
  end
1223
1478
  end
1224
1479
 
1225
1480
  describe ".resolve_attribute_default" do
1481
+ let(:resolve_attribute_default) do
1482
+ described_class.send(:resolve_attribute_default, attribute)
1483
+ end
1484
+
1226
1485
  context "when attribute contain default" do
1486
+ let(:attribute) do
1487
+ to_mapping_hash({ base_class: "ST_Attr1", default: "1" })
1488
+ end
1489
+
1227
1490
  it "returns the string with default value" do
1228
- attribute = to_mapping_hash({ base_class: "ST_Attr1", default: "1" })
1229
- expect(described_class.send(:resolve_attribute_default, attribute)).to eql(", default: \"1\"")
1491
+ expect(resolve_attribute_default).to eql(", default: \"1\"")
1230
1492
  end
1231
1493
  end
1232
1494
 
1233
1495
  context "when attribute contain no default" do
1496
+ let(:attribute) { to_mapping_hash({ base_class: "ST_Attr1" }) }
1497
+
1234
1498
  it "returns the string with nil as default value" do
1235
- attribute = to_mapping_hash({ base_class: "ST_Attr1" })
1236
- expect(described_class.send(:resolve_attribute_default, attribute)).to eql(", default: nil")
1499
+ expect(resolve_attribute_default).to eql(", default: nil")
1237
1500
  end
1238
1501
  end
1239
1502
  end
1240
1503
 
1241
1504
  describe ".resolve_attribute_default_value" do
1242
- context "when attribute data type is one of the standard classes" do
1243
- let(:standard_class_value) do
1244
- {
1245
- "int" => { input: "1", output: 1 },
1246
- "integer" => { input: "12", output: 12 },
1247
- "string" => { input: "test_string", output: "test_string" },
1248
- "boolean" => { input: "false", output: false },
1249
- }
1250
- end
1505
+ let(:resolve_attribute_default_value) do
1506
+ described_class.send(
1507
+ :resolve_attribute_default_value,
1508
+ class_name,
1509
+ input,
1510
+ )
1511
+ end
1512
+
1513
+ let(:standard_class_value) do
1514
+ {
1515
+ "int" => { input: "1", output: 1 },
1516
+ "integer" => { input: "12", output: 12 },
1517
+ "string" => { input: "test_string", output: "test_string" },
1518
+ "boolean" => { input: "false", output: false },
1519
+ }
1520
+ end
1251
1521
 
1252
- described_class::DEFAULT_CLASSES.each do |standard_class|
1253
- it "returns the value as the #{standard_class.capitalize} class instance" do
1254
- default_value = standard_class_value[standard_class]
1255
- expect(described_class.send(:resolve_attribute_default_value, standard_class, default_value[:input])).to eql(default_value[:output])
1522
+ described_class::DEFAULT_CLASSES.each do |standard_class|
1523
+ describe "for #{standard_class.capitalize} class" do
1524
+ let(:default_value) { standard_class_value[standard_class] }
1525
+ let(:class_name) { standard_class }
1526
+ let(:input) { default_value[:input] }
1527
+
1528
+ it "returns an instance of #{standard_class.capitalize}" do
1529
+ expect(resolve_attribute_default_value)
1530
+ .to eql(default_value[:output])
1256
1531
  end
1257
1532
  end
1258
1533
  end
1259
1534
 
1260
1535
  context "when attribute data type is not one of the standard classes" do
1536
+ let(:class_name) { "BooleanTestClass" }
1537
+ let(:input) { "1" }
1538
+
1261
1539
  it "returns the string with default value" do
1262
- expect(described_class.send(:resolve_attribute_default_value, "BooleanTestClass", "1")).to eql("\"1\"")
1540
+ expect(resolve_attribute_default_value).to eql("\"1\"")
1263
1541
  end
1264
1542
  end
1265
1543
  end
1266
1544
 
1267
1545
  describe ".resolve_namespace" do
1546
+ let(:resolved_namespace) do
1547
+ described_class.send(
1548
+ :resolve_namespace,
1549
+ namespace_attrs,
1550
+ )
1551
+ end
1552
+
1268
1553
  context "when namespace is given" do
1554
+ let(:namespace_attrs) { { namespace: "testNamespace" } }
1555
+
1269
1556
  it "returns the string with namespace" do
1270
- expect(described_class.send(:resolve_namespace, { namespace: "testNamespace" })).to eql("namespace \"testNamespace\"\n")
1557
+ expect(resolved_namespace)
1558
+ .to eql("namespace \"testNamespace\"\n")
1271
1559
  end
1272
1560
  end
1273
1561
 
1274
1562
  context "when namespace and prefix are given" do
1563
+ let(:namespace_attrs) do
1564
+ {
1565
+ namespace: "testNamespace",
1566
+ prefix: "testPrefix",
1567
+ }
1568
+ end
1569
+
1275
1570
  it "returns the string with namespace and prefix" do
1276
- expect(described_class.send(:resolve_namespace, { namespace: "testNamespace", prefix: "testPrefix" })).to eql("namespace \"testNamespace\", \"testPrefix\"\n")
1571
+ expect(resolved_namespace)
1572
+ .to eql("namespace \"testNamespace\", \"testPrefix\"\n")
1277
1573
  end
1278
1574
  end
1279
1575
 
@@ -1286,6 +1582,10 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1286
1582
  end
1287
1583
 
1288
1584
  describe "required files list compiler methods" do
1585
+ let(:required_files) do
1586
+ described_class.instance_variable_get(:@required_files)
1587
+ end
1588
+
1289
1589
  describe ".resolve_required_files" do
1290
1590
  context "when elements are given" do
1291
1591
  before do
@@ -1308,9 +1608,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1308
1608
  }
1309
1609
  end
1310
1610
 
1311
- it "populates @required_files variable with the names of the required files" do
1611
+ it "populates @required_files" do
1312
1612
  described_class.send(:resolve_required_files, content)
1313
- expect(described_class.instance_variable_get(:@required_files)).to eql([])
1613
+ expect(required_files).to eql([])
1314
1614
  end
1315
1615
  end
1316
1616
  end
@@ -1334,9 +1634,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1334
1634
  }
1335
1635
  end
1336
1636
 
1337
- it "populates @required_files variable with the names of the required files" do
1637
+ it "populates @required_files" do
1338
1638
  described_class.send(:required_files_simple_content, content)
1339
- expect(described_class.instance_variable_get(:@required_files)).to eql([])
1639
+ expect(required_files).to eql([])
1340
1640
  end
1341
1641
  end
1342
1642
  end
@@ -1358,9 +1658,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1358
1658
  }
1359
1659
  end
1360
1660
 
1361
- it "populates @required_files variable with the names of the required files" do
1661
+ it "populates @required_files" do
1362
1662
  described_class.send(:required_files_complex_content, content)
1363
- expect(described_class.instance_variable_get(:@required_files)).to eql([])
1663
+ expect(required_files).to eql([])
1364
1664
  end
1365
1665
  end
1366
1666
  end
@@ -1386,9 +1686,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1386
1686
  }
1387
1687
  end
1388
1688
 
1389
- it "populates @required_files variable with the names of the required files" do
1689
+ it "populates @required_files" do
1390
1690
  described_class.send(:required_files_extension, content)
1391
- expect(described_class.instance_variable_get(:@required_files)).to eql([])
1691
+ expect(required_files).to eql([])
1392
1692
  end
1393
1693
  end
1394
1694
  end
@@ -1405,9 +1705,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1405
1705
 
1406
1706
  let(:content) { { base: "testId" } }
1407
1707
 
1408
- it "populates @required_files variable with the names of the required files" do
1708
+ it "populates @required_files" do
1409
1709
  described_class.send(:required_files_restriction, content)
1410
- expect(described_class.instance_variable_get(:@required_files)).to eql(["test_id"])
1710
+ expect(required_files).to eql(["test_id"])
1411
1711
  end
1412
1712
  end
1413
1713
  end
@@ -1434,9 +1734,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1434
1734
  }
1435
1735
  end
1436
1736
 
1437
- it "populates @required_files variable with the names of the required files" do
1737
+ it "populates @required_files" do
1438
1738
  described_class.send(:required_files_attribute_groups, content)
1439
- expect(described_class.instance_variable_get(:@required_files)).to eql([])
1739
+ expect(required_files).to eql([])
1440
1740
  end
1441
1741
  end
1442
1742
  end
@@ -1466,9 +1766,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1466
1766
  ]
1467
1767
  end
1468
1768
 
1469
- it "populates @required_files variable with the names of the required files" do
1769
+ it "populates @required_files" do
1470
1770
  described_class.send(:required_files_attribute, content)
1471
- expect(described_class.instance_variable_get(:@required_files)).to eql(["st_attr1", "st_attr2"])
1771
+ expect(required_files).to eql(["st_attr1", "st_attr2"])
1472
1772
  end
1473
1773
  end
1474
1774
  end
@@ -1488,9 +1788,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1488
1788
  }
1489
1789
  end
1490
1790
 
1491
- it "populates @required_files variable with the names of the required files" do
1791
+ it "populates @required_files" do
1492
1792
  described_class.send(:required_files_choice, content)
1493
- expect(described_class.instance_variable_get(:@required_files)).to eql(["st_attr1"])
1793
+ expect(required_files).to eql(["st_attr1"])
1494
1794
  end
1495
1795
  end
1496
1796
  end
@@ -1516,9 +1816,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1516
1816
  }
1517
1817
  end
1518
1818
 
1519
- it "populates @required_files variable with the names of the required files" do
1819
+ it "populates @required_files" do
1520
1820
  described_class.send(:required_files_group, content)
1521
- expect(described_class.instance_variable_get(:@required_files)).to eql([])
1821
+ expect(required_files).to eql([])
1522
1822
  end
1523
1823
  end
1524
1824
  end
@@ -1542,9 +1842,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1542
1842
  }
1543
1843
  end
1544
1844
 
1545
- it "populates @required_files variable with the names of the required files" do
1845
+ it "populates @required_files" do
1546
1846
  described_class.send(:required_files_sequence, content)
1547
- expect(described_class.instance_variable_get(:@required_files)).to eql([])
1847
+ expect(required_files).to eql([])
1548
1848
  end
1549
1849
  end
1550
1850
  end
@@ -1574,9 +1874,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1574
1874
  ]
1575
1875
  end
1576
1876
 
1577
- it "populates @required_files variable with the names of the required files" do
1877
+ it "populates @required_files" do
1578
1878
  described_class.send(:required_files_elements, content)
1579
- expect(described_class.instance_variable_get(:@required_files)).to eql(["ct_element1", "ct_element2"])
1879
+ expect(required_files).to eql(["ct_element1", "ct_element2"])
1580
1880
  end
1581
1881
  end
1582
1882
 
@@ -1605,9 +1905,9 @@ RSpec.describe Lutaml::Model::Schema::XmlCompiler do
1605
1905
  ]
1606
1906
  end
1607
1907
 
1608
- it "populates @required_files variable with the names of the required files excluding default classes" do
1908
+ it "populates @required_files excluding default classes" do
1609
1909
  described_class.send(:required_files_elements, content)
1610
- expect(described_class.instance_variable_get(:@required_files)).to eql(["ct_element1"])
1910
+ expect(required_files).to eql(["ct_element1"])
1611
1911
  end
1612
1912
  end
1613
1913
  end