lorj 1.0.18 → 1.0.19

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: ae29eb4daeb919aafeedcc2312d5f56c48f55384
4
- data.tar.gz: b29b195d80a8c1e0cfd5435db8f405fa8f850a59
3
+ metadata.gz: 2ddea5ea2faad1ac6719e6d91b2722652a2ce806
4
+ data.tar.gz: 07cac35aa926dd66e0c4a4d90f45e840d457b703
5
5
  SHA512:
6
- metadata.gz: 561aaad92e549e7ed3a1384c2c4d2e7848c1293011b9f8feee3f1e248c54f0bd281fa449abcde5e04c6e4016a3ee85bb32f7fe49f78cdcd8ada3183a5ede6960
7
- data.tar.gz: a4b9d1916b46303d56bcc1dbb1272db560054d5012997c6794017b361ae5ea39f1ec07b2fb5c6d2305cbc94cc6ea17e0107e236566d63c14f786e7de3fd16dad
6
+ metadata.gz: 2e78441229d526d9843c65d2b3c7d2eab639f1245b67fa0943302cf361fe4286a8a36bcf1ffcae39edfa0debaa0f156b91547c963de10fff4c20ff048b576a1b
7
+ data.tar.gz: 5ec21fe303f470f806661e494ff9bf8940151207427d140249ea64f3687bbb37fb16503dd36675c65623a9d853775fae1957e48f3f1cd841ad5f22a46a37ac56
data/.rubocop.yml CHANGED
@@ -36,7 +36,7 @@ Metrics/MethodLength:
36
36
  Max: 50
37
37
  # If Method length is increased, class length need to be extended as well.
38
38
  Metrics/ClassLength:
39
- Max: 150
39
+ Max: 200
40
40
 
41
41
  # allow arguments to be longer than 15
42
42
  Metrics/AbcSize:
data/lib/core/core.rb CHANGED
@@ -272,6 +272,34 @@ module Lorj
272
272
  @core_object.process_update(oCloudObj, hConfig)
273
273
  end
274
274
 
275
+ # Execution of the Update process for the `oCloudObj` object.
276
+ # Usually, the Controller object data is updated by the process
277
+ # (BaseController::set_attr)
278
+ # then it should call a controller_update to really update the data in the
279
+ # controller.
280
+ #
281
+ # * *Args* :
282
+ # - +oCloudObj+ : Name of the object to initialize.
283
+ # - +sId+ : data representing the ID (attribute :id) of a Lorj::Data
284
+ # object.
285
+ # - +hConfig+ : Hash of hashes containing data required to initialize
286
+ # the object.
287
+ # If you use this variable, any other runtime config defined
288
+ # by the Data model will be cleaned before
289
+ #
290
+ # * *Returns* :
291
+ # - +Lorj::Data+ : Represents the Object initialized.
292
+ #
293
+ # * *Raises* :
294
+ # No exceptions
295
+
296
+ def refresh(object)
297
+ return false unless object.is_a?(Lorj::Data) && !object.empty? &&
298
+ object.type == :object
299
+
300
+ @core_object.process_update(object)
301
+ end
302
+
275
303
  # Function used to ask users about setting up his account.
276
304
  #
277
305
  # * *Args* :
@@ -34,6 +34,7 @@ module Lorj
34
34
  :create_e, :connect)
35
35
  controller_obj = @controller.connect(sObjectType, controller_params)
36
36
  data_obj = Lorj::Data.new
37
+ data_obj.base = self
37
38
  data_obj.set(controller_obj, sObjectType) do |sObjType, oObject|
38
39
  begin
39
40
  _return_map(sObjType, oObject)
@@ -60,6 +61,7 @@ module Lorj
60
61
  :create_e, :create)
61
62
  controller_obj = @controller.create(sObjectType, controller_params)
62
63
  data_obj = Lorj::Data.new
64
+ data_obj.base = self
63
65
  data_obj.set(controller_obj, sObjectType) do |sObjType, oObject|
64
66
  begin
65
67
  _return_map(sObjType, oObject)
@@ -116,6 +118,7 @@ module Lorj
116
118
 
