lorj 1.0.10 → 1.0.11

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.
@@ -0,0 +1,144 @@
1
+ # encoding: UTF-8
2
+
3
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # This class describes how to process some actions, and will do everything prior
18
+ # this task to make it to work.
19
+
20
+ # This Mock controller keep the data in memory in hash/Array data.
21
+ class Mock
22
+ # mock do not need to use any mapping. It adapts itself to what the process
23
+ # has defined.
24
+ end
25
+
26
+ # This Mock controller keep the data in memory in hash/Array data.
27
+ class MockController
28
+ @@data = {} # rubocop: disable ClassVars
29
+
30
+ def create(sObjectType, hParams)
31
+ PrcLib.debug("Mock: create object '%s' with parameters (hdata) '%s'",
32
+ sObjectType, hParams[:hdata])
33
+
34
+ result = {}
35
+ hParams[].keys.each do |key|
36
+ next if key == :hdata
37
+ result[key] = hParams[key]
38
+ end
39
+ result.merge!(hParams[:hdata])
40
+
41
+ @@data[sObjectType] = [] unless @@data.key?(sObjectType)
42
+
43
+ array = @@data[sObjectType]
44
+
45
+ array.each do |value|
46
+ fail if value.key?(result[:name])
47
+ end
48
+ array << result
49
+
50
+ result[:id] = array.length - 1
51
+
52
+ # Typical code:
53
+ # ~ case sObjectType
54
+ # ~ when :public_ip
55
+ # Following function can be executed to ensure the object :connection exists
56
+ # ~ required?(hParams, :connection)
57
+ # ~ required?(hParams, :server)
58
+ # ~ ... CODE to create
59
+ # ~ else
60
+ # ~ controller_error "'%s' is not a valid object for 'create'", sObjectType
61
+ # ~ end
62
+ # The code should return some data
63
+ # This data will be encapsulated in Lorj::Data object.
64
+ # data will be extracted by the framework with the controller get_attr
65
+ # function and mapped.
66
+ PrcLib.debug("Mock: object '%s' = '%s' is created.", sObjectType, result)
67
+ result
68
+ end
69
+
70
+ # This function return a collection which have to provide:
71
+ # functions: [], length, each
72
+ # Used by network process.
73
+ def query(sObjectType, sQuery, hParams)
74
+ PrcLib.debug("Mock: query object '%s' with hdata '%s' using query '%s'",
75
+ sObjectType, hParams[:hdata], sQuery)
76
+
77
+ return [] unless @@data.key?(sObjectType)
78
+
79
+ result = []
80
+
81
+ @@data[sObjectType].each do |value|
82
+ elem = value
83
+ sQuery.each do |query_key, query_value|
84
+ elem = nil if !value.key?(query_key) || value[query_key] != query_value
85
+ end
86
+ result << elem if elem
87
+ end
88
+ result
89
+ end
90
+
91
+ def delete(sObjectType, hParams)
92
+ PrcLib.debug("Mock: delete object '%s' with hdata '%s'",
93
+ sObjectType, hParams[:hdata])
94
+ return nil unless @@data.key?(sObjectType)
95
+
96
+ return false if !hParams.exist?(sObjectType) || hParams[sObjectType].nil?
97
+ @@data[sObjectType].delete(hParams[sObjectType])
98
+ PrcLib.debug("Mock: object '%s' = '%s' is deleted.",
99
+ sObjectType, hParams[sObjectType])
100
+ true
101
+ end
102
+
103
+ def get(sObjectType, sUniqId, hParams)
104
+ PrcLib.debug("Mock: Get object '%s' = '%s' with hdata '%s'",
105
+ sObjectType, sUniqId, hParams[:hdata])
106
+ return nil unless @@data.key?(sObjectType)
107
+ @@data[sObjectType][sUniqId]
108
+ end
109
+
110
+ def get_attr(oControlerObject, key)
111
+ # This controller function read the data and
112
+ # extract the information requested by the framework.
113
+ # Those data will be mapped to the process data model.
114
+ # The key is an array, to get data from a level tree.
115
+ # [data_l1, data_l2, data_l3] => should retrieve data from structure like
116
+ # data[ data_l2[ data_l3 ] ]
117
+ attributes = oControlerObject
118
+
119
+ attributes.rh_get(key)
120
+ rescue => e
121
+ controller_error "Unable to map '%s'.\n%s", key, e.message
122
+ end
123
+
124
+ def set_attr(oControlerObject, key, value)
125
+ attributes = oControlerObject
126
+
127
+ attributes.rh_set(value, key)
128
+ rescue => e
129
+ controller_error "Unable to map '%s' on '%s'.\n%s",
130
+ key, sObjectType, e.message
131
+ end
132
+
133
+ def update(sObjectType, oObject, hParams)
134
+ PrcLib.debug("Mock: Update object '%s' = '%s' with hdata '%s'",
135
+ sObjectType, sUniqId, hParams[:hdata])
136
+ return false unless @@data.key?(sObjectType)
137
+
138
+ return false unless @@data[sObjectType][oObject[:id]].nil?
139
+ # Considered hash object is already updated.
140
+ # This action emule the object save which doesn't make sense in this empty
141
+ # Mock controller.
142
+ true
143
+ end
144
+ end
data/lorj.gemspec CHANGED
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
36
36
  '--title Lorj - The Process Controllers framework system' << \
