artirix_data_models 0.10.1 → 0.11.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39e4610f0f386ad319c2f650561f732fa334acbc
4
- data.tar.gz: 3d93c51e72c96b53faf0b69c6b7953f9efae6af9
3
+ metadata.gz: 98b0dfcd1a722cae149eb3fc594c3906e29fff4f
4
+ data.tar.gz: 688d59c063e71fa84f966e61ce64d670da090a20
5
5
  SHA512:
6
- metadata.gz: 126264ac538f173ccfceeb618df53aec68e70ba6deea15c22d0adca20ef9d8be2b678222d39d1b1057d08ee199287649501d32e94b6f9d7cd65d984192c3d90e
7
- data.tar.gz: 21a2ce0ee015a7739a43ceea3ee2d98cf665bf9ca83eb96108ef942396543d7d034406b0df40a41641ff16ea8f1e54d83fb449181e13c0e4741e284756689009
6
+ metadata.gz: 1487d28793e105fcad719ab2291372ac892515fe0a705f732e68be7733da09ee276f5bc06bc2065ecebdf4c203780b49a4c372f9c0097ea7a3790f5f01a6a8ac
7
+ data.tar.gz: bd8ed3558f18d31ec2f630e25c9e165498763df57045f4fd3de961504529febfa74b6ade7fcdd5d08701032a707fee4941f39c4da447aa8ffae12f4f666c86ba
data/README.md CHANGED
@@ -250,6 +250,9 @@ end
250
250
 
251
251
  ## Changes
252
252
 
253
+ ### 0.11.0
254
+ - introducing `ArtirixDataModels::ActiveNull` with a port of `active_null` gem to work with our models.
255
+
253
256
  ### 0.10.1
254
257
  - DAO spec helpers were broken since Gateway refactor of `v0.8`. This fixes them.
255
258
 
@@ -33,6 +33,7 @@ require 'artirix_data_models/daos/model_fields_dao'
33
33
  require 'artirix_data_models/daos/basic_model_dao'
34
34
  require 'artirix_data_models/dao_registry'
35
35
  require 'artirix_data_models/fake_response_factory'
36
+ require 'artirix_data_models/active_null'
36
37
 
37
38
  module ArtirixDataModels
38
39
 
@@ -0,0 +1,99 @@
1
+ module ArtirixDataModels
2
+ module ActiveNull
3
+
4
+ def null
5
+ null_class.get
6
+ end
7
+
8
+ def null_model(&block)
9
+ @null_model_overrides = if block_given?
10
+ Module.new.tap { |m| m.module_eval(&block) }
11
+ end
12
+ end
13
+
14
+ def null_class
15
+ @null_class ||= NullModelBuilder.new(self, @null_model_overrides).build
16
+ end
17
+
18
+ class NullModelBuilder
19
+ attr_reader :model, :overrides
20
+
21
+ def initialize(model, overrides)
22
+ @model = model
23
+ @overrides = overrides
24
+ end
25
+
26
+ def build
27
+ model = self.model
28
+ null = Naught.build do |config|
29
+ config.impersonate model
30
+ config.predicates_return false
31
+
32
+ model.defined_attributes.each do |field, default|
33
+ define_method(field.to_sym) { default }
34
+ end
35
+
36
+ def nil?
37
+ true
38
+ end
39
+
40
+ def present?
41
+ false
42
+ end
43
+
44
+ def blank?
45
+ true
46
+ end
47
+
48
+ def to_json
49
+ '{}'
50
+ end
51
+
52
+ if Object.const_defined? 'Draper'
53
+ def decorate(options = {})
54
+ decorator_class.decorate(self, options)
55
+ end
56
+
57
+ def decorator_class
58
+ self.class.decorator_class
59
+ end
60
+
61
+ def decorator_class?
62
+ self.class.decorator_class?
63
+ end
64
+
65
+ def applied_decorators
66
+ []
67
+ end
68
+
69
+ def decorated_with?(decorator_class)
70
+ false
71
+ end
72
+
73
+ def decorated?
74
+ false
75
+ end
76
+ end
77
+ end
78
+ null.send(:include, Draper::Decoratable) if Object.const_defined? 'Draper'
79
+ null.send(:include, overrides) if overrides
80
+ set_null_model null
81
+ end
82
+
83
+ def name
84
+ base_name = model.name.split('::').last
85
+ "Null#{base_name}"
86
+ end
87
+
88
+ def full_name
89
+ return name if model.parent == Object
90
+ "#{model.parent.name}::#{name}"
91
+ end
92
+
93
+ def set_null_model(null)
94
+ model.parent.const_set name, null
95
+ end
96
+ end
97
+
98
+ end
99
+ end
@@ -1,3 +1,3 @@
1
1
  module ArtirixDataModels
2
- VERSION = '0.10.1'
2
+ VERSION = '0.11.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artirix_data_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Turiño
@@ -240,6 +240,7 @@ files:
240
240
  - bin/console
241
241
  - bin/setup
242
242
  - lib/artirix_data_models.rb
243
+ - lib/artirix_data_models/active_null.rb
243
244
  - lib/artirix_data_models/aggregation.rb
244
245
  - lib/artirix_data_models/aggregation_builder.rb
245
246
  - lib/artirix_data_models/aggregations_factory.rb