117
119
  controller_obj = @controller.get(sObjectType, sUniqId, controller_params)
118
120
  data_obj = Lorj::Data.new
121
+ data_obj.base = self
119
122
  data_obj.set(controller_obj, sObjectType) do |sObjType, oObject|
120
123
  begin
121
124
  _return_map(sObjType, oObject)
@@ -160,6 +163,7 @@ module Lorj
160
163
  controller_params)
161
164
 
162
165
  data_obj = Lorj::Data.new :list
166
+ data_obj.base = self
163
167
  data_obj.set(controller_obj,
164
168
  sObjectType, hQuery) do |sObjType, key|
165
169
  begin
@@ -188,7 +192,7 @@ module Lorj
188
192
  #
189
193
  # returns:
190
194
  # - The controller must return true to inform about the real deletion
191
- def controller_update(sObjectType, params = NIL)
195
+ def controller_update(sObjectType, params = nil)
192
196
  _add_instant_config(params)
193
197
 
194
198
  # Need to detect data updated and update the Controler object with the
@@ -240,5 +244,48 @@ module Lorj
240
244
 
241
245
  is_done
242
246
  end
247
+
248
+ # controller_refresh call lorj framework to execute a controller refresh
249
+ # task
250
+ #
251
+ # The controller must respect the following rule:
252
+ # - If the refresh was unsuccessful, due to errors, the original object
253
+ # should be kept intact.
254
+ # - A boolean should be return to inform that therefresh was executed
255
+ # successfully or not.
256
+ #
257
+ # * *parameters:*
258
+ # - +object_type+: Lorj object type to use for the refresh.
259
+ # - +object+ : object to refresh.
260
+ #
261
+ # * *returns*:
262
+ # - boolean: true if refresh was executed successfully.
263
+ # false otherwise.
264
+ #
265
+ def controller_refresh(sObjectType, data_obj)
266
+ return false unless data_obj.is_a?(Lorj::Data) && !data_obj.empty?
267
+
268
+ controller_obj = data_obj[:object]
269
+
270
+ is_refreshed = @controller.refresh(sObjectType, controller_obj)
271
+
272
+ PrcLib.runtime_fail "Controller function 'refresh' must return true or "\
273
+ "false. Class returned: '%s'",
274
+ is_refreshed.class unless is_refreshed.boolean?
275
+
276
+ Lorj.debug(1, '%s.%s - refreshed.',
277
+ @process.class, sObjectType) if is_refreshed
278
+
279
+ data_obj.set(controller_obj, sObjectType) do |sObjType, an_object|
280
+ begin
281
+ _return_map(sObjType, an_object)
282
+ rescue => e
283
+ PrcLib.runtime_fail 'update %s.%s : %s',
284
+ @process.class, sObjectType, e.message
285
+ end
286
+ end
287
+
288
+ is_refreshed
289
+ end
243
290
  end
244
291
  end
@@ -164,12 +164,11 @@ module Lorj
164
164
  data = config[k]
165
165
  end
166
166
 
167
- rhash_tree = Lorj.data.first_section(k)
168
- rhash_tree = v[:keys] if v.key?(:keys)
167
+ rhash_kpath = _export_keys_as_keypath(k, v)
169
168
  if !data_def.nil? && data_def[:encrypted].is_a?(TrueClass)
170
169
  data = Lorj::SSLCrypt.get_encrypted_value(data, entr, data_def[:desc])
171
170
  end
172
- rhash.rh_set(data, *rhash_tree)
171
+ rhash.rh_set(data, *(rhash_kpath.tree))
173
172
  end
174
173
 
175
174
  entr = Lorj::SSLCrypt.new_encrypt_key
@@ -181,6 +180,22 @@ module Lorj
181
180
 
182
181
  private
183
182
 
183
+ # Internal function to determine which section/key to set in export file
184
+ #
185
+ # It should support Array or String with syntax 'section#key'
186
+ def _export_keys_as_keypath(k, v)
187
+ rhash_kpath = KeyPath.new(Lorj.data.first_section(k))
188
+ if v.key?(:keys)
189
+ if v[:keys].is_a?(String)
190
+ section, key = Lorj.data.first_section(v[:keys])
191
+ rhash_kpath = KeyPath.new([section, key])
192
+ else
193
+ rhash_kpath = KeyPath.new(v[:keys])
194
+ end
195
+ end
196
+ rhash_kpath
197
+ end
198
+
184
199
  def _export_processes(processes_options)