37
37
  '--main README.md'
38
38
 
39
- spec.add_runtime_dependency 'config_layers', '~>0.1.0'
39
+ spec.add_runtime_dependency 'config_layers', '~>0.1.3'
40
40
  # spec.add_runtime_dependency 'git', '>=1.2.7'
41
41
  # spec.add_runtime_dependency 'rbx-require-relative', '~>0.0.7'
42
42
  spec.add_runtime_dependency 'highline', '~> 1.6.21'
@@ -15,7 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- # require 'byebug'
18
+ # require 'byebug'
19
19
 
20
20
  $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib/core')
21
21
 
@@ -26,6 +26,9 @@ describe 'Lorj::KeyPath,' do
26
26
  before(:all) do
27
27
  @o_key = Lorj::KeyPath.new(:test)
28
28
  end
29
+ it 'Test method #length' do
30
+ expect(@o_key.length).to eq(1)
31
+ end
29
32
  it 'Test method #to_s' do
30
33
  expect(@o_key.to_s).to eq('test')
31
34
  end
@@ -45,7 +48,7 @@ describe 'Lorj::KeyPath,' do
45
48
  expect(@o_key.key).to eq(:test)
46
49
  end
47
50
  it 'Test method #key_tree' do
48
- expect(@o_key.key).to eq(:test)
51
+ expect(@o_key.key_tree).to eq(:test)
49
52
  end
50
53
  end
51
54
 
@@ -53,6 +56,9 @@ describe 'Lorj::KeyPath,' do
53
56
  before(:all) do
54
57
  @o_key = Lorj::KeyPath.new([:test, :test2, :test3])
55
58
  end
59
+ it 'Test method #length' do
60
+ expect(@o_key.length).to eq(3)
61
+ end
56
62
  it 'Test method #to_s' do
57
63
  expect(@o_key.to_s).to eq('test/test2/test3')
58
64
  end
@@ -75,4 +81,124 @@ describe 'Lorj::KeyPath,' do
75
81
  expect(@o_key.key_tree).to eq(':test/:test2/:test3')
76
82
  end
77
83
  end
