representable 3.2.0 → 3.3.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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +17 -10
- data/.github/workflows/ci_jruby.yml +21 -0
- data/.github/workflows/ci_truffleruby.yml +19 -0
- data/CHANGES.md +5 -0
- data/Gemfile +1 -1
- data/README.md +0 -1
- data/lib/representable/hash/binding.rb +1 -0
- data/lib/representable/json.rb +14 -2
- data/lib/representable/version.rb +1 -1
- data/lib/representable/xml/binding.rb +0 -7
- data/lib/representable/xml.rb +7 -0
- data/representable.gemspec +1 -3
- data/test/as_test.rb +8 -13
- data/test/benchmarking.rb +20 -25
- data/test/binding_test.rb +13 -5
- data/test/cached_test.rb +55 -35
- data/test/class_test.rb +46 -33
- data/test/coercion_test.rb +29 -19
- data/test/config/inherit_test.rb +12 -17
- data/test/config_test.rb +5 -7
- data/test/decorator_scope_test.rb +13 -11
- data/test/decorator_test.rb +11 -11
- data/test/default_test.rb +2 -2
- data/test/defaults_options_test.rb +37 -9
- data/test/definition_test.rb +10 -12
- data/test/examples/example.rb +43 -38
- data/test/examples/object.rb +7 -6
- data/test/exec_context_test.rb +18 -23
- data/test/features_test.rb +29 -10
- data/test/filter_test.rb +29 -20
- data/test/for_collection_test.rb +12 -15
- data/test/generic_test.rb +15 -22
- data/test/getter_setter_test.rb +11 -6
- data/test/hash_bindings_test.rb +21 -12
- data/test/hash_test.rb +53 -38
- data/test/heritage_test.rb +0 -1
- data/test/if_test.rb +25 -21
- data/test/include_exclude_test.rb +24 -16
- data/test/inherit_test.rb +114 -27
- data/test/inline_test.rb +42 -33
- data/test/instance_test.rb +151 -109
- data/test/is_representable_test.rb +19 -17
- data/test/json_test.rb +48 -46
- data/test/lonely_test.rb +35 -33
- data/test/nested_test.rb +16 -19
- data/test/object_test.rb +6 -6
- data/test/option_test.rb +10 -8
- data/test/parse_pipeline_test.rb +21 -15
- data/test/pipeline_test.rb +144 -108
- data/test/populator_test.rb +18 -15
- data/test/prepare_test.rb +15 -17
- data/test/private_options_test.rb +3 -2
- data/test/reader_writer_test.rb +4 -4
- data/test/realistic_benchmark.rb +21 -27
- data/test/render_nil_test.rb +1 -1
- data/test/represent_test.rb +14 -18
- data/test/representable_test.rb +86 -53
- data/test/schema_test.rb +51 -21
- data/test/serialize_deserialize_test.rb +14 -14
- data/test/skip_test.rb +39 -28
- data/test/stringify_hash_test.rb +29 -31
- data/test/test_helper.rb +31 -25
- data/test/test_helper_test.rb +7 -7
- data/test/uncategorized_test.rb +20 -15
- data/test/user_options_test.rb +12 -3
- data/test/wrap_test.rb +27 -17
- data/test/xml_assertions.rb +29 -0
- data/test/xml_bindings_test.rb +5 -8
- data/test/xml_namespace_test.rb +46 -39
- data/test/xml_test.rb +109 -88
- data/test/yaml_test.rb +73 -51
- metadata +7 -32
data/test/xml_namespace_test.rb
CHANGED
|
@@ -35,31 +35,31 @@ require "test_helper"
|
|
|
35
35
|
# </lib:book>
|
|
36
36
|
# </lib:library>
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
# Theoretically, every property (scalar) needs/should have a namespace.
|
|
39
|
+
# property :name, namespace: "http://eric.van-der-vlist.com/ns/person"
|
|
40
|
+
# # This is implicit if contained:
|
|
41
|
+
# class Person < Decorator
|
|
42
|
+
# namespace: "http://eric.van-der-vlist.com/ns/person"
|
|
43
|
+
# property :name #, namespace: "http://eric.van-der-vlist.com/ns/person"
|
|
44
|
+
# end
|
|
45
|
+
# class Library
|
|
46
|
+
# namespace "http://eric.van-der-vlist.com/ns/library"
|
|
47
|
+
|
|
48
|
+
# namespace_def lib: "http://eric.van-der-vlist.com/ns/library"
|
|
49
|
+
# namespace_def person: "http://eric.van-der-vlist.com/ns/person"
|
|
50
|
+
# # namespace_def person: Person
|
|
51
|
+
|
|
52
|
+
# property :person, decorator: Person
|
|
53
|
+
# end
|
|
54
54
|
class NamespaceXMLTest < Minitest::Spec
|
|
55
55
|
module Model
|
|
56
56
|
Library = Struct.new(:book)
|
|
57
57
|
Book = Struct.new(:id, :isbn)
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
let
|
|
60
|
+
let(:book) { Model::Book.new(1, 666) }
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
# :simple-class
|
|
63
63
|
class Library < Representable::Decorator
|
|
64
64
|
feature Representable::XML
|
|
65
65
|
feature Representable::XML::Namespace
|
|
@@ -69,24 +69,24 @@ class NamespaceXMLTest < Minitest::Spec
|
|
|
69
69
|
property :book do
|
|
70
70
|
namespace "http://eric.van-der-vlist.com/ns/library"
|
|
71
71
|
|
|
72
|
-
property :id,
|
|
72
|
+
property :id, attribute: true
|
|
73
73
|
property :isbn
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
# :simple-class end
|
|
78
77
|
|
|
79
78
|
# default namespace for library
|
|
80
79
|
it "what" do
|
|
81
|
-
|
|
80
|
+
assert_equal_xml(
|
|
81
|
+
Library.new(Model::Library.new(book)).to_xml,
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
# :simple-xml
|
|
84
|
+
%{<library xmlns="http://eric.van-der-vlist.com/ns/library">
|
|
85
85
|
<book id="1">
|
|
86
86
|
<isbn>666</isbn>
|
|
87
87
|
</book>
|
|
88
88
|
</library>}
|
|
89
|
-
|
|
89
|
+
# :simple-xml end
|
|
90
90
|
)
|
|
91
91
|
end
|
|
92
92
|
end
|
|
@@ -98,9 +98,9 @@ class Namespace2XMLTest < Minitest::Spec
|
|
|
98
98
|
Character = Struct.new(:name, :born, :qualification)
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
let
|
|
101
|
+
let(:book) { Model::Book.new(1, 666, Model::Character.new("Fowler"), [Model::Character.new("Frau Java", 1991, "typed")]) }
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
# :map-class
|
|
104
104
|
class Library < Representable::Decorator
|
|
105
105
|
feature Representable::XML
|
|
106
106
|
feature Representable::XML::Namespace
|
|
@@ -112,7 +112,7 @@ class Namespace2XMLTest < Minitest::Spec
|
|
|
112
112
|
property :book, class: Model::Book do
|
|
113
113
|
namespace "http://eric.van-der-vlist.com/ns/library"
|
|
114
114
|
|
|
115
|
-
property :id,
|
|
115
|
+
property :id, attribute: true
|
|
116
116
|
property :isbn
|
|
117
117
|
|
|
118
118
|
property :author, class: Model::Character do
|
|
@@ -132,12 +132,16 @@ class Namespace2XMLTest < Minitest::Spec
|
|
|
132
132
|
end
|
|
133
133
|
end
|
|
134
134
|
end
|
|
135
|
-
|
|
135
|
+
# :map-class end
|
|
136
136
|
|
|
137
137
|
it "renders" do
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
skip "JRuby's DOM raises NAMESPACE_ERR for prefixed elements" if RUBY_ENGINE == "jruby"
|
|
139
|
+
|
|
140
|
+
assert_equal_xml(
|
|
141
|
+
Library.new(Model::Library.new(book)).to_xml,
|
|
142
|
+
|
|
143
|
+
# :map-xml
|
|
144
|
+
%{<lib:library xmlns:lib=\"http://eric.van-der-vlist.com/ns/library\" xmlns:hr=\"http://eric.van-der-vlist.com/ns/person\">
|
|
141
145
|
<lib:book id=\"1\">
|
|
142
146
|
<lib:isbn>666</lib:isbn>
|
|
143
147
|
<hr:author>
|
|
@@ -150,14 +154,17 @@ class Namespace2XMLTest < Minitest::Spec
|
|
|
150
154
|
</lib:character>
|
|
151
155
|
</lib:book>
|
|
152
156
|
</lib:library>}
|
|
153
|
-
|
|
157
|
+
# :map-xml end
|
|
154
158
|
)
|
|
155
159
|
end
|
|
156
160
|
|
|
157
161
|
it "parses" do
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
Library.new
|
|
162
|
+
skip "JRuby's DOM recovers from the malformed tags below differently" if RUBY_ENGINE == "jruby"
|
|
163
|
+
|
|
164
|
+
lib = Model::Library.new
|
|
165
|
+
# :parse-call
|
|
166
|
+
Library.new(lib).from_xml(
|
|
167
|
+
%{<lib:library
|
|
161
168
|
xmlns:lib="http://eric.van-der-vlist.com/ns/library"
|
|
162
169
|
xmlns:hr="http://eric.van-der-vlist.com/ns/person">
|
|
163
170
|
<lib:book id="1">
|
|
@@ -174,13 +181,13 @@ class Namespace2XMLTest < Minitest::Spec
|
|
|
174
181
|
</lib:character>
|
|
175
182
|
</lib:book>
|
|
176
183
|
</lib:library>}
|
|
177
|
-
|
|
184
|
+
# :parse-call end
|
|
178
185
|
)
|
|
179
186
|
|
|
180
187
|
_(lib.book.inspect).must_equal %{#<struct Namespace2XMLTest::Model::Book id=\"1\", isbn=\"666\", author=#<struct Namespace2XMLTest::Model::Character name=\"Fowler\", born=nil, qualification=nil>, character=[#<struct Namespace2XMLTest::Model::Character name=\"Frau Java\", born=\"1991\", qualification=\"typed\">]>}
|
|
181
188
|
|
|
182
|
-
|
|
189
|
+
# :parse-res
|
|
183
190
|
lib.book.character[0].name #=> "Frau Java"
|
|
184
|
-
|
|
191
|
+
# :parse-res end
|
|
185
192
|
end
|
|
186
193
|
end
|