185
200
  export_data = []
186
201
  PrcLib.processes.each do |p|
@@ -44,7 +44,7 @@ module Lorj
44
44
  # - Error if the create_e process handler raise an error.
45
45
  #
46
46
  def process_create(object_type, hConfig = nil)
47
- return nil unless object_type
47
+ return nil unless object_type.is_a?(Symbol)
48
48
 
49
49
  _add_instant_config(hConfig)
50
50
 
@@ -64,6 +64,7 @@ module Lorj
64
64
  # This object is a meta object, without any data.
65
65
  # Used to build other kind of objects.
66
66
  object = Lorj::Data.new
67
+ object.base = self
67
68
  object.set({}, object_type) {}
68
69
  else
69
70
  # build Function params to pass to the event handler.
@@ -116,7 +117,7 @@ module Lorj
116
117
  # - Error if the query_e process handler raise an error.
117
118
  #
118
119
  def process_delete(object_type, hConfig = nil)
119
- return nil unless object_type
120
+ return nil unless object_type.is_a?(Symbol)
120
121
 
121
122
  _add_instant_config(hConfig)
122
123
 
@@ -200,7 +201,7 @@ module Lorj
200
201
  #
201
202
  #
202
203
  def process_query(object_type, hQuery, hConfig = nil)
203
- return nil unless object_type
204
+ return nil unless object_type.is_a?(Symbol)
204
205
 
205
206
  _add_instant_config(hConfig)
206
207
 
@@ -291,7 +292,7 @@ module Lorj
291
292
  # - Error if the get_e process handler raise an error.
292
293
  #
293
294
  def process_get(object_type, sUniqId, hConfig = nil)
294
- return nil unless object_type
295
+ return nil unless object_type.is_a?(Symbol)
295
296
 
296
297
  _add_instant_config(hConfig)
297
298
 
@@ -344,9 +345,9 @@ module Lorj
344
345
  # updating.
345
346
  #
346
347
  # * *Returns* :
347
- # - Lorj::Data of type :object
348
- # OR
349
- # - Lorj::Data empty.
348
+ # - Lorj::Data of type :object
349
+ # OR
350
+ # - Lorj::Data empty.
350
351
  #
351
352
  # * *Raises* :
352
353
  # - Warning if the Config data passed are not required by the meta object
@@ -357,7 +358,7 @@ module Lorj
357
358
  # - Error if the get_e process handler raise an error.
358
359
  #
359
360
  def process_update(object_type, hConfig = nil)
360
- return nil unless object_type
361
+ return nil unless object_type.is_a?(Symbol)
361
362
 
362
363
  _add_instant_config(hConfig)
363
364
 
@@ -394,6 +395,83 @@ module Lorj
394
395
  @object_data.add(object)
395
396
  end
396
397
  end