84
+
85
+ context 'initialize with string test1/test2' do
86
+ before(:all) do
87
+ @o_key = Lorj::KeyPath.new('test1/test2')
88
+ end
89
+ it 'Test method #length' do
90
+ expect(@o_key.length).to eq(2)
91
+ end
92
+ it 'Test method #to_s' do
93
+ expect(@o_key.to_s).to eq('test1/test2')
94
+ end
95
+ it 'Test method #key' do
96
+ expect(@o_key.key).to eq('test2')
97
+ end
98
+ it 'Test method #key(0)' do
99
+ expect(@o_key.key(0)).to eq('test1')
100
+ end
101
+ it 'Test method #key(1)' do
102
+ expect(@o_key.key(1)).to eq('test2')
103
+ end
104
+ it 'Test method #fpath' do
105
+ expect(@o_key.fpath).to eq('test1/test2')
106
+ end
107
+ it 'Test method #tree' do
108
+ expect(@o_key.tree).to eq(%w(test1 test2))
109
+ end
110
+ it 'Test method #key_tree' do
111
+ expect(@o_key.key_tree).to eq('test1/test2')
112
+ end
113
+ end
114
+
115
+ context 'initialize with string :test' do
116
+ before(:all) do
117
+ @o_key = Lorj::KeyPath.new(':test')
118
+ end
119
+ it 'Test method #length' do
120
+ expect(@o_key.length).to eq(1)
121
+ end
122
+ it 'Test method #to_s' do
123
+ expect(@o_key.to_s).to eq('test')
124
+ end
125
+ it 'Test method #key' do
126
+ expect(@o_key.key).to eq(:test)
127
+ end
128
+ it 'Test method #key(0)' do
129
+ expect(@o_key.key(0)).to eq(:test)
130
+ end
131
+ it 'Test method #key(1)' do
132
+ expect(@o_key.key(1)).to eq(nil)
133
+ end
134
+ it 'Test method #fpath' do
135
+ expect(@o_key.fpath).to eq(':test')
136
+ end
137
+ it 'Test method #tree' do
138
+ expect(@o_key.tree).to eq([:test])
139
+ end
140
+ it 'Test method #key_tree' do
141
+ expect(@o_key.key_tree).to eq(:test)
142
+ end
143
+ end
144
+
145
+ context 'initialize with string test' do
146
+ before(:all) do
147
+ @o_key = Lorj::KeyPath.new('test')
148
+ end
149
+ it 'Test method #length' do
150
+ expect(@o_key.length).to eq(1)
151
+ end
152
+ it 'Test method #to_s' do
153
+ expect(@o_key.to_s).to eq('test')
154
+ end
155
+ it 'Test method #key' do
156
+ expect(@o_key.key).to eq('test')
157
+ end
158
+ it 'Test method #key(0)' do
159
+ expect(@o_key.key(0)).to eq('test')
160
+ end
161
+ it 'Test method #key(1)' do
162
+ expect(@o_key.key(1)).to eq(nil)
163
+ end
164
+ it 'Test method #fpath' do
165
+ expect(@o_key.fpath).to eq('test')
166
+ end
167
+ it 'Test method #tree' do
168
+ expect(@o_key.tree).to eq(['test'])
169
+ end
170
+ it 'Test method #key_tree' do
171
+ expect(@o_key.key_tree).to eq('test')
172
+ end
173
+ end
174
+
175
+ context 'initialize with nil' do
176
+ before(:all) do
177
+ @o_key = Lorj::KeyPath.new(nil)
178
+ end
179
+ it 'Test method #length' do
180
+ expect(@o_key.length).to eq(0)
181
+ end
182
+ it 'Test method #to_s' do
183
+ expect(@o_key.to_s).to eq(nil)
184
+ end
185
+ it 'Test method #key' do
186
+ expect(@o_key.key).to eq(nil)
187
+ end
188
+ it 'Test method #key(0)' do
189
+ expect(@o_key.key(0)).to eq(nil)
190
+ end
191
+ it 'Test method #key(1)' do
192
+ expect(@o_key.key(1)).to eq(nil)
193
+ end
194
+ it 'Test method #fpath' do
195
+ expect(@o_key.fpath).to eq(nil)
196
+ end
197
+ it 'Test method #tree' do
198
+ expect(@o_key.tree).to eq([])
199
+ end
200
+ it 'Test method #key_tree' do
201
+ expect(@o_key.key_tree).to eq(nil)
202
+ end
203
+ end
78
204
  end
