artirix_data_models 0.10.1 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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