398
+
399
+ # Function to execute an object update. This function returns a Lorj::Data
400
+ # of type :object, refreshed.
401
+ #
402
+ # It uses the event 'refresh_e'. If not defined, the refresh is simply not
403
+ # executed. No warning exposed, but a debug info is thrown.
404
+ #
405
+ # refresh_e is defined and called as follow:
406
+ #
407
+ # BaseDefinition class derived function. This Process function should do any
408
+ # task required to execute a refresh of the object passed.
409
+ # The controller object data should be extracted by the controller_refresh
410
+ # call to refresh :attrs. See #controller_refresh.
411
+ # It should return true or false if the object refresh was done successfully
412
+ # or not
413
+ #
414
+ # It is possible to call directly the controller_refresh as the process
415
+ # event
416
+ #
417
+ # * *args*:
418
+ # - object_type: The object_type to refresh
419
+ # - object : The Lorj::Data object to refresh
420
+ #
421
+ # * *returns*:
422
+ # - boolean : true if refresh was executed successfully.
423
+ # false otherwise.
424
+ #
425
+ # From the object itself, you can call object.refresh. This will call this
426
+ # function.
427
+ #
428
+ # The controller event usually called is controller_refresh.
429
+ #
430
+ # * *Args* :
431
+ # - +object_type+ : Meta object type to query.
432
+ # - +config+ : Optional. Hash containing list of data to use for
433
+ # updating.
434
+ #
435
+ # * *Returns* :
436
+ # - boolean : true if the refresh was executed successfully.
437
+ # false otherwise.
438
+ #
439
+ # * *Raises* :
440
+ # - Warning if the Config data passed are not required by the meta object
441
+ # (or dependencies) at creation time.
442
+ # - Error if ObjectType has never been declared.
443
+ # - Error if the dependencies get_e process handler did not return any
444
+ # data. (nil) - Loop detection.
445
+ # - Error if the get_e process handler raise an error.
446
+ #
447
+ def process_refresh(object)
448
+ return nil unless object.is_a?(Lorj::Data) && object.type == :object &&
449
+ !object.empty?
450
+
451
+ object_type = object.object_type?
452
+
453
+ unless PrcLib.model.meta_obj.rh_exist?(object_type)
454
+ PrcLib.runtime_fail "$s.%s: '%s' is not a known object type.",
455
+ self.class, __callee__, object_type
456
+ end
457
+
458
+ proc = PrcLib.model.meta_obj.rh_get(object_type, :lambdas, :refresh_e)
459
+
460
+ if proc.nil?
461
+ Lorj.debug(1, "No 'refresh_e' event found for object type '%s'",
462
+ object_type)
463
+ return false
464
+ end
465
+
466
+ ret = @process.method(proc).call(object_type, object)
467
+
468
+ unless ret.boolean?
469
+ Lorj.debug(1, "'%s' has not returned a boolean. Consider return false.",
470
+ object_type)
471
+ ret = false
472
+ end
473
+ ret
474
+ end
397
475
  end
398
476
 
399
477
  # Adding private process core functions.
@@ -125,6 +125,7 @@ module Lorj
125
125
  # - :get_e : Process function to call with get
126
126
  # - :query_e : Process function to call with query
127
127
  # - :get_attr_e : Process function to call with get_attr
128
+ # - :refresh_e : Process function to call with refresh
128
129
  def self.define_obj(obj_type_name, handlers = nil)
129
130
  return nil unless [NilClass, String, Symbol].include?(obj_type_name.class)
130
131
  PrcLib.model.heap true
@@ -634,7 +635,8 @@ module Lorj
634
635
  # TODO: Cleanup un-used 2 levels :params/:keys by single :params
635
636
  object = { :lambdas => { :create_e => nil, :delete_e => nil,
636
637
  :update_e => nil, :get_e => nil,
637
- :query_e => nil, :get_attr_e => nil },
638
+ :query_e => nil, :get_attr_e => nil,
639
+ :refresh_e => nil },
638
640
  :params => { :keys => {} },
639
641
  :options => { :controller => use_controller },
640
642
  :query_mapping => { ':id' => ':id', ':name' => ':name' },
@@ -64,6 +64,27 @@ module Lorj
64
64
  controller_error 'update_object has not been redefined by the controller.'
65
65
  end
66
66
 
67
+ # controller refresh handlers which needs to be defined by the controller,
68
+ # this function should execute a controller data refresh
69
+ #
70
+ # The controller must respect the following rule:
71
+ # - If the refresh was unsuccessful, due to errors, the original object
72
+ # should be kept intact.
73
+ # - A boolean should be return to inform that therefresh was executed
74
+ # successfully or not.
75
+ #
76
+ # * *parameters:*
77
+ # - +object_type+: Lorj object type to use for the refresh.
78
+ # - +object+ : object to refresh.
79
+ #
80
+ # * *returns*:
81
+ # - boolean: true if refresh was executed successfully.
82
+ # false otherwise.
83
+ #
84
+ def refresh(_sObjectType, _oObject)
85
+ controller_error 'refresh_object has not been redefined by the controller'
86
+ end
87
+
67
88
  # Simply raise an error
