virtus 0.5.5 → 1.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (268) hide show
  1. data/.rspec +1 -1
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +6 -8
  5. data/Gemfile +8 -2
  6. data/Gemfile.devtools +24 -30
  7. data/Guardfile +17 -6
  8. data/README.md +215 -77
  9. data/TODO.md +6 -0
  10. data/config/flay.yml +2 -2
  11. data/config/flog.yml +1 -1
  12. data/config/mutant.yml +12 -1
  13. data/config/reek.yml +57 -66
  14. data/lib/virtus.rb +126 -42
  15. data/lib/virtus/attribute.rb +52 -240
  16. data/lib/virtus/attribute/accessor.rb +91 -0
  17. data/lib/virtus/attribute/boolean.rb +11 -8
  18. data/lib/virtus/attribute/builder.rb +120 -0
  19. data/lib/virtus/attribute/coercer.rb +51 -0
  20. data/lib/virtus/attribute/coercible.rb +14 -0
  21. data/lib/virtus/attribute/collection.rb +44 -90
  22. data/lib/virtus/attribute/default_value/from_callable.rb +1 -1
  23. data/lib/virtus/attribute/default_value/from_clonable.rb +1 -6
  24. data/lib/virtus/attribute/default_value/from_symbol.rb +3 -3
  25. data/lib/virtus/attribute/embedded_value.rb +37 -28
  26. data/lib/virtus/attribute/hash.rb +69 -71
  27. data/lib/virtus/attribute/lazy_default.rb +18 -0
  28. data/lib/virtus/attribute/strict.rb +16 -0
  29. data/lib/virtus/attribute_set.rb +81 -9
  30. data/lib/virtus/class_inclusions.rb +24 -17
  31. data/lib/virtus/class_methods.rb +13 -31
  32. data/lib/virtus/configuration.rb +77 -0
  33. data/lib/virtus/const_missing_extensions.rb +16 -0
  34. data/lib/virtus/extensions.rb +86 -61
  35. data/lib/virtus/instance_methods.rb +107 -128
  36. data/lib/virtus/model.rb +68 -0
  37. data/lib/virtus/module_builder.rb +184 -0
  38. data/lib/virtus/module_extensions.rb +27 -15
  39. data/lib/virtus/support/equalizer.rb +2 -3
  40. data/lib/virtus/support/type_lookup.rb +1 -1
  41. data/lib/virtus/value_object.rb +24 -31
  42. data/lib/virtus/version.rb +1 -1
  43. data/spec/integration/building_module_spec.rb +68 -0
  44. data/spec/integration/custom_attributes_spec.rb +8 -15
  45. data/spec/integration/custom_collection_attributes_spec.rb +101 -0
  46. data/spec/integration/default_values_spec.rb +9 -2
  47. data/spec/integration/defining_attributes_spec.rb +2 -2
  48. data/spec/integration/using_modules_spec.rb +5 -3
  49. data/spec/shared/freeze_method_behavior.rb +2 -2
  50. data/spec/shared/options_class_method.rb +1 -1
  51. data/spec/spec_helper.rb +25 -5
  52. data/spec/unit/virtus/attribute/boolean/value_coerced_predicate_spec.rb +25 -0
  53. data/spec/unit/virtus/attribute/class_methods/build_spec.rb +115 -22
  54. data/spec/unit/virtus/attribute/class_methods/coerce_spec.rb +32 -0
  55. data/spec/unit/virtus/attribute/coerce_spec.rb +38 -21
  56. data/spec/unit/virtus/attribute/coercible_predicate_spec.rb +20 -0
  57. data/spec/unit/virtus/attribute/collection/class_methods/build_spec.rb +84 -0
  58. data/spec/unit/virtus/attribute/collection/coerce_spec.rb +37 -24
  59. data/spec/unit/virtus/attribute/custom_collection_spec.rb +23 -0
  60. data/spec/unit/virtus/attribute/embedded_value/class_methods/build_spec.rb +37 -0
  61. data/spec/unit/virtus/attribute/embedded_value/coerce_spec.rb +46 -10
  62. data/spec/unit/virtus/attribute/get_spec.rb +15 -63
  63. data/spec/unit/virtus/attribute/hash/class_methods/build_spec.rb +80 -0
  64. data/spec/unit/virtus/attribute/hash/coerce_spec.rb +75 -13
  65. data/spec/unit/virtus/attribute/lazy_predicate_spec.rb +20 -0
  66. data/spec/unit/virtus/attribute/set_default_value_spec.rb +74 -0
  67. data/spec/unit/virtus/attribute/set_spec.rb +16 -36
  68. data/spec/unit/virtus/attribute/value_coerced_predicate_spec.rb +19 -0
  69. data/spec/unit/virtus/attribute_set/append_spec.rb +3 -5
  70. data/spec/unit/virtus/attribute_set/define_reader_method_spec.rb +1 -1
  71. data/spec/unit/virtus/attribute_set/define_writer_method_spec.rb +1 -1
  72. data/spec/unit/virtus/attribute_set/each_spec.rb +3 -3
  73. data/spec/unit/virtus/attribute_set/element_reference_spec.rb +1 -1
  74. data/spec/unit/virtus/attribute_set/element_set_spec.rb +4 -4
  75. data/spec/unit/virtus/attribute_set/merge_spec.rb +10 -16
  76. data/spec/unit/virtus/attribute_set/reset_spec.rb +6 -10
  77. data/spec/unit/virtus/attribute_spec.rb +222 -0
  78. data/spec/unit/virtus/attributes_reader_spec.rb +41 -0
  79. data/spec/unit/virtus/attributes_writer_spec.rb +51 -0
  80. data/spec/unit/virtus/class_methods/new_spec.rb +39 -0
  81. data/spec/unit/virtus/config_spec.rb +13 -0
  82. data/spec/unit/virtus/element_reader_spec.rb +21 -0
  83. data/spec/unit/virtus/element_writer_spec.rb +19 -0
  84. data/spec/unit/virtus/freeze_spec.rb +21 -0
  85. data/spec/unit/virtus/model_spec.rb +134 -0
  86. data/spec/unit/virtus/module_spec.rb +76 -0
  87. data/spec/unit/virtus/set_default_attributes_spec.rb +25 -0
  88. data/spec/unit/virtus/value_object_spec.rb +105 -0
  89. data/virtus.gemspec +4 -2
  90. metadata +82 -191
  91. data/.rvmrc +0 -1
  92. data/TODO +0 -1
  93. data/config/roodi.yml +0 -17
  94. data/lib/virtus/attribute/array.rb +0 -24
  95. data/lib/virtus/attribute/class.rb +0 -21
  96. data/lib/virtus/attribute/date.rb +0 -34
  97. data/lib/virtus/attribute/date_time.rb +0 -36
  98. data/lib/virtus/attribute/decimal.rb +0 -21
  99. data/lib/virtus/attribute/embedded_value/from_open_struct.rb +0 -19
  100. data/lib/virtus/attribute/embedded_value/from_struct.rb +0 -19
  101. data/lib/virtus/attribute/float.rb +0 -30
  102. data/lib/virtus/attribute/integer.rb +0 -27
  103. data/lib/virtus/attribute/numeric.rb +0 -11
  104. data/lib/virtus/attribute/object.rb +0 -11
  105. data/lib/virtus/attribute/set.rb +0 -24
  106. data/lib/virtus/attribute/string.rb +0 -24
  107. data/lib/virtus/attribute/symbol.rb +0 -21
  108. data/lib/virtus/attribute/time.rb +0 -36
  109. data/lib/virtus/coercion.rb +0 -32
  110. data/lib/virtus/coercion/array.rb +0 -23
  111. data/lib/virtus/coercion/date.rb +0 -26
  112. data/lib/virtus/coercion/date_time.rb +0 -26
  113. data/lib/virtus/coercion/decimal.rb +0 -40
  114. data/lib/virtus/coercion/false_class.rb +0 -24
  115. data/lib/virtus/coercion/float.rb +0 -39
  116. data/lib/virtus/coercion/hash.rb +0 -71
  117. data/lib/virtus/coercion/integer.rb +0 -83
  118. data/lib/virtus/coercion/numeric.rb +0 -66
  119. data/lib/virtus/coercion/object.rb +0 -125
  120. data/lib/virtus/coercion/string.rb +0 -218
  121. data/lib/virtus/coercion/symbol.rb +0 -24
  122. data/lib/virtus/coercion/time.rb +0 -40
  123. data/lib/virtus/coercion/time_coercions.rb +0 -86
  124. data/lib/virtus/coercion/true_class.rb +0 -24
  125. data/spec/unit/virtus/attribute/array/coerce_spec.rb +0 -13
  126. data/spec/unit/virtus/attribute/boolean/coerce_spec.rb +0 -85
  127. data/spec/unit/virtus/attribute/boolean/define_reader_method_spec.rb +0 -15
  128. data/spec/unit/virtus/attribute/boolean/value_coerced_spec.rb +0 -97
  129. data/spec/unit/virtus/attribute/boolean_spec.rb +0 -19
  130. data/spec/unit/virtus/attribute/class/coerce_spec.rb +0 -13
  131. data/spec/unit/virtus/attribute/class_methods/accessor_spec.rb +0 -12
  132. data/spec/unit/virtus/attribute/class_methods/coercion_method_spec.rb +0 -9
  133. data/spec/unit/virtus/attribute/class_methods/default_spec.rb +0 -9
  134. data/spec/unit/virtus/attribute/class_methods/determine_type_spec.rb +0 -117
  135. data/spec/unit/virtus/attribute/class_methods/merge_options_spec.rb +0 -11
  136. data/spec/unit/virtus/attribute/class_methods/primitive_spec.rb +0 -9
  137. data/spec/unit/virtus/attribute/class_methods/reader_spec.rb +0 -9
  138. data/spec/unit/virtus/attribute/class_methods/writer_spec.rb +0 -9
  139. data/spec/unit/virtus/attribute/coercion_method_spec.rb +0 -12
  140. data/spec/unit/virtus/attribute/collection/class_methods/merge_options_spec.rb +0 -40
  141. data/spec/unit/virtus/attribute/collection/coerce_and_append_member_spec.rb +0 -16
  142. data/spec/unit/virtus/attribute/collection/member_coercion/coerce_and_append_member_spec.rb +0 -18
  143. data/spec/unit/virtus/attribute/collection/member_type_spec.rb +0 -17
  144. data/spec/unit/virtus/attribute/collection/new_collection_spec.rb +0 -9
  145. data/spec/unit/virtus/attribute/date/coerce_spec.rb +0 -47
  146. data/spec/unit/virtus/attribute/date/value_coerced_spec.rb +0 -46
  147. data/spec/unit/virtus/attribute/date_time/coerce_spec.rb +0 -80
  148. data/spec/unit/virtus/attribute/decimal/coerce_spec.rb +0 -123
  149. data/spec/unit/virtus/attribute/default_spec.rb +0 -28
  150. data/spec/unit/virtus/attribute/default_value/call_spec.rb +0 -21
  151. data/spec/unit/virtus/attribute/default_value/class_methods/build_spec.rb +0 -23
  152. data/spec/unit/virtus/attribute/default_value/class_methods/new_spec.rb +0 -21
  153. data/spec/unit/virtus/attribute/default_value/from_callable/call_spec.rb +0 -19
  154. data/spec/unit/virtus/attribute/default_value/from_callable/class_methods/handle_spec.rb +0 -17
  155. data/spec/unit/virtus/attribute/default_value/from_clonable/call_spec.rb +0 -20
  156. data/spec/unit/virtus/attribute/default_value/from_clonable/class_methods/handle_spec.rb +0 -19
  157. data/spec/unit/virtus/attribute/default_value/from_symbol/call_spec.rb +0 -17
  158. data/spec/unit/virtus/attribute/default_value/from_symbol/class_methods/handle_spec.rb +0 -17
  159. data/spec/unit/virtus/attribute/default_value/value_spec.rb +0 -10
  160. data/spec/unit/virtus/attribute/define_accessor_methods_spec.rb +0 -26
  161. data/spec/unit/virtus/attribute/define_reader_method_spec.rb +0 -24
  162. data/spec/unit/virtus/attribute/define_writer_method_spec.rb +0 -24
  163. data/spec/unit/virtus/attribute/embedded_value/class_methods/determine_type_spec.rb +0 -23
  164. data/spec/unit/virtus/attribute/embedded_value/class_methods/merge_options_spec.rb +0 -17
  165. data/spec/unit/virtus/attribute/embedded_value/from_open_struct/coerce_spec.rb +0 -34
  166. data/spec/unit/virtus/attribute/embedded_value/from_struct/coerce_spec.rb +0 -34
  167. data/spec/unit/virtus/attribute/float/coerce_spec.rb +0 -123
  168. data/spec/unit/virtus/attribute/hash/class_methods/merge_options_spec.rb +0 -33
  169. data/spec/unit/virtus/attribute/hash/key_type_spec.rb +0 -10
  170. data/spec/unit/virtus/attribute/hash/value_type_spec.rb +0 -10
  171. data/spec/unit/virtus/attribute/inspect_spec.rb +0 -27
  172. data/spec/unit/virtus/attribute/integer/coerce_spec.rb +0 -117
  173. data/spec/unit/virtus/attribute/name_spec.rb +0 -12
  174. data/spec/unit/virtus/attribute/numeric/class_methods/descendants_spec.rb +0 -15
  175. data/spec/unit/virtus/attribute/numeric/class_methods/max_spec.rb +0 -9
  176. data/spec/unit/virtus/attribute/numeric/class_methods/min_spec.rb +0 -9
  177. data/spec/unit/virtus/attribute/options_spec.rb +0 -14
  178. data/spec/unit/virtus/attribute/public_reader_spec.rb +0 -24
  179. data/spec/unit/virtus/attribute/public_writer_spec.rb +0 -24
  180. data/spec/unit/virtus/attribute/set/coerce_spec.rb +0 -13
  181. data/spec/unit/virtus/attribute/string/coerce_spec.rb +0 -11
  182. data/spec/unit/virtus/attribute/symbol/coerce_spec.rb +0 -13
  183. data/spec/unit/virtus/attribute/time/coerce_spec.rb +0 -67
  184. data/spec/unit/virtus/attribute/value_coerced_spec.rb +0 -19
  185. data/spec/unit/virtus/class_methods/attribute_set_spec.rb +0 -9
  186. data/spec/unit/virtus/class_methods/attribute_spec.rb +0 -30
  187. data/spec/unit/virtus/class_methods/attributes_spec.rb +0 -22
  188. data/spec/unit/virtus/class_methods/const_missing_spec.rb +0 -27
  189. data/spec/unit/virtus/class_methods/inherited_spec.rb +0 -21
  190. data/spec/unit/virtus/coercion/array/class_methods/to_set_spec.rb +0 -12
  191. data/spec/unit/virtus/coercion/class_methods/element_reference_spec.rb +0 -17
  192. data/spec/unit/virtus/coercion/class_methods/primitive_spec.rb +0 -13
  193. data/spec/unit/virtus/coercion/date/class_methods/to_date_spec.rb +0 -10
  194. data/spec/unit/virtus/coercion/date/class_methods/to_datetime_spec.rb +0 -30
  195. data/spec/unit/virtus/coercion/date/class_methods/to_string_spec.rb +0 -12
  196. data/spec/unit/virtus/coercion/date/class_methods/to_time_spec.rb +0 -12
  197. data/spec/unit/virtus/coercion/date_time/class_methods/to_date_spec.rb +0 -30
  198. data/spec/unit/virtus/coercion/date_time/class_methods/to_datetime_spec.rb +0 -10
  199. data/spec/unit/virtus/coercion/date_time/class_methods/to_string_spec.rb +0 -12
  200. data/spec/unit/virtus/coercion/date_time/class_methods/to_time_spec.rb +0 -30
  201. data/spec/unit/virtus/coercion/decimal/class_methods/to_decimal_spec.rb +0 -9
  202. data/spec/unit/virtus/coercion/decimal/class_methods/to_float_spec.rb +0 -12
  203. data/spec/unit/virtus/coercion/decimal/class_methods/to_integer_spec.rb +0 -12
  204. data/spec/unit/virtus/coercion/decimal/class_methods/to_string_spec.rb +0 -12
  205. data/spec/unit/virtus/coercion/false_class/class_methods/to_string_spec.rb +0 -12
  206. data/spec/unit/virtus/coercion/float/class_methods/to_decimal_spec.rb +0 -12
  207. data/spec/unit/virtus/coercion/float/class_methods/to_float_spec.rb +0 -9
  208. data/spec/unit/virtus/coercion/float/class_methods/to_integer_spec.rb +0 -12
  209. data/spec/unit/virtus/coercion/float/class_methods/to_string_spec.rb +0 -12
  210. data/spec/unit/virtus/coercion/hash/class_methods/to_date_spec.rb +0 -38
  211. data/spec/unit/virtus/coercion/hash/class_methods/to_datetime_spec.rb +0 -38
  212. data/spec/unit/virtus/coercion/hash/class_methods/to_time_spec.rb +0 -38
  213. data/spec/unit/virtus/coercion/integer/class_methods/to_boolean_spec.rb +0 -25
  214. data/spec/unit/virtus/coercion/integer/class_methods/to_decimal_spec.rb +0 -12
  215. data/spec/unit/virtus/coercion/integer/class_methods/to_float_spec.rb +0 -12
  216. data/spec/unit/virtus/coercion/integer/class_methods/to_integer_spec.rb +0 -9
  217. data/spec/unit/virtus/coercion/integer/class_methods/to_string_spec.rb +0 -12
  218. data/spec/unit/virtus/coercion/numeric/class_methods/to_decimal_spec.rb +0 -10
  219. data/spec/unit/virtus/coercion/numeric/class_methods/to_float_spec.rb +0 -10
  220. data/spec/unit/virtus/coercion/numeric/class_methods/to_integer_spec.rb +0 -10
  221. data/spec/unit/virtus/coercion/numeric/class_methods/to_string_spec.rb +0 -12
  222. data/spec/unit/virtus/coercion/object/class_methods/method_missing_spec.rb +0 -33
  223. data/spec/unit/virtus/coercion/object/class_methods/to_array_spec.rb +0 -51
  224. data/spec/unit/virtus/coercion/object/class_methods/to_hash_spec.rb +0 -22
  225. data/spec/unit/virtus/coercion/object/class_methods/to_integer_spec.rb +0 -22
  226. data/spec/unit/virtus/coercion/object/class_methods/to_string_spec.rb +0 -22
  227. data/spec/unit/virtus/coercion/string/class_methods/to_boolean_spec.rb +0 -29
  228. data/spec/unit/virtus/coercion/string/class_methods/to_constant_spec.rb +0 -49
  229. data/spec/unit/virtus/coercion/string/class_methods/to_date_spec.rb +0 -23
  230. data/spec/unit/virtus/coercion/string/class_methods/to_datetime_spec.rb +0 -50
  231. data/spec/unit/virtus/coercion/string/class_methods/to_decimal_spec.rb +0 -47
  232. data/spec/unit/virtus/coercion/string/class_methods/to_float_spec.rb +0 -57
  233. data/spec/unit/virtus/coercion/string/class_methods/to_integer_spec.rb +0 -68
  234. data/spec/unit/virtus/coercion/string/class_methods/to_symbol_spec.rb +0 -9
  235. data/spec/unit/virtus/coercion/string/class_methods/to_time_spec.rb +0 -50
  236. data/spec/unit/virtus/coercion/symbol/class_methods/to_string_spec.rb +0 -12
  237. data/spec/unit/virtus/coercion/time/class_methods/to_integer_spec.rb +0 -10
  238. data/spec/unit/virtus/coercion/time/class_methods/to_time_spec.rb +0 -10
  239. data/spec/unit/virtus/coercion/time_coercions/to_date_spec.rb +0 -33
  240. data/spec/unit/virtus/coercion/time_coercions/to_datetime_spec.rb +0 -33
  241. data/spec/unit/virtus/coercion/time_coercions/to_string_spec.rb +0 -18
  242. data/spec/unit/virtus/coercion/time_coercions/to_time_spec.rb +0 -33
  243. data/spec/unit/virtus/coercion/true_class/class_methods/to_string_spec.rb +0 -12
  244. data/spec/unit/virtus/equalizer/append_spec.rb +0 -82
  245. data/spec/unit/virtus/equalizer/class_method/new_spec.rb +0 -111
  246. data/spec/unit/virtus/equalizer/methods/eql_spec.rb +0 -47
  247. data/spec/unit/virtus/equalizer/methods/equal_value_spec.rb +0 -57
  248. data/spec/unit/virtus/extensions/allowed_writer_methods_spec.rb +0 -25
  249. data/spec/unit/virtus/extensions/attribute_spec.rb +0 -26
  250. data/spec/unit/virtus/instance_methods/attributes_spec.rb +0 -140
  251. data/spec/unit/virtus/instance_methods/element_reference_spec.rb +0 -24
  252. data/spec/unit/virtus/instance_methods/element_set_spec.rb +0 -28
  253. data/spec/unit/virtus/instance_methods/freeze_spec.rb +0 -64
  254. data/spec/unit/virtus/instance_methods/initialize_spec.rb +0 -48
  255. data/spec/unit/virtus/instance_methods/to_hash_spec.rb +0 -23
  256. data/spec/unit/virtus/module_extensions/attribute_spec.rb +0 -31
  257. data/spec/unit/virtus/options/accept_options_spec.rb +0 -37
  258. data/spec/unit/virtus/options/accepted_options_spec.rb +0 -21
  259. data/spec/unit/virtus/options/options_spec.rb +0 -34
  260. data/spec/unit/virtus/type_lookup/class_methods/extended_spec.rb +0 -9
  261. data/spec/unit/virtus/type_lookup/determine_type_spec.rb +0 -81
  262. data/spec/unit/virtus/type_lookup/primitive_spec.rb +0 -9
  263. data/spec/unit/virtus/value_object/class_methods/allowed_writer_methods_spec.rb +0 -15
  264. data/spec/unit/virtus/value_object/class_methods/attribute_spec.rb +0 -50
  265. data/spec/unit/virtus/value_object/class_methods/equalizer_spec.rb +0 -24
  266. data/spec/unit/virtus/value_object/initialize_spec.rb +0 -19
  267. data/spec/unit/virtus/value_object/instance_methods/clone_spec.rb +0 -21
  268. data/spec/unit/virtus/value_object/instance_methods/with_spec.rb +0 -31
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Virtus, '.config' do
4
+ it 'provides global configuration' do
5
+ Virtus.config { |config| config.coerce = false }
6
+
7
+ expect(Virtus.coerce).to be(false)
8
+
9
+ Virtus.config { |config| config.coerce = true }
10
+
11
+ expect(Virtus.coerce).to be(true)
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Virtus, '#[]' do
4
+ subject { object[:test] }
5
+
6
+ let(:model) {
7
+ Class.new {
8
+ include Virtus
9
+
10
+ attribute :test, String
11
+ }
12
+ }
13
+
14
+ let(:object) { model.new }
15
+
16
+ before do
17
+ object.test = 'foo'
18
+ end
19
+
20
+ it { should eq('foo') }
21
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Virtus, '#[]=' do
4
+ subject { object[:test] = 'foo' }
5
+
6
+ let(:model) {
7
+ Class.new {
8
+ include Virtus
9
+
10
+ attribute :test, String
11
+ }
12
+ }
13
+
14
+ let(:object) { model.new }
15
+
16
+ specify do
17
+ expect { subject }.to change { object.test }.from(nil).to('foo')
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Virtus, '#freeze' do
4
+ subject { object.freeze }
5
+
6
+ let(:model) {
7
+ Class.new {
8
+ include Virtus
9
+
10
+ attribute :name, String, :default => 'foo', :lazy => true
11
+ attribute :age, Integer, :default => 30
12
+ }
13
+ }
14
+
15
+ let(:object) { model.new }
16
+
17
+ it { should be_frozen }
18
+
19
+ its(:name) { should eql('foo') }
20
+ its(:age) { should be(30) }
21
+ end
@@ -0,0 +1,134 @@
1
+ require 'spec_helper'
2
+
3
+ describe Virtus, '.model' do
4
+ share_examples_for 'a model with constructor' do
5
+ it 'accepts attribute hash' do
6
+ instance = subject.new(:name => 'Jane')
7
+ expect(instance.name).to eql('Jane')
8
+ end
9
+ end
10
+
11
+ share_examples_for 'a model with mass-assignment' do
12
+ let(:attributes) do
13
+ { :name => 'Jane' }
14
+ end
15
+
16
+ before do
17
+ instance.attributes = attributes
18
+ end
19
+
20
+ it 'accepts attribute hash' do
21
+ expect(instance.attributes).to eql(attributes)
22
+ end
23
+ end
24
+
25
+ share_examples_for 'a model with strict mode turned off' do
26
+ it 'has attributes with strict set to false' do
27
+ expect(subject.send(:attribute_set)[:name]).to_not be_strict
28
+ end
29
+ end
30
+
31
+ context 'with default configuration' do
32
+ let(:mod) { Virtus.model }
33
+
34
+ context 'with a class' do
35
+ subject { Class.new }
36
+
37
+ before do
38
+ subject.send(:include, mod)
39
+ subject.attribute :name, String
40
+ end
41
+
42
+ it_behaves_like 'a model with constructor'
43
+
44
+ it_behaves_like 'a model with strict mode turned off'
45
+
46
+ it_behaves_like 'a model with mass-assignment' do
47
+ let(:instance) { subject.new }
48
+ end
49
+ end
50
+
51
+ context 'with an instance' do
52
+ subject { Class.new.new }
53
+
54
+ before do
55
+ subject.extend(mod)
56
+ subject.attribute :name, String
57
+ end
58
+
59
+ it_behaves_like 'a model with strict mode turned off'
60
+
61
+ it_behaves_like 'a model with mass-assignment' do
62
+ let(:instance) { subject }
63
+ end
64
+ end
65
+ end
66
+
67
+ context 'when constructor is disabled' do
68
+ subject { Class.new.send(:include, mod) }
69
+
70
+ let(:mod) { Virtus.model(:constructor => false) }
71
+
72
+ it 'does not accept attribute hash in the constructor' do
73
+ expect { subject.new({}) }.to raise_error(ArgumentError)
74
+ end
75
+ end
76
+
77
+ context 'when strict mode is enabled' do
78
+ let(:mod) { Virtus.model(:strict => true) }
79
+ let(:model) { Class.new }
80
+
81
+ context 'with a class' do
82
+ subject { model.new }
83
+
84
+ before do
85
+ model.send(:include, mod)
86
+ model.attribute :name, String
87
+ end
88
+
89
+ it 'has attributes with strict set to true' do
90
+ expect(model.attribute_set[:name]).to be_strict
91
+ end
92
+ end
93
+
94
+ context 'with an instance' do
95
+ subject { model.new }
96
+
97
+ before do
98
+ subject.extend(mod)
99
+ subject.attribute :name, String
100
+ end
101
+
102
+ it 'has attributes with strict set to true' do
103
+ expect(subject.send(:attribute_set)[:name]).to be_strict
104
+ end
105
+ end
106
+ end
107
+
108
+ context 'when mass-assignment is disabled' do
109
+ let(:mod) { Virtus.model(:mass_assignment => false) }
110
+ let(:model) { Class.new }
111
+
112
+ context 'with a class' do
113
+ subject { model.new }
114
+
115
+ before do
116
+ model.send(:include, mod)
117
+ end
118
+
119
+ it { should_not respond_to(:attributes) }
120
+ it { should_not respond_to(:attributes=) }
121
+ end
122
+
123
+ context 'with an instance' do
124
+ subject { model.new }
125
+
126
+ before do
127
+ subject.extend(mod)
128
+ end
129
+
130
+ it { should_not respond_to(:attributes) }
131
+ it { should_not respond_to(:attributes=) }
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe Virtus, '.module' do
4
+ share_examples_for 'a valid virtus object' do
5
+ it 'reads and writes attribute' do
6
+ instance.name = 'Jane'
7
+ expect(instance.name).to eql('Jane')
8
+ end
9
+ end
10
+
11
+ share_examples_for 'an object extended with virtus module' do
12
+ context 'with default configuration' do
13
+ subject { Virtus.module }
14
+
15
+ it_behaves_like 'a valid virtus object' do
16
+ let(:instance) { model.new }
17
+ end
18
+ end
19
+
20
+ context 'with constructor turned off' do
21
+ subject { Virtus.module(:constructor => false) }
22
+
23
+ it_behaves_like 'a valid virtus object' do
24
+ let(:instance) { model.new }
25
+ end
26
+
27
+ it 'skips including constructor' do
28
+ expect { model.new({}) }.to raise_error(ArgumentError)
29
+ end
30
+ end
31
+
32
+ context 'with mass assignment is turned off' do
33
+ subject { Virtus.module(:mass_assignment => false) }
34
+
35
+ it_behaves_like 'a valid virtus object'
36
+
37
+ it 'skips including mass assignment' do
38
+ expect(instance).not_to respond_to(:attributes)
39
+ expect(instance).not_to respond_to(:attributes=)
40
+ end
41
+ end
42
+ end
43
+
44
+ let(:mod) { Module.new }
45
+ let(:model) { Class.new }
46
+ let(:instance) { model.new }
47
+
48
+ before do
49
+ mod.send(:include, subject)
50
+ mod.attribute :name, String
51
+ end
52
+
53
+ context 'with a class' do
54
+ before do
55
+ model.send(:include, mod)
56
+ end
57
+
58
+ it 'provides attributes for the model' do
59
+ expect(model.attribute_set[:name]).to be_kind_of(Virtus::Attribute)
60
+ end
61
+
62
+ it_behaves_like 'an object extended with virtus module'
63
+ end
64
+
65
+ context 'with a model instance' do
66
+ before do
67
+ instance.extend(mod)
68
+ end
69
+
70
+ it 'provides attributes for the instance' do
71
+ expect(instance.send(:attribute_set)[:name]).to be_kind_of(Virtus::Attribute)
72
+ end
73
+
74
+ it_behaves_like 'an object extended with virtus module'
75
+ end
76
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Virtus, '#set_default_attributes!' do
4
+ subject { object.set_default_attributes! }
5
+
6
+ let(:model) {
7
+ Class.new {
8
+ include Virtus
9
+
10
+ attribute :name, String, :default => 'foo', :lazy => true
11
+ attribute :age, Integer, :default => 30
12
+ }
13
+ }
14
+
15
+ let(:object) { model.new }
16
+
17
+ before do
18
+ object.set_default_attributes!
19
+ end
20
+
21
+ it { should be(object) }
22
+
23
+ its(:name) { should eql('foo') }
24
+ its(:age) { should be(30) }
25
+ end
@@ -0,0 +1,105 @@
1
+ require 'spec_helper'
2
+
3
+ describe Virtus::ValueObject do
4
+ share_examples_for 'a valid value object' do
5
+ subject { model.new(attributes) }
6
+
7
+ let(:attributes) { Hash[:id => 1, :name => 'Jane Doe'] }
8
+
9
+ its(:id) { should be(1) }
10
+ its(:name) { should eql('Jane Doe') }
11
+
12
+ it 'sets private writers' do
13
+ expect(subject.class.attribute_set[:id]).to_not be_public_writer
14
+ expect(subject.class.attribute_set[:name]).to_not be_public_writer
15
+ end
16
+
17
+ it 'disallows mass-assignment' do
18
+ expect(subject.private_methods).to include(:attributes=)
19
+ end
20
+
21
+ it 'disallows cloning' do
22
+ expect(subject.clone).to be(subject)
23
+ end
24
+
25
+ it 'defines #eql?' do
26
+ expect(subject).to eql(subject.class.new(attributes))
27
+ end
28
+
29
+ it 'defines #==' do
30
+ expect(subject == subject.class.new(attributes)).to be(true)
31
+ end
32
+
33
+ it 'defines #hash' do
34
+ expect(subject.hash).to eql(subject.class.new(attributes).hash)
35
+ end
36
+
37
+ it 'defines #inspect' do
38
+ expect(subject.inspect).to eql(
39
+ %(#<Model #{attributes.map { |k, v| "#{k}=#{v.inspect}" }.join(' ')}>)
40
+ )
41
+ end
42
+ end
43
+
44
+ context 'using new values {} block' do
45
+ let(:model) {
46
+ Class.new {
47
+ include Virtus.value_object(:coerce => false)
48
+
49
+ def self.name
50
+ 'Model'
51
+ end
52
+
53
+ values do
54
+ attribute :id, Integer
55
+ attribute :name, String
56
+ end
57
+ }
58
+ }
59
+
60
+ it_behaves_like 'a valid value object'
61
+
62
+ context 'with a model subclass' do
63
+ let(:subclass) {
64
+ Class.new(model) {
65
+ values do
66
+ attribute :email, String
67
+ end
68
+ }
69
+ }
70
+
71
+ it_behaves_like 'a valid value object' do
72
+ subject { subclass.new(attributes) }
73
+
74
+ let(:attributes) { Hash[:id => 1, :name => 'Jane Doe', :email => 'jane@doe.com'] }
75
+
76
+ its(:email) { should eql('jane@doe.com') }
77
+
78
+ it 'sets private writers for additional values' do
79
+ expect(subclass.attribute_set[:email]).to_not be_public_writer
80
+ end
81
+
82
+ it 'defines valid #== for a subclass' do
83
+ expect(subject == subject.class.new(attributes.merge(:id => 2))).to be(false)
84
+ end
85
+ end
86
+ end
87
+ end
88
+
89
+ context 'using deprecated inclusion' do
90
+ let(:model) {
91
+ Class.new {
92
+ include Virtus::ValueObject
93
+
94
+ def self.name
95
+ 'Model'
96
+ end
97
+
98
+ attribute :id, Integer
99
+ attribute :name, String
100
+ }
101
+ }
102
+
103
+ it_behaves_like 'a valid value object'
104
+ end
105
+ end
@@ -14,8 +14,10 @@ Gem::Specification.new do |gem|
14
14
  gem.require_paths = [ "lib" ]
15
15
  gem.files = `git ls-files`.split("\n")
16
16
  gem.test_files = `git ls-files -- {spec}/*`.split("\n")
17
- gem.extra_rdoc_files = %w[LICENSE README.md TODO]
17
+ gem.extra_rdoc_files = %w[LICENSE README.md TODO.md]
18
18
 
19
- gem.add_dependency('backports', '~> 3.3')
20
19
  gem.add_dependency('descendants_tracker', '~> 0.0.1')
20
+ gem.add_dependency('equalizer', '~> 0.0.7')
21
+ gem.add_dependency('coercible', '~> 0.2')
22
+ gem.add_dependency('axiom-types', '~> 0.0.3')
21
23
  end
metadata CHANGED
@@ -1,24 +1,24 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virtus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
5
- prerelease:
4
+ version: 1.0.0.beta3
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Piotr Solnica
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-30 00:00:00.000000000 Z
12
+ date: 2013-09-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: backports
15
+ name: descendants_tracker
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '3.3'
21
+ version: 0.0.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,15 +26,15 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '3.3'
29
+ version: 0.0.1
30
30
  - !ruby/object:Gem::Dependency
31
- name: descendants_tracker
31
+ name: equalizer
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 0.0.1
37
+ version: 0.0.7
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,39 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 0.0.1
45
+ version: 0.0.7
46
+ - !ruby/object:Gem::Dependency
47
+ name: coercible
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '0.2'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.2'
62
+ - !ruby/object:Gem::Dependency
63
+ name: axiom-types
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.0.3
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.0.3
46
78
  description: Attributes on Steroids for Plain Old Ruby Objects
47
79
  email:
48
80
  - piotr.solnica@gmail.com
@@ -51,12 +83,13 @@ extensions: []
51
83
  extra_rdoc_files:
52
84
  - LICENSE
53
85
  - README.md
54
- - TODO
86
+ - TODO.md
55
87
  files:
56
88
  - .gitignore
57
89
  - .pelusa.yml
58
90
  - .rspec
59
- - .rvmrc
91
+ - .ruby-gemset
92
+ - .ruby-version
60
93
  - .travis.yml
61
94
  - .yardopts
62
95
  - Changelog.md
@@ -66,67 +99,47 @@ files:
66
99
  - LICENSE
67
100
  - README.md
68
101
  - Rakefile
69
- - TODO
102
+ - TODO.md
70
103
  - config/flay.yml
71
104
  - config/flog.yml
72
105
  - config/mutant.yml
73
106
  - config/reek.yml
74
- - config/roodi.yml
75
107
  - config/yardstick.yml
76
108
  - lib/virtus.rb
77
109
  - lib/virtus/attribute.rb
78
- - lib/virtus/attribute/array.rb
110
+ - lib/virtus/attribute/accessor.rb
79
111
  - lib/virtus/attribute/boolean.rb
80
- - lib/virtus/attribute/class.rb
112
+ - lib/virtus/attribute/builder.rb
113
+ - lib/virtus/attribute/coercer.rb
114
+ - lib/virtus/attribute/coercible.rb
81
115
  - lib/virtus/attribute/collection.rb
82
- - lib/virtus/attribute/date.rb
83
- - lib/virtus/attribute/date_time.rb
84
- - lib/virtus/attribute/decimal.rb
85
116
  - lib/virtus/attribute/default_value.rb
86
117
  - lib/virtus/attribute/default_value/from_callable.rb
87
118
  - lib/virtus/attribute/default_value/from_clonable.rb
88
119
  - lib/virtus/attribute/default_value/from_symbol.rb
89
120
  - lib/virtus/attribute/embedded_value.rb
90
- - lib/virtus/attribute/embedded_value/from_open_struct.rb
91
- - lib/virtus/attribute/embedded_value/from_struct.rb
92
- - lib/virtus/attribute/float.rb
93
121
  - lib/virtus/attribute/hash.rb
94
- - lib/virtus/attribute/integer.rb
95
- - lib/virtus/attribute/numeric.rb
96
- - lib/virtus/attribute/object.rb
97
- - lib/virtus/attribute/set.rb
98
- - lib/virtus/attribute/string.rb
99
- - lib/virtus/attribute/symbol.rb
100
- - lib/virtus/attribute/time.rb
122
+ - lib/virtus/attribute/lazy_default.rb
123
+ - lib/virtus/attribute/strict.rb
101
124
  - lib/virtus/attribute_set.rb
102
125
  - lib/virtus/class_inclusions.rb
103
126
  - lib/virtus/class_methods.rb
104
- - lib/virtus/coercion.rb
105
- - lib/virtus/coercion/array.rb
106
- - lib/virtus/coercion/date.rb
107
- - lib/virtus/coercion/date_time.rb
108
- - lib/virtus/coercion/decimal.rb
109
- - lib/virtus/coercion/false_class.rb
110
- - lib/virtus/coercion/float.rb
111
- - lib/virtus/coercion/hash.rb
112
- - lib/virtus/coercion/integer.rb
113
- - lib/virtus/coercion/numeric.rb
114
- - lib/virtus/coercion/object.rb
115
- - lib/virtus/coercion/string.rb
116
- - lib/virtus/coercion/symbol.rb
117
- - lib/virtus/coercion/time.rb
118
- - lib/virtus/coercion/time_coercions.rb
119
- - lib/virtus/coercion/true_class.rb
127
+ - lib/virtus/configuration.rb
128
+ - lib/virtus/const_missing_extensions.rb
120
129
  - lib/virtus/extensions.rb
121
130
  - lib/virtus/instance_methods.rb
131
+ - lib/virtus/model.rb
132
+ - lib/virtus/module_builder.rb
122
133
  - lib/virtus/module_extensions.rb
123
134
  - lib/virtus/support/equalizer.rb
124
135
  - lib/virtus/support/options.rb
125
136
  - lib/virtus/support/type_lookup.rb
126
137
  - lib/virtus/value_object.rb
127
138
  - lib/virtus/version.rb
139
+ - spec/integration/building_module_spec.rb
128
140
  - spec/integration/collection_member_coercion_spec.rb
129
141
  - spec/integration/custom_attributes_spec.rb
142
+ - spec/integration/custom_collection_attributes_spec.rb
130
143
  - spec/integration/default_values_spec.rb
131
144
  - spec/integration/defining_attributes_spec.rb
132
145
  - spec/integration/embedded_value_spec.rb
@@ -144,73 +157,23 @@ files:
144
157
  - spec/shared/idempotent_method_behaviour.rb
145
158
  - spec/shared/options_class_method.rb
146
159
  - spec/spec_helper.rb
147
- - spec/unit/virtus/attribute/array/coerce_spec.rb
148
- - spec/unit/virtus/attribute/boolean/coerce_spec.rb
149
- - spec/unit/virtus/attribute/boolean/define_reader_method_spec.rb
150
- - spec/unit/virtus/attribute/boolean/value_coerced_spec.rb
151
- - spec/unit/virtus/attribute/boolean_spec.rb
152
- - spec/unit/virtus/attribute/class/coerce_spec.rb
153
- - spec/unit/virtus/attribute/class_methods/accessor_spec.rb
160
+ - spec/unit/virtus/attribute/boolean/value_coerced_predicate_spec.rb
154
161
  - spec/unit/virtus/attribute/class_methods/build_spec.rb
155
- - spec/unit/virtus/attribute/class_methods/coercion_method_spec.rb
156
- - spec/unit/virtus/attribute/class_methods/default_spec.rb
157
- - spec/unit/virtus/attribute/class_methods/determine_type_spec.rb
158
- - spec/unit/virtus/attribute/class_methods/merge_options_spec.rb
159
- - spec/unit/virtus/attribute/class_methods/primitive_spec.rb
160
- - spec/unit/virtus/attribute/class_methods/reader_spec.rb
161
- - spec/unit/virtus/attribute/class_methods/writer_spec.rb
162
+ - spec/unit/virtus/attribute/class_methods/coerce_spec.rb
162
163
  - spec/unit/virtus/attribute/coerce_spec.rb
163
- - spec/unit/virtus/attribute/coercion_method_spec.rb
164
- - spec/unit/virtus/attribute/collection/class_methods/merge_options_spec.rb
165
- - spec/unit/virtus/attribute/collection/coerce_and_append_member_spec.rb
164
+ - spec/unit/virtus/attribute/coercible_predicate_spec.rb
165
+ - spec/unit/virtus/attribute/collection/class_methods/build_spec.rb
166
166
  - spec/unit/virtus/attribute/collection/coerce_spec.rb
167
- - spec/unit/virtus/attribute/collection/member_coercion/coerce_and_append_member_spec.rb
168
- - spec/unit/virtus/attribute/collection/member_type_spec.rb
169
- - spec/unit/virtus/attribute/collection/new_collection_spec.rb
170
- - spec/unit/virtus/attribute/date/coerce_spec.rb
171
- - spec/unit/virtus/attribute/date/value_coerced_spec.rb
172
- - spec/unit/virtus/attribute/date_time/coerce_spec.rb
173
- - spec/unit/virtus/attribute/decimal/coerce_spec.rb
174
- - spec/unit/virtus/attribute/default_spec.rb
175
- - spec/unit/virtus/attribute/default_value/call_spec.rb
176
- - spec/unit/virtus/attribute/default_value/class_methods/build_spec.rb
177
- - spec/unit/virtus/attribute/default_value/class_methods/new_spec.rb
178
- - spec/unit/virtus/attribute/default_value/from_callable/call_spec.rb
179
- - spec/unit/virtus/attribute/default_value/from_callable/class_methods/handle_spec.rb
180
- - spec/unit/virtus/attribute/default_value/from_clonable/call_spec.rb
181
- - spec/unit/virtus/attribute/default_value/from_clonable/class_methods/handle_spec.rb
182
- - spec/unit/virtus/attribute/default_value/from_symbol/call_spec.rb
183
- - spec/unit/virtus/attribute/default_value/from_symbol/class_methods/handle_spec.rb
184
- - spec/unit/virtus/attribute/default_value/value_spec.rb
185
- - spec/unit/virtus/attribute/define_accessor_methods_spec.rb
186
- - spec/unit/virtus/attribute/define_reader_method_spec.rb
187
- - spec/unit/virtus/attribute/define_writer_method_spec.rb
188
- - spec/unit/virtus/attribute/embedded_value/class_methods/determine_type_spec.rb
189
- - spec/unit/virtus/attribute/embedded_value/class_methods/merge_options_spec.rb
167
+ - spec/unit/virtus/attribute/custom_collection_spec.rb
168
+ - spec/unit/virtus/attribute/embedded_value/class_methods/build_spec.rb
190
169
  - spec/unit/virtus/attribute/embedded_value/coerce_spec.rb
191
- - spec/unit/virtus/attribute/embedded_value/from_open_struct/coerce_spec.rb
192
- - spec/unit/virtus/attribute/embedded_value/from_struct/coerce_spec.rb
193
- - spec/unit/virtus/attribute/float/coerce_spec.rb
194
170
  - spec/unit/virtus/attribute/get_spec.rb
195
- - spec/unit/virtus/attribute/hash/class_methods/merge_options_spec.rb
171
+ - spec/unit/virtus/attribute/hash/class_methods/build_spec.rb
196
172
  - spec/unit/virtus/attribute/hash/coerce_spec.rb
197
- - spec/unit/virtus/attribute/hash/key_type_spec.rb
198
- - spec/unit/virtus/attribute/hash/value_type_spec.rb
199
- - spec/unit/virtus/attribute/inspect_spec.rb
200
- - spec/unit/virtus/attribute/integer/coerce_spec.rb
201
- - spec/unit/virtus/attribute/name_spec.rb
202
- - spec/unit/virtus/attribute/numeric/class_methods/descendants_spec.rb
203
- - spec/unit/virtus/attribute/numeric/class_methods/max_spec.rb
204
- - spec/unit/virtus/attribute/numeric/class_methods/min_spec.rb
205
- - spec/unit/virtus/attribute/options_spec.rb
206
- - spec/unit/virtus/attribute/public_reader_spec.rb
207
- - spec/unit/virtus/attribute/public_writer_spec.rb
208
- - spec/unit/virtus/attribute/set/coerce_spec.rb
173
+ - spec/unit/virtus/attribute/lazy_predicate_spec.rb
174
+ - spec/unit/virtus/attribute/set_default_value_spec.rb
209
175
  - spec/unit/virtus/attribute/set_spec.rb
210
- - spec/unit/virtus/attribute/string/coerce_spec.rb
211
- - spec/unit/virtus/attribute/symbol/coerce_spec.rb
212
- - spec/unit/virtus/attribute/time/coerce_spec.rb
213
- - spec/unit/virtus/attribute/value_coerced_spec.rb
176
+ - spec/unit/virtus/attribute/value_coerced_predicate_spec.rb
214
177
  - spec/unit/virtus/attribute_set/append_spec.rb
215
178
  - spec/unit/virtus/attribute_set/define_reader_method_spec.rb
216
179
  - spec/unit/virtus/attribute_set/define_writer_method_spec.rb
@@ -220,90 +183,18 @@ files:
220
183
  - spec/unit/virtus/attribute_set/inspect_spec.rb
221
184
  - spec/unit/virtus/attribute_set/merge_spec.rb
222
185
  - spec/unit/virtus/attribute_set/reset_spec.rb
223
- - spec/unit/virtus/class_methods/attribute_set_spec.rb
224
- - spec/unit/virtus/class_methods/attribute_spec.rb
225
- - spec/unit/virtus/class_methods/attributes_spec.rb
226
- - spec/unit/virtus/class_methods/const_missing_spec.rb
227
- - spec/unit/virtus/class_methods/inherited_spec.rb
228
- - spec/unit/virtus/coercion/array/class_methods/to_set_spec.rb
229
- - spec/unit/virtus/coercion/class_methods/element_reference_spec.rb
230
- - spec/unit/virtus/coercion/class_methods/primitive_spec.rb
231
- - spec/unit/virtus/coercion/date/class_methods/to_date_spec.rb
232
- - spec/unit/virtus/coercion/date/class_methods/to_datetime_spec.rb
233
- - spec/unit/virtus/coercion/date/class_methods/to_string_spec.rb
234
- - spec/unit/virtus/coercion/date/class_methods/to_time_spec.rb
235
- - spec/unit/virtus/coercion/date_time/class_methods/to_date_spec.rb
236
- - spec/unit/virtus/coercion/date_time/class_methods/to_datetime_spec.rb
237
- - spec/unit/virtus/coercion/date_time/class_methods/to_string_spec.rb
238
- - spec/unit/virtus/coercion/date_time/class_methods/to_time_spec.rb
239
- - spec/unit/virtus/coercion/decimal/class_methods/to_decimal_spec.rb
240
- - spec/unit/virtus/coercion/decimal/class_methods/to_float_spec.rb
241
- - spec/unit/virtus/coercion/decimal/class_methods/to_integer_spec.rb
242
- - spec/unit/virtus/coercion/decimal/class_methods/to_string_spec.rb
243
- - spec/unit/virtus/coercion/false_class/class_methods/to_string_spec.rb
244
- - spec/unit/virtus/coercion/float/class_methods/to_decimal_spec.rb
245
- - spec/unit/virtus/coercion/float/class_methods/to_float_spec.rb
246
- - spec/unit/virtus/coercion/float/class_methods/to_integer_spec.rb
247
- - spec/unit/virtus/coercion/float/class_methods/to_string_spec.rb
248
- - spec/unit/virtus/coercion/hash/class_methods/to_date_spec.rb
249
- - spec/unit/virtus/coercion/hash/class_methods/to_datetime_spec.rb
250
- - spec/unit/virtus/coercion/hash/class_methods/to_time_spec.rb
251
- - spec/unit/virtus/coercion/integer/class_methods/to_boolean_spec.rb
252
- - spec/unit/virtus/coercion/integer/class_methods/to_decimal_spec.rb
253
- - spec/unit/virtus/coercion/integer/class_methods/to_float_spec.rb
254
- - spec/unit/virtus/coercion/integer/class_methods/to_integer_spec.rb
255
- - spec/unit/virtus/coercion/integer/class_methods/to_string_spec.rb
256
- - spec/unit/virtus/coercion/numeric/class_methods/to_decimal_spec.rb
257
- - spec/unit/virtus/coercion/numeric/class_methods/to_float_spec.rb
258
- - spec/unit/virtus/coercion/numeric/class_methods/to_integer_spec.rb
259
- - spec/unit/virtus/coercion/numeric/class_methods/to_string_spec.rb
260
- - spec/unit/virtus/coercion/object/class_methods/method_missing_spec.rb
261
- - spec/unit/virtus/coercion/object/class_methods/to_array_spec.rb
262
- - spec/unit/virtus/coercion/object/class_methods/to_hash_spec.rb
263
- - spec/unit/virtus/coercion/object/class_methods/to_integer_spec.rb
264
- - spec/unit/virtus/coercion/object/class_methods/to_string_spec.rb
265
- - spec/unit/virtus/coercion/string/class_methods/to_boolean_spec.rb
266
- - spec/unit/virtus/coercion/string/class_methods/to_constant_spec.rb
267
- - spec/unit/virtus/coercion/string/class_methods/to_date_spec.rb
268
- - spec/unit/virtus/coercion/string/class_methods/to_datetime_spec.rb
269
- - spec/unit/virtus/coercion/string/class_methods/to_decimal_spec.rb
270
- - spec/unit/virtus/coercion/string/class_methods/to_float_spec.rb
271
- - spec/unit/virtus/coercion/string/class_methods/to_integer_spec.rb
272
- - spec/unit/virtus/coercion/string/class_methods/to_symbol_spec.rb
273
- - spec/unit/virtus/coercion/string/class_methods/to_time_spec.rb
274
- - spec/unit/virtus/coercion/symbol/class_methods/to_string_spec.rb
275
- - spec/unit/virtus/coercion/time/class_methods/to_integer_spec.rb
276
- - spec/unit/virtus/coercion/time/class_methods/to_time_spec.rb
277
- - spec/unit/virtus/coercion/time_coercions/to_date_spec.rb
278
- - spec/unit/virtus/coercion/time_coercions/to_datetime_spec.rb
279
- - spec/unit/virtus/coercion/time_coercions/to_string_spec.rb
280
- - spec/unit/virtus/coercion/time_coercions/to_time_spec.rb
281
- - spec/unit/virtus/coercion/true_class/class_methods/to_string_spec.rb
282
- - spec/unit/virtus/equalizer/append_spec.rb
283
- - spec/unit/virtus/equalizer/class_method/new_spec.rb
284
- - spec/unit/virtus/equalizer/methods/eql_spec.rb
285
- - spec/unit/virtus/equalizer/methods/equal_value_spec.rb
286
- - spec/unit/virtus/extensions/allowed_writer_methods_spec.rb
287
- - spec/unit/virtus/extensions/attribute_spec.rb
288
- - spec/unit/virtus/instance_methods/attributes_spec.rb
289
- - spec/unit/virtus/instance_methods/element_reference_spec.rb
290
- - spec/unit/virtus/instance_methods/element_set_spec.rb
291
- - spec/unit/virtus/instance_methods/freeze_spec.rb
292
- - spec/unit/virtus/instance_methods/initialize_spec.rb
293
- - spec/unit/virtus/instance_methods/to_hash_spec.rb
294
- - spec/unit/virtus/module_extensions/attribute_spec.rb
295
- - spec/unit/virtus/options/accept_options_spec.rb
296
- - spec/unit/virtus/options/accepted_options_spec.rb
297
- - spec/unit/virtus/options/options_spec.rb
298
- - spec/unit/virtus/type_lookup/class_methods/extended_spec.rb
299
- - spec/unit/virtus/type_lookup/determine_type_spec.rb
300
- - spec/unit/virtus/type_lookup/primitive_spec.rb
301
- - spec/unit/virtus/value_object/class_methods/allowed_writer_methods_spec.rb
302
- - spec/unit/virtus/value_object/class_methods/attribute_spec.rb
303
- - spec/unit/virtus/value_object/class_methods/equalizer_spec.rb
304
- - spec/unit/virtus/value_object/initialize_spec.rb
305
- - spec/unit/virtus/value_object/instance_methods/clone_spec.rb
306
- - spec/unit/virtus/value_object/instance_methods/with_spec.rb
186
+ - spec/unit/virtus/attribute_spec.rb
187
+ - spec/unit/virtus/attributes_reader_spec.rb
188
+ - spec/unit/virtus/attributes_writer_spec.rb
189
+ - spec/unit/virtus/class_methods/new_spec.rb
190
+ - spec/unit/virtus/config_spec.rb
191
+ - spec/unit/virtus/element_reader_spec.rb
192
+ - spec/unit/virtus/element_writer_spec.rb
193
+ - spec/unit/virtus/freeze_spec.rb
194
+ - spec/unit/virtus/model_spec.rb
195
+ - spec/unit/virtus/module_spec.rb
196
+ - spec/unit/virtus/set_default_attributes_spec.rb
197
+ - spec/unit/virtus/value_object_spec.rb
307
198
  - virtus.gemspec
308
199
  homepage: https://github.com/solnic/virtus
309
200
  licenses: []
@@ -320,12 +211,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
320
211
  required_rubygems_version: !ruby/object:Gem::Requirement
321
212
  none: false
322
213
  requirements:
323
- - - ! '>='
214
+ - - ! '>'
324
215
  - !ruby/object:Gem::Version
325
- version: '0'
216
+ version: 1.3.1
326
217
  requirements: []
327
218
  rubyforge_project:
328
- rubygems_version: 1.8.24
219
+ rubygems_version: 1.8.23
329
220
  signing_key:
330
221
  specification_version: 3
331
222
  summary: Attributes on Steroids for Plain Old Ruby Objects