micon 0.1.17 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/micon.rb +8 -3
- data/lib/micon/config.rb +5 -5
- data/lib/micon/core.rb +76 -76
- data/lib/micon/helper.rb +6 -6
- data/lib/micon/metadata.rb +31 -31
- data/lib/micon/module.rb +12 -12
- data/lib/micon/spec.rb +4 -4
- data/lib/micon/support.rb +1 -1
- data/readme.md +72 -66
- data/spec/callbacks_spec.rb +18 -18
- data/spec/config_spec.rb +5 -5
- data/spec/constants_spec.rb +18 -18
- data/spec/custom_scope_spec.rb +14 -14
- data/spec/initialization_spec.rb +16 -16
- data/spec/managed_spec.rb +6 -6
- data/spec/miscellaneous_spec.rb +19 -19
- data/spec/nested_custom_scope_spec.rb +5 -5
- data/spec/spec_helper.rb +2 -2
- data/spec/static_scope_spec.rb +22 -22
- metadata +1 -12
- data/lib/micon/rad.rb +0 -8
- data/spec/example_spec.rb +0 -171
- data/spec/example_spec/lib/components/controller.rb +0 -8
- data/spec/example_spec/lib/components/logger.production.yml +0 -1
- data/spec/example_spec/lib/components/logger.rb +0 -8
- data/spec/example_spec/lib/components/logger.yml +0 -1
- data/spec/example_spec/lib/components/request.rb +0 -2
- data/spec/example_spec/lib/components/router.rb +0 -12
- data/spec/example_spec/lib/pages_controller.rb +0 -11
- data/spec/example_spec/lib/rack_adapter.rb +0 -25
- data/spec/example_spec/lib/request.rb +0 -8
data/spec/constants_spec.rb
CHANGED
@@ -1,70 +1,70 @@
|
|
1
1
|
# require 'spec_helper'
|
2
|
-
#
|
2
|
+
#
|
3
3
|
# describe "Autoloading" do
|
4
4
|
# with_load_path "#{spec_dir}/get_constant_component/lib"
|
5
|
-
#
|
5
|
+
#
|
6
6
|
# before do
|
7
7
|
# self.micon = Micon::Core.new
|
8
8
|
# end
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# after do
|
11
11
|
# remove_constants :TheRouter, :TheRad, :TheController, :SomeModule
|
12
12
|
# end
|
13
|
-
#
|
13
|
+
#
|
14
14
|
# describe "get_constant_component" do
|
15
15
|
# it "should autoload components" do
|
16
16
|
# micon.get_constant_component(:TheController).should == "TheController"
|
17
17
|
# end
|
18
|
-
#
|
18
|
+
#
|
19
19
|
# it "should not raise error if component not defined" do
|
20
20
|
# micon.get_constant_component(:TheValue).should == nil
|
21
21
|
# micon.register(:TheValue, constant: true){"TheValue"}
|
22
22
|
# micon.get_constant_component(:TheValue).should == "TheValue"
|
23
23
|
# end
|
24
|
-
#
|
24
|
+
#
|
25
25
|
# it "should get constants only" do
|
26
26
|
# micon.register(:TheController){"TheController"}
|
27
27
|
# micon.get_constant_component(:TheController).should == nil
|
28
|
-
#
|
28
|
+
#
|
29
29
|
# micon.register(:TheController, constant: true){"TheController"}
|
30
30
|
# micon.get_constant_component(:TheController).should == "TheController"
|
31
31
|
# end
|
32
32
|
# end
|
33
|
-
#
|
33
|
+
#
|
34
34
|
# it 'validation' do
|
35
35
|
# -> {micon.register 'TheController', constant: true}.should raise_error(/symbol/)
|
36
36
|
# -> {micon.register 'TheController'.to_sym, constant: true, scope: :custom}.should raise_error(/scope/)
|
37
37
|
# end
|
38
|
-
#
|
38
|
+
#
|
39
39
|
# it "should use constants as components" do
|
40
40
|
# -> {::TheRouter}.should raise_error(/uninitialized constant/)
|
41
|
-
#
|
41
|
+
#
|
42
42
|
# micon.register :TheRouter, constant: true do
|
43
43
|
# "TheRouter"
|
44
|
-
# end
|
45
|
-
#
|
44
|
+
# end
|
45
|
+
#
|
46
46
|
# module ::TheRad
|
47
47
|
# TheRouter.should == 'TheRouter'
|
48
48
|
# end
|
49
49
|
# ::TheRouter.should == 'TheRouter'
|
50
50
|
# micon[:TheRouter].should == 'TheRouter'
|
51
51
|
# end
|
52
|
-
#
|
52
|
+
#
|
53
53
|
# it "should support nested constants" do
|
54
|
-
# module ::TheRad; end
|
54
|
+
# module ::TheRad; end
|
55
55
|
# -> {::TheRad::TheView}.should raise_error(/uninitialized constant/)
|
56
|
-
#
|
56
|
+
#
|
57
57
|
# micon.register 'TheRad::TheView'.to_sym, constant: true do
|
58
58
|
# 'TheRad::TheView'
|
59
|
-
# end
|
60
|
-
#
|
59
|
+
# end
|
60
|
+
#
|
61
61
|
# module ::SomeModule
|
62
62
|
# ::TheRad::TheView.should == 'TheRad::TheView'
|
63
63
|
# end
|
64
64
|
# ::TheRad::TheView.should == 'TheRad::TheView'
|
65
65
|
# micon['TheRad::TheView'.to_sym].should == 'TheRad::TheView'
|
66
66
|
# end
|
67
|
-
#
|
67
|
+
#
|
68
68
|
# it "should check if constant is already defined" do
|
69
69
|
# micon.register :TheRouter, constant: true do
|
70
70
|
# class ::TheRouter; end
|
data/spec/custom_scope_spec.rb
CHANGED
@@ -4,9 +4,9 @@ describe "Custom Scope" do
|
|
4
4
|
before do
|
5
5
|
self.micon = Micon::Core.new
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
it "activate" do
|
9
|
-
container = {}
|
9
|
+
container = {}
|
10
10
|
micon.should_not be_active(:custom)
|
11
11
|
micon.activate :custom, container
|
12
12
|
micon.should be_active(:custom)
|
@@ -15,59 +15,59 @@ describe "Custom Scope" do
|
|
15
15
|
|
16
16
|
micon.deactivate :custom
|
17
17
|
-> {micon.deactivate :custom}.should raise_error(/not active/)
|
18
|
-
|
18
|
+
|
19
19
|
micon.should_not be_active(:custom)
|
20
20
|
micon.activate :custom, container do
|
21
21
|
micon.should be_active(:custom)
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it "check" do
|
26
26
|
micon.register(:value, scope: :custom){"The Object"}
|
27
27
|
-> {micon[:value]}.should raise_error(/not started/)
|
28
28
|
-> {micon[:value] = 'value'}.should raise_error(/not started/)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "get" do
|
32
32
|
micon.register(:value, scope: :custom){"The Object"}
|
33
33
|
container, the_object = {}, nil
|
34
|
-
|
34
|
+
|
35
35
|
micon.activate :custom, container do
|
36
36
|
micon[:value].should == "The Object"
|
37
37
|
the_object = micon[:value]
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
micon.activate :custom, {} do
|
41
41
|
micon[:value].object_id.should_not == the_object.object_id
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
micon.activate :custom, container do
|
45
45
|
micon[:value].object_id.should == the_object.object_id
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
container.size.should == 1
|
49
49
|
container[:value].should == the_object
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
it "set" do
|
53
53
|
micon.register(:value, scope: :custom){"The Object"}
|
54
54
|
container = {}
|
55
|
-
|
55
|
+
|
56
56
|
micon.activate :custom, container do
|
57
57
|
micon[:value].should == "The Object"
|
58
58
|
micon[:value] = "Another Object"
|
59
59
|
the_object = micon[:value]
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
micon.activate :custom, {} do
|
63
63
|
micon[:value].should == "The Object"
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
micon.activate :custom, container do
|
67
67
|
micon[:value].should == "Another Object"
|
68
68
|
end
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
it "scope should return block value (from error)" do
|
72
72
|
micon.activate(:custom, {}){'value'}.should == 'value'
|
73
73
|
end
|
data/spec/initialization_spec.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "Initialization" do
|
3
|
+
describe "Initialization" do
|
4
4
|
after do
|
5
5
|
remove_constants :TheRouter
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
it "clone" do
|
9
9
|
m = Micon::Core.new
|
10
10
|
m.initialize!
|
11
|
-
|
11
|
+
|
12
12
|
m.register(:the_value){'the_value'}
|
13
13
|
m[:the_value]
|
14
|
-
|
14
|
+
|
15
15
|
another = m.clone
|
16
16
|
another.metadata.should include(:the_value)
|
17
17
|
another.instance_variable_get('@registry').should include(:the_value)
|
18
18
|
another.instance_variable_get('@application').should include(:the_value)
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
it "initialize! should set caller as global, deinitialize! should remove it" do
|
22
22
|
m = Micon::Core.new
|
23
23
|
m.initialize!
|
@@ -26,44 +26,44 @@ describe "Initialization" do
|
|
26
26
|
m.deinitialize!
|
27
27
|
Object.const_defined?(:MICON).should be_false
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
it "should support isolation" do
|
31
31
|
m1 = Micon::Core.new
|
32
32
|
m1.initialize!
|
33
|
-
|
33
|
+
|
34
34
|
m1.register(:first){'first'}
|
35
35
|
m1.first.should == 'first'
|
36
|
-
|
36
|
+
|
37
37
|
m1.deinitialize!
|
38
|
-
|
38
|
+
|
39
39
|
# m2
|
40
40
|
m2 = m1.clone
|
41
41
|
m2.initialize!
|
42
|
-
|
42
|
+
|
43
43
|
m2.first.should == 'first'
|
44
44
|
m2.register(:second){'second'}
|
45
45
|
m2.second.should == 'second'
|
46
46
|
m2.deinitialize!
|
47
|
-
|
47
|
+
|
48
48
|
# m1 shouldn't have any of m2 stuff
|
49
49
|
m1.initialize!
|
50
50
|
m1.first.should == 'first'
|
51
51
|
m1.metadata.should_not include(:second)
|
52
52
|
m1.include? :second
|
53
|
-
m1.should_not include(:second)
|
53
|
+
m1.should_not include(:second)
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
# describe "constants" do
|
57
57
|
# it "deinitialize! should delete all defined constants" do
|
58
58
|
# m = Micon::Core.new
|
59
59
|
# m.initialize!
|
60
|
-
#
|
60
|
+
#
|
61
61
|
# m.register(:TheRouter, constant: true){'TheRouter'}
|
62
62
|
# ::TheRouter.should == 'TheRouter'
|
63
|
-
#
|
63
|
+
#
|
64
64
|
# m.deinitialize!
|
65
65
|
# Object.const_defined?(:TheRouter).should be_false
|
66
|
-
#
|
66
|
+
#
|
67
67
|
# m.initialize!
|
68
68
|
# ::TheRouter.should == 'TheRouter'
|
69
69
|
# end
|
data/spec/managed_spec.rb
CHANGED
@@ -3,17 +3,17 @@ require 'spec_helper'
|
|
3
3
|
describe "Managed" do
|
4
4
|
before :all do
|
5
5
|
self.micon = Micon::Core.new
|
6
|
-
|
7
|
-
class ManagedObject
|
6
|
+
|
7
|
+
class ManagedObject
|
8
8
|
register_as :managed_object
|
9
9
|
inject object: :object_key
|
10
10
|
|
11
|
-
class << self
|
11
|
+
class << self
|
12
12
|
inject object: :object_key
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
before do
|
18
18
|
micon.clear
|
19
19
|
end
|
@@ -33,7 +33,7 @@ describe "Managed" do
|
|
33
33
|
o = ManagedObject.new
|
34
34
|
o.object.should == the_object
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
it "outjection" do
|
38
38
|
the_object = "The Object"
|
39
39
|
micon.register(:object_key)
|
@@ -42,7 +42,7 @@ describe "Managed" do
|
|
42
42
|
ManagedObject.object = the_object
|
43
43
|
ManagedObject.object.should == the_object
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
it "empty?" do
|
47
47
|
micon.should be_empty
|
48
48
|
micon[:managed_object]
|
data/spec/miscellaneous_spec.rb
CHANGED
@@ -1,24 +1,24 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Miscellaneous" do
|
4
|
-
with_load_path "#{spec_dir}/autoload/lib"
|
5
|
-
|
6
|
-
before{self.micon = Micon::Core.new}
|
4
|
+
with_load_path "#{spec_dir}/autoload/lib"
|
5
|
+
|
6
|
+
before{self.micon = Micon::Core.new}
|
7
7
|
after{remove_constants :TheRouter, :TheRad}
|
8
|
-
|
9
|
-
describe "autoloading" do
|
8
|
+
|
9
|
+
describe "autoloading" do
|
10
10
|
it "should autoload component definition" do
|
11
11
|
micon[:some_value].should == "some_value"
|
12
12
|
end
|
13
|
-
|
14
|
-
# it 'should autoload component - constants (and nested constants)' do
|
13
|
+
|
14
|
+
# it 'should autoload component - constants (and nested constants)' do
|
15
15
|
# TheRouter.should == "TheRouter"
|
16
16
|
# module ::TheRad; end
|
17
17
|
# TheRad::TheView.should == "TheView"
|
18
18
|
# end
|
19
19
|
end
|
20
|
-
|
21
|
-
describe "complex circullar dependencies" do
|
20
|
+
|
21
|
+
describe "complex circullar dependencies" do
|
22
22
|
it "should not initialize twice (from error)" do
|
23
23
|
micon.register :kit do
|
24
24
|
micon[:kit]
|
@@ -26,7 +26,7 @@ describe "Miscellaneous" do
|
|
26
26
|
end
|
27
27
|
lambda{micon[:kit]}.should raise_error(/component :kit used before it's initialization is finished/)
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
it "should not initialize twice if called from dependency (from error)" do
|
31
31
|
micon.register :environment do
|
32
32
|
micon[:router]
|
@@ -39,7 +39,7 @@ describe "Miscellaneous" do
|
|
39
39
|
|
40
40
|
-> {micon[:router]}.should raise_error(/component .* used before it's initialization is finished/)
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
it "should allow to use circullar dependency in :after callback" do
|
44
44
|
check = mock
|
45
45
|
check.should_receive(:initialized).once
|
@@ -52,27 +52,27 @@ describe "Miscellaneous" do
|
|
52
52
|
end
|
53
53
|
micon[:kit].should == 'kit'
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
it "should allow circullar dependencies in :after callback" do
|
57
57
|
micon.register :environment do
|
58
58
|
'environment'
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
micon.register :router, depends_on: :environment do
|
62
62
|
'router'
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
micon.after :environment do
|
66
66
|
micon[:router]
|
67
67
|
end
|
68
|
-
|
69
|
-
micon[:router]
|
68
|
+
|
69
|
+
micon[:router]
|
70
70
|
end
|
71
|
-
end
|
72
|
-
|
71
|
+
end
|
72
|
+
|
73
73
|
it "helper method generation" do
|
74
74
|
micon.register :router
|
75
|
-
|
75
|
+
|
76
76
|
micon.router?.should be_false
|
77
77
|
micon.router = 'router'
|
78
78
|
micon.router?.should be_true
|
@@ -4,25 +4,25 @@ describe "Nested custom scope" do
|
|
4
4
|
before do
|
5
5
|
self.micon = Micon::Core.new
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
it "with block" do
|
9
9
|
micon.register :value, scope: :custom
|
10
|
-
|
10
|
+
|
11
11
|
custom_a = {}
|
12
12
|
micon.activate :custom, custom_a do
|
13
13
|
micon[:value] = 'value a'
|
14
|
-
|
14
|
+
|
15
15
|
custom_b = {}
|
16
16
|
micon.activate :custom, custom_b do
|
17
17
|
micon.should_not include(:value)
|
18
18
|
micon[:value] = 'value b'
|
19
19
|
micon[:value].should == 'value b'
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
micon[:value].should == 'value a'
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it "should not support nested scopes without block" do
|
27
27
|
micon.activate :custom, {}
|
28
28
|
-> {micon.activate :custom, {}}.should raise_error(/active/)
|
data/spec/spec_helper.rb
CHANGED
data/spec/static_scope_spec.rb
CHANGED
@@ -1,39 +1,39 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "Application and Instance scopes" do
|
3
|
+
describe "Application and Instance scopes" do
|
4
4
|
before{self.micon = Micon::Core.new}
|
5
|
-
|
6
|
-
it "dependencies" do
|
5
|
+
|
6
|
+
it "dependencies" do
|
7
7
|
micon.register(:another_object, depends_on: :the_object){"another_object"}
|
8
8
|
-> {micon[:another_object]}.should raise_error(/the_object.*not managed/)
|
9
9
|
micon.register(:the_object){"the_object"}
|
10
10
|
micon[:another_object]
|
11
11
|
end
|
12
|
-
|
13
|
-
it "instance scope" do
|
12
|
+
|
13
|
+
it "instance scope" do
|
14
14
|
micon.register(:value, scope: :instance){"The Object"}
|
15
|
-
|
15
|
+
|
16
16
|
micon[:value].should == "The Object"
|
17
17
|
micon[:value].object_id.should_not == micon[:value].object_id
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
it "application scope" do
|
21
21
|
micon.register(:value){"The Object"}
|
22
|
-
|
22
|
+
|
23
23
|
micon[:value].should == "The Object"
|
24
24
|
micon[:value].object_id.should == micon[:value].object_id
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
it "should not allow to return nill in initializer" do
|
28
28
|
micon.register(:value){nil}
|
29
29
|
-> {micon[:value]}.should raise_error(/returns nill/)
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
it "should not allow to register component without initializer but shouldn't allow to instantiate it" do
|
33
33
|
micon.register :value
|
34
34
|
-> {micon[:value]}.should raise_error(/no initializer/)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
it "should not allow to assign nill as component" do
|
38
38
|
micon.register :value
|
39
39
|
-> {micon[:value] = nil}.should raise_error(/can't assign nill/)
|
@@ -49,33 +49,33 @@ describe "Application and Instance scopes" do
|
|
49
49
|
micon[:value] = the_object
|
50
50
|
micon[:value].object_id.should == the_object.object_id
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
it "cycle reference" do
|
54
54
|
class CycleB; end
|
55
|
-
|
56
|
-
class CycleA
|
55
|
+
|
56
|
+
class CycleA
|
57
57
|
register_as :cycle_a
|
58
58
|
inject b: :cycle_b
|
59
59
|
end
|
60
|
-
|
61
|
-
class CycleB
|
60
|
+
|
61
|
+
class CycleB
|
62
62
|
register_as :cycle_b
|
63
63
|
inject a: :cycle_a
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
a = micon[:cycle_a]
|
67
67
|
b = micon[:cycle_b]
|
68
68
|
a.b.equal?(b).should be_true
|
69
69
|
b.a.equal?(a).should be_true
|
70
|
-
end
|
71
|
-
|
72
|
-
it "unregister" do
|
70
|
+
end
|
71
|
+
|
72
|
+
it "unregister" do
|
73
73
|
micon.register(:value){"The Object"}
|
74
74
|
micon[:value].should == "The Object"
|
75
|
-
|
75
|
+
|
76
76
|
micon.unregister :value
|
77
77
|
-> {micon[:value]}.should raise_error(/component not managed/)
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
it 'delete'
|
81
81
|
end
|