68
89
  #
69
90
  # * *Args* :
@@ -153,6 +153,7 @@ module Lorj
153
153
  'as Lorj::Data object if ObjectType is not given.',
154
154
  oObject.class unless sObjectType
155
155
  data_objects = Lorj::Data.new(sDataType)
156
+ data_objects.base = self
156
157
  data_objects.set(oObject, sObjectType) do |sObjType, oControlerObject|
157
158
  _return_map(sObjType, oControlerObject)
158
159
  end
@@ -75,6 +75,11 @@ module Lorj
75
75
  params = nil unless params.is_a?(Hash)
76
76
  @base_object.controller_get(sObjectType, sId, params)
77
77
  end
78
+
79
+ def controller_refresh(sObjectType, object) #:doc:
80
+ process_error 'No Controler object loaded.' unless @base_object
81
+ @base_object.controller_refresh(sObjectType, object)
82
+ end
78
83
  end
79
84
 
80
85
  # class describing generic Object Process
@@ -104,6 +109,11 @@ module Lorj
104
109
  process_error 'No Base object loaded.' unless @base_object
105
110
  @base_object.process_delete(sObjectType, hConfig)
106
111
  end
112
+
113
+ def process_refresh(sObjectType, object) #:doc:
114
+ process_error 'No Base object loaded.' unless @base_object
115
+ @base_object.process_refresh(sObjectType, object)
116
+ end
107
117
  end
108
118
 
109
119
  # class describing generic Object Process
@@ -89,6 +89,31 @@ module Lorj
89
89
  # Return Lorj::Data object type
90
90
  attr_reader :type
91
91
 
92
+ def base=(base)
93
+ @base = base if @base.nil? && base.is_a?(Lorj::BaseDefinition)
94
+ @base
95
+ end
96
+
97
+ # Do an object refresh by calling the process_refresh function if
98
+ # the process has been provided.
99
+ #
100
+ # For details on refresh call, see #BaseDefinition.process_refresh
101
+ #
102
+ # * *Args* :
103
+ # Nothing
104
+ #
105
+ # * *Returns* :
106
+ # - +status+ : Boolean.
107
+ # true if refresh is successful
108
+ # false otherwise
109
+ def refresh
110
+ return false if empty? || @base.nil?
111
+ return false unless @base.is_a?(Lorj::BaseDefinition) &&
112
+ @base.class.method_defined?(:process_refresh)
113
+
114
+ @base.process_refresh(self)
115
+ end
116
+
92
117
  # Return :object type of the Lorj::Data object.
93
118
  #
94
119
  # * *Args* :
@@ -112,21 +137,20 @@ module Lorj
112
137
  # - Set from a Lorj::Data.
113
138
  # ex: if data is already a Lorj::Data,
114
139
  # copy = Lorj::Data.new()
140
+ # copy.base = self
115
141
  # copy.set(data)
116
142
  # - Set from an object, not Lorj::Data and not a list.
117
143
  # ex:
118
144
  # data = { :test => 'toto'}
119
145
  # copy = Lorj::Data.new()
120
- # copy.set(data, :object) { |oObject |
121
- # oObject
122
- # }
146
+ # copy.base = self
147
+ # copy.set(data, :object) { |oObject | oObject }
123
148
  # - Set from a list of objects, not Lorj::Data and not a :object.
124
149
  # ex:
125
150
  # data = [{ :name => 'toto'}, {:name => 'test'}]
126
151
  # copy = Lorj::Data.new()
127
- # copy.set(data, :list, { :name => /^t/ }) { |oObject |
128
- # oObject
129
- # }
152
+ # copy.base = self
153
+ # copy.set(data, :list, { :name => /^t/ }) { |oObject | oObject }
130
154
  #
131
155
  # * *Args* :
132
156
  # - +data+ : Lorj::Data or any other data.
@@ -149,6 +173,8 @@ module Lorj
149
173
  def set(oObj, sObjType = nil, hQuery = {})
150
174
  return obj_data_set(oObj, sObjType) if oObj.is_a?(Lorj::Data)
151
175
 