@@ -0,0 +1,77 @@
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
+ # require 'byebug'
19
+
20
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib/core')
21
+
22
+ require 'core_object_data'
23
+ require 'subhash'
24
+ require 'lorj_data'
25
+
26
+ describe 'Lorj::ObjectData' do
27
+ context 'initialize with internal false' do
28
+ before(:all) do
29
+ @obj_data = Lorj::ObjectData.new
30
+ @obj_data[[:key1]] = 'value1'
31
+ @obj_data[[:key2, :key22]] = 'value2'
32
+ end
33
+ it 'Test method #[]' do
34
+ expect(@obj_data[[:key1]]).to eq('value1')
35
+ expect(@obj_data[[:key2, :key22]]).to eq('value2')
36
+ end
37
+ it 'Test method #exist?' do
38
+ expect(@obj_data.exist?(:key1)).to eq(true)
39
+ expect(@obj_data.exist?([:key2, :key22])).to eq(true)
40
+ expect(@obj_data.exist?(:otherkey)).to eq(false)
41
+ end
42
+ it 'Test method #<<' do
43
+ h_hash = { :key3 => [:key31, :key32] }
44
+ @obj_data.<< h_hash
45
+ expect(@obj_data[[:key3]]).to eq([:key31, :key32])
46
+ end
47
+ it 'Test method #to_s' do
48
+ expect(@obj_data.to_s).to eq('-- Lorj::ObjectData --
49
+ hdata:
50
+ {}
51
+ key1:
52
+ value1
53
+ key2:
54
+ {:key22=>"value2"}
55
+ key3:
56
+ [:key31, :key32]
57
+ ')
58
+ end
59
+ end
60
+ context 'initialize with internal true' do
61
+ before(:all) do
62
+ @obj_data = Lorj::ObjectData.new(true)
63
+ @internal_data = Lorj::Data.new
64
+ data = [{ :name => 'toto' }]
65
+ @internal_data.set(data, :list, :name => /^t/) { |oObject| oObject }
66
+ end
67
+ it 'Test method #add' do
68
+ @obj_data.add(@internal_data)
69
+ expect(@obj_data.exist?(:list)).to eq(true)
70
+ end
71
+ it 'Test method #delete' do
72
+ deleted_data = @obj_data.delete(@internal_data)
73
+ expect(@obj_data.exist?(:list)).to eq(false)
74
+ expect(deleted_data.is_registered).to eq(false)
75
+ end
76
+ end
77
+ end
@@ -116,6 +116,7 @@ describe 'class: Lorj::Account,' do
116
116
  it "account[:data] return 'nova_local', stored only in local." do
117
117
  expect(@account[:data]).to eq(nil)
118
118
  end
119
+
119
120
  it 'account.where?(:data) return false, as account not loaded.' do
120
121
  expect(@account.where?(:data)).to equal(false)
121
122
  end
@@ -220,6 +221,72 @@ describe 'class: Lorj::Account,' do
220
221
  expect(@account.get(:keypair_name, nil,
221
222
  :name => 'account')).to eq('nova_test2')
222
223
  end
224
+
225
+ context ':credentials as section name and runtime set' do
226
+ it 'account.get(:"credentials#keypair_name") return '\
227
+ '"nova_test3"(runtime)' do
228
+ expect(@account.get(:"credentials#keypair_name")).to eq('nova_test3')
229
+ end
230
+
231
+ it 'account.get(:keypair_name, nil, :section => :credentials) '\
232
+ 'return "nova_test3"(runtime)' do
233
+ expect(@account.get(:keypair_name, nil,
234
+ :section => :credentials)).to eq('nova_test3')
235
+ end
236
+ end
237
+
238
+ context 'with section, no runtime' do
239
+ before(:all) do
240
+ @account.del(:keypair_name)
241
+ end
242
+
243
+ it 'account.get(:"credentials#keypair_name") return '\
244
+ '"nova_test2"(account)' do
245
+ expect(@account.get(:"credentials#keypair_name")).to eq('nova_test2')
246
+ end
247
+
248
+ it 'account.get(:keypair_name, nil, :section => :credentials) '\
249
+ 'return "nova_test2"(account)' do
250
+ expect(@account.get(:keypair_name, nil,
251
+ :section => :credentials)).to eq('nova_test2')
252
+ end
253
+
254
+ it 'account.get(:"test#keypair_name") return "nova_local"(local)' do
255
+ expect(@account.get(:"test#keypair_name")).to eq('nova_local')
256
+ end
257
+
258
+ it 'account.get(:keypair_name, nil, :section => :test) '\
259
+ 'return "nova_local"(local)' do
260
+ expect(@account.get(:keypair_name, nil,
261
+ :section => :test)).to eq('nova_local')
262
+ end
263
+
264
+ it 'account.where?(:"credentials#keypair_name") return %w(account local '\
265
+ 'default)' do
266
+ expect(@account.where?('credentials#keypair_name'
267
+ )).to eq(%w(account local default))
268
+ end
269
+
270
+ it 'account.where?(:"test#keypair_name") return %w(local '\
271
+ 'default)' do
272
+ expect(@account.where?('test#keypair_name'
273
+ )).to eq(%w(local default))
274
+ end
275
+ end
276
+
277
+ context 'Setting a new section, no runtime' do
278
+ it 'account.set(:"test#keypair_name", "nova_test3",'\
279
+ ':name => "account") return "nova_test3"(account)' do
280
+ expect(@account.set('test#keypair_name', 'nova_test3',
281
+ :name => 'account')).to eq('nova_test3')
282
+ end
283
+
284
+ it 'account.where?(:"test#keypair_name") return %w(account local '\
285
+ 'default)' do
286
+ expect(@account.where?('test#keypair_name'
287
+ )).to eq(%w(account local default))
288
+ end
289
+ end
223
290
  end
224
291
 
225
292
  context "Key | runtime | accounts | local | default)\n"\
@@ -78,16 +78,26 @@ YAMLDOC
78
78
  expect(@metadata.datas).to eq([:data1, :data2, :data3])
79
79
  end
80
80
 
81
- it 'first_section(:data2) returns :section1' do
82
- expect(@metadata.first_section(:data2)).to equal(:section1)
81
+ it 'first_section(:data2) returns [:section1, :data2]' do
82
+ expect(@metadata.first_section(:data2)).to eq([:section1, :data2])
83
83
  end
84
84
 
85
- it 'first_section(:data1) returns :section1' do
86
- expect(@metadata.first_section(:data1)).to equal(:section1)
85
+ it 'first_section("section2#data2") returns [:section2, :data2]' do
86
+ expect(@metadata.first_section('section2#data2')
87
+ ).to eq([:section2, :data2])
87
88
  end
88
89
 
89
- it 'first_section(:data3) returns :section3' do
90
- expect(@metadata.first_section(:data3)).to equal(:section3)
90
+ it 'first_section("section3#data2") returns [:section3, :data2]' do
91
+ expect(@metadata.first_section('section3#data2')
92
+ ).to eq([:section3, :data2])
93
+ end
94
+
95
+ it 'first_section(:data1) returns [:section1, :data1]' do
96
+ expect(@metadata.first_section(:data1)).to eq([:section1, :data1])
97
+ end
98
+
99
+ it 'first_section(:data3) returns [:section3, :data3]' do
100
+ expect(@metadata.first_section(:data3)).to eq([:section3, :data3])
91
101
  end
92
102
 
93
103
  it 'meta_exist?(:section1, :data1) returns true' do
@@ -140,7 +150,7 @@ YAMLDOC
140
150
 
141
151
  # To simplify spec code, app layer contains String values for each options
142
152
  # while controller options values are Symbol.
143
- # This helps to identify if the merge feature result.
153
+ # This helps to identify if the merge works.
144
154
  it 'define_controller_data(:section2, :data2, :option2 => :value4) works' do
145
155
  data = { :option2 => :value4 }
146
156
  expect(@metadata[:sections, :section2, :data2, :option2]).to eq('value3')
@@ -27,7 +27,7 @@ $LOAD_PATH << File.join(app_path, '..', 'lib')
27
27
  require 'lorj' # Load lorj framework
28
28
 
29
29
  describe 'Lorj::Process,' do
30
- context 'with mock initialized,' do
30
+ context 'Lorj::ProcessResource,' do
31
31
  before(:all) do
32
32
  @lorj_spec = 'lorj-spec'
33
33
  @process_path = File.expand_path(File.join(app_path, '..', @lorj_spec))
@@ -35,13 +35,11 @@ describe 'Lorj::Process,' do
35
35
 
36
36
  it 'default initialization is ok' do
37
37
  process_file = File.join(@process_path, 'process', 'mock_process.rb')
38
- controllers = { 'mock' => File.join(@process_path, 'controllers',
39
- 'mock', 'mock.rb') }
40
- default = File.join(@process_path, 'defaults.yaml')
41
- data = File.join(@process_path, 'data.yaml')
42
- process_data = Lorj::ProcessResource.new('mock', File.join(app_path,
43
- '..',
44
- @lorj_spec))
38
+ controllers = { 'mock' => File.join(@process_path, 'process', 'mock',
39
+ 'controllers', 'mock', 'mock.rb') }
40
+ default = File.join(@process_path, 'process', 'mock', 'defaults.yaml')
41
+ data = File.join(@process_path, 'process', 'mock', 'data.yaml')
42
+ process_data = Lorj::ProcessResource.new('mock', @process_path)
45
43
  expect(process_data).to be
46
44
  expect(process_data.name).to eq('mock')
47
45
  expect(process_data.process).to eq(process_file)
@@ -62,12 +60,11 @@ describe 'Lorj::Process,' do
62
60
 
63
61
  it 'accepts symbol as name, but converted.' do
64
62
  process_file = File.join(@process_path, 'process', 'mock_process.rb')
65
- controllers = { 'mock' => File.join(@process_path, 'controllers',
66
- 'mock', 'mock.rb') }
67
- default = File.join(@process_path, 'defaults.yaml')
68
- data = File.join(@process_path, 'data.yaml')
69
- process_data = Lorj::ProcessResource.new(:mock, File.join(app_path, '..',
70
- @lorj_spec))
63
+ controllers = { 'mock' => File.join(@process_path, 'process', 'mock',
64
+ 'controllers', 'mock', 'mock.rb') }
65
+ default = File.join(@process_path, 'process', 'mock', 'defaults.yaml')
66
+ data = File.join(@process_path, 'process', 'mock', 'data.yaml')
67
+ process_data = Lorj::ProcessResource.new(:mock, @process_path)
71
68
  expect(process_data).to be
72
69
  expect(process_data.name).to eq('mock')
73
70
  expect(process_data.process).to eq(process_file)
@@ -77,19 +74,48 @@ describe 'Lorj::Process,' do
77
74
  end
78
75
 
79
76
  it 'initialization with :controllers_dir is ok' do
80
- process_file = File.join(@process_path, 'process', 'mock_process.rb')
81
- controllers = { 'mock2' => File.join(@process_path, 'providers',
82
- 'mock2', 'mock2.rb') }
83
- default = File.join(@process_path, 'defaults.yaml')
84
- data = File.join(@process_path, 'data.yaml')
77
+ controllers = { 'mock2' => File.join(@process_path, 'process', 'mock',
78
+ 'providers', 'mock2', 'mock2.rb') }
79
+
85
80
  process_data = Lorj::ProcessResource.new('mock', @process_path,
86
81
  :controllers_dir => 'providers')
87
82
  expect(process_data).to be
88
83
  expect(process_data.name).to eq('mock')
89
- expect(process_data.process).to eq(process_file)
90
84
  expect(process_data.controllers).to eq(controllers)
91
- expect(process_data.defaults_file).to eq(default)
92
- expect(process_data.data_file).to eq(data)
85
+ end
86
+
87
+ it 'initialization with :controllers_path is ok' do
88
+ controller_path = File.join(@process_path, 'providers_extra')
89
+ controllers = { 'mock3' => File.join(controller_path,
90
+ 'mock3', 'mock3.rb') }
91
+ process_data = Lorj::ProcessResource.new('mock', @process_path,
92
+ :controllers_path =>
93
+ controller_path)
94
+ expect(process_data).to be
95
+ expect(process_data.controllers).to eq(controllers)
96
+ end
97
+
98
+ it 'initialization with :default_file is ok' do
99
+ defaults_file = File.join(@process_path, 'defaults.yaml')
100
+ process_data = Lorj::ProcessResource.new('mock', @process_path,
101
+ :defaults_file => defaults_file)
102
+ expect(process_data).to be
103
+ expect(process_data.defaults_file).to eq(defaults_file)
104
+ end
105
+
106
+ it 'initialization with :data_file is ok' do
107
+ data_file = File.join(@process_path, 'process', 'mock', 'data.yaml')
108
+ process_data = Lorj::ProcessResource.new('mock', @process_path,
109
+ :data_file => data_file)
110
+ expect(process_data).to be
111
+ expect(process_data.data_file).to eq(data_file)
112
+ end
113
+ end
114
+
115
+ context('Lorj.declare_process, ') do
116
+ before(:all) do
117
+ @lorj_spec = 'lorj-spec'
118
+ @process_path = File.expand_path(File.join(app_path, '..', @lorj_spec))
93
119
  end
94
120
 
95
121
  it 'can declare a module process' do
@@ -101,12 +127,17 @@ describe 'Lorj::Process,' do
101
127
  expect(Lorj.processes['mock'].class).to equal(Lorj::ProcessResource)
102
128
  end
103
129
 
104
- it 'can declare several module processes' do
130
+ it 'Lorj.declare_process, can declare several module processes' do
105
131
  expect(Lorj.declare_process('mock', @process_path)).to be
106
132
  expect(Lorj.declare_process(:mock2, @process_path)).to be
107
133
  expect(Lorj.declare_process('mock3', @process_path)).to equal(nil)
108
134
  end
109
135
 
136
+ it 'become empty, if name or process_path are incorrect' do
137
+ expect(Lorj.declare_process(nil, @process_path)).to equal(nil)
138
+ expect(Lorj.declare_process('mock', nil)).to equal(nil)
139
+ end
140
+
110
141
  it 'all kept module processes in Lorj.processes not duplicated.' do
111
142
  expect(Lorj.processes.length).to eq(2)
112
143
  expect(Lorj.processes.keys).to eq(%w(mock mock2))
@@ -0,0 +1,49 @@
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
+ # require 'rubygems'
19
+ # require 'byebug'
20
+ # require 'debugger'
21
+ # require 'bundler/setup'
22
+
23
+ app_path = File.dirname(__FILE__)
24
+
25
+ $LOAD_PATH << File.join(app_path, '..', 'lib')
26
+
27
+ require 'lorj' # Load lorj framework
28
+
29
+ describe 'Lorj::Core,' do
30
+ context 'Using lorj-spec process, ' do
31
+ process_path = File.expand_path(File.join(app_path, '..', 'lorj-spec'))
32
+ Lorj.declare_process('mock', process_path)
33
+ Lorj.declare_process('mock2', process_path,
34
+ :controllers_path => File.join(process_path,
35
+ 'providers_extra'))
36
+ end
37
+
38
+ it 'Lorj::Core.new(nil, :mock) return an error' do
39
+ expect { Lorj::Core.new(nil, :mock) }.to raise_error(Lorj::PrcError)
40
+ end
41
+ it 'Lorj::Core.new(nil, [{ :process_module => :mock}]) gets loaded.' do
42
+ expect(core = Lorj::Core.new(nil, [{ :process_module => :mock }])).to be
43
+ expect(core.config).to be
44
+ expect(core.config.layers.include?('mock')).to equal(true)
45
+ expect(core.config.layer_index('mock')).to equal(4)
46
+ expect(Lorj.data.layers.include?('mock')).to equal(true)
47
+ expect(Lorj.data.layer_index('mock')).to equal(3)
48
+ end
49
+ end