176
+ return nil unless block_given?
177
+
152
178
  # while saving the object, a mapping work is done?
153
179
  case @type
154
180
  when :data, :object
@@ -222,6 +248,7 @@ module Lorj
222
248
  # ex:
223
249
  # data = { :name => 'toto'}
224
250
  # copy = Lorj::Data.new()
251
+ # copy.base = self
225
252
  # copy.set(data, :object) { |oObject |
226
253
  # {:real_name => oObject[:name]}
227
254
  # }
@@ -239,6 +266,7 @@ module Lorj
239
266
  # ex:
240
267
  # data = [{ :name => 'toto'}, {:name => 'test'}]
241
268
  # copy = Lorj::Data.new()
269
+ # copy.base = self
242
270
  # copy.set(data, :list, { :name => /^t/ }) { |oObject |
243
271
  # {:real_name => oObject[:name]}
244
272
  # }
@@ -309,6 +337,7 @@ module Lorj
309
337
  # {:real_name => oObject[:name]}
310
338
  # }
311
339
  # list = Lorj::Data.new()
340
+ # list.base = self
312
341
  #
313
342
  # puts data.exist?(:object) # => false
314
343
  #
data/lib/lorj/version.rb CHANGED
@@ -16,6 +16,6 @@
16
16
 
17
17
  # Lorj version
18
18
  module Lorj
19
- VERSION = '1.0.18'
20
- DATE = '2015-06-29'
19
+ VERSION = '1.0.19'
20
+ DATE = '2015-07-02'
21
21
  end
@@ -71,6 +71,7 @@ describe 'Lorj::ObjectData' do
71
71
  end
72
72
  end
73
73
  end
74
+
74
75
  context 'initialize with internal true' do
75
76
  before(:all) do
76
77
  @obj_data = Lorj::ObjectData.new(true)
@@ -78,10 +79,12 @@ describe 'Lorj::ObjectData' do
78
79
  data = [{ :name => 'toto' }]
79
80
  @internal_data.set(data, :list, :name => /^t/) { |oObject| oObject }
80
81
  end
82
+
81
83
  it 'Test method #add' do
82
84
  @obj_data.add(@internal_data)
83
85
  expect(@obj_data.exist?(:list)).to eq(true)
84
86
  end
87
+
85
88
  it 'Test method #delete' do
86
89
  deleted_data = @obj_data.delete(@internal_data)
87
90
  expect(@obj_data.exist?(:list)).to eq(false)
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ # To debug spec, depending on Ruby version, you may need to install
19
+ # 1.8 => ruby-debug
20
+ # 1.9 => debugger
21
+ # 2.0+ => byebug
22
+ # The right debugger should be installed by default by bundle
23
+ # So, just call:
24
+ #
25
+ # bundle
26
+ #
27
+ # Then set RSPEC_DEBUG=true, put a 'stop' where you want in the spec code
28
+ # and start rspec or even rake spec.
29
+ #
30
+ # RSPEC_DEBUG=true rake spec_local (or spec which includes docker spec)
31
+ # OR
32
+ # RSPEC_DEBUG=true rspec -f doc --color spec/<file>_spec.rb
33
+ #
34
+
35
+ app_path = File.dirname(__FILE__)
36
+ $LOAD_PATH << app_path unless $LOAD_PATH.include?(app_path)
37
+ require 'spec_helper'
38
+
39
+ describe 'Lorj::Data' do
40
+ context 'initialize' do
41
+ it 'data.type? == :object by default' do
42
+ expect(Lorj::Data.new).to be
43
+ data = Lorj::Data.new
44
+ expect(data.type).to equal(:object)
45
+ expect(data.object_type?).to equal(nil)
46
+ expect(data.empty?).to equal(true)
47
+ end
48
+
49
+ it 'data.type? == :list if requested' do
50
+ expect(Lorj::Data.new :list).to be
51
+ data = Lorj::Data.new :list
52
+ expect(data.type).to equal(:list)
53
+ expect(data.object_type?).to equal(nil)
54
+ expect(data.empty?).to equal(true)
55
+ end
56
+ end
57
+
58
+ context 'as :object' do
59
+ before(:all) do
60
+ # Spec testing for process refresh
61
+ class SpecObject < Lorj::BaseDefinition
62
+ def initialize
63
+ end
64
+
65
+ def process_refresh(*_p)
66
+ true
67
+ end
68
+ end
69
+ @spec_object = SpecObject.new
70
+ @data = Lorj::Data.new
71
+ end
72
+
73
+ it 'data.object_type?'
74
+ it 'data.set(...)'
75
+ it 'data.exist?'
76
+ it 'data.empty?'
77
+ it 'data.type'
78
+ it 'data.type = '
79
+ it 'data.get'
80
+ it 'data[...]'
81
+ it 'data.length'
82
+ it 'data.each'
83
+ it 'data.each_index'
84
+ it 'data.to_a'
85
+ it 'data.is_registered'
86
+ it 'data.register'
87
+ it 'data.unregister'
88
+
89
+ it 'data.base = BaseDefinition instance should expose process_refresh' do
90
+ expect(@data.refresh).to equal(false)
91
+ expect(@data.base = @spec_object).to equal(@spec_object)
92
+ expect(@data.refresh).to equal(false)
93
+ data = { :test => 'toto' }
94
+ @data.set(data, :test) { |_t, o| o }
95
+ # It requires data and process to refresh itself.
96
+ expect(@data.refresh).to equal(true)
97
+ end
98
+ end
99
+ end
@@ -165,7 +165,7 @@ describe 'Internal BaseDefinition features' do
165
165
  end
166
166
 
167
167
  it 'account_export({"credentials#key" => {:keys => [:server, :key]}})'\
168
- ' returns ' do
168
+ ' returns data with :server/:key instead of :credentials/:key' do
169
169
  map = { 'credentials#key' => { :keys => [:server, :key] } }
170
170
  entr, export_dat = @spec_obj.account_export(map)
171
171
  export_dat = YAML.load(export_dat)
@@ -177,6 +177,19 @@ describe 'Internal BaseDefinition features' do
177
177
  expect(data.rh_exist?(:account, :name)).to equal(true)
178
178
  end
179
179
 
180
+ it "account_export({'credentials#key' => {:keys => 'server#key'}})"\
181
+ ' returns data with :server/:key instead of :credentials/:key' do
182
+ map = { 'credentials#key' => { :keys => 'server#key' } }
183
+ entr, export_dat = @spec_obj.account_export(map)
184
+ export_dat = YAML.load(export_dat)
185
+ dat_decrypted = Lorj::SSLCrypt.get_encrypted_value(export_dat[:enc_data],
186
+ entr, 'data encrypted')
187
+ data = YAML.load(dat_decrypted)
188
+ expect(data.rh_exist?(:credentials, :key)).to equal(false)
189
+ expect(data.rh_exist?(:server, :key)).to equal(true)
190
+ expect(data.rh_exist?(:account, :name)).to equal(true)
191
+ end
192
+
180
193
  it 'account_data_import(data) update the "account layer"' do
181
194
  entr, export_dat = @spec_obj.account_export
182
195
  export_dat = YAML.load(export_dat)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lorj
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.18
4
+ version: 1.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - forj team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-29 00:00:00.000000000 Z
11
+ date: 2015-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -276,6 +276,7 @@ files:
276
276
  - lorj.gemspec
277
277
  - spec/05_lorj_keypath_spec.rb
278
278
  - spec/06_lorj_object_data_spec.rb
279
+ - spec/07_lorj_data_spec.rb
279
280
  - spec/09_prc_spec.rb
280
281
  - spec/10_lorj_log_spec.rb
281
282
  - spec/11_lorj_defaults_spec.rb
@@ -317,6 +318,7 @@ summary: Process Controllers framework system
317
318
  test_files:
318
319
  - spec/05_lorj_keypath_spec.rb
319
320
  - spec/06_lorj_object_data_spec.rb
321
+ - spec/07_lorj_data_spec.rb
320
322
  - spec/09_prc_spec.rb
321
323
  - spec/10_lorj_log_spec.rb
322
324
  - spec/11_lorj_defaults_spec.rb