cantango-config 0.1.9.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data/README.mdown +16 -0
  2. data/VERSION +1 -1
  3. data/cantango-config.gemspec +68 -62
  4. data/lib/cantango/category.rb +18 -0
  5. data/lib/cantango/class_methods.rb +10 -0
  6. data/lib/cantango/config.rb +43 -2
  7. data/lib/cantango/{configuration → config}/ability.rb +8 -3
  8. data/lib/cantango/config/ability/engine.rb +45 -0
  9. data/lib/cantango/config/ability/modes.rb +16 -0
  10. data/lib/cantango/config/ability/modes/execution.rb +19 -0
  11. data/lib/cantango/{configuration → config}/account.rb +1 -1
  12. data/lib/cantango/{configuration → config}/accounts.rb +2 -3
  13. data/lib/cantango/{configuration → config}/adapters.rb +4 -4
  14. data/lib/cantango/{configuration → config}/autoload.rb +1 -1
  15. data/lib/cantango/{configuration → config}/categories.rb +3 -4
  16. data/lib/cantango/config/class_methods.rb +27 -0
  17. data/lib/cantango/{configuration → config}/debug.rb +1 -1
  18. data/lib/cantango/config/engines.rb +47 -0
  19. data/lib/cantango/config/engines/available.rb +19 -0
  20. data/lib/cantango/config/engines/order.rb +48 -0
  21. data/lib/cantango/{configuration → config}/factory.rb +1 -1
  22. data/lib/cantango/{configuration → config}/guest.rb +5 -6
  23. data/lib/cantango/config/helpers.rb +17 -0
  24. data/lib/cantango/{configuration → config}/hooks.rb +3 -3
  25. data/lib/cantango/{configuration → config}/localhosts.rb +4 -5
  26. data/lib/cantango/{configuration → config}/models.rb +16 -7
  27. data/lib/cantango/{configuration → config}/models/actions.rb +0 -0
  28. data/lib/cantango/{configuration → config}/models/active_record.rb +0 -0
  29. data/lib/cantango/{configuration → config}/models/data_mapper.rb +0 -0
  30. data/lib/cantango/{configuration → config}/models/generic.rb +0 -0
  31. data/lib/cantango/{configuration → config}/models/mongo.rb +0 -0
  32. data/lib/cantango/{configuration → config}/models/mongo_mapper.rb +0 -0
  33. data/lib/cantango/{configuration → config}/models/mongoid.rb +0 -0
  34. data/lib/cantango/{configuration → config}/orms.rb +2 -2
  35. data/lib/cantango/{configuration → config}/user.rb +1 -1
  36. data/lib/cantango/{configuration → config}/users.rb +2 -2
  37. data/lib/cantango/registry.rb +5 -0
  38. data/lib/cantango/{configuration/registry → registry}/base.rb +18 -4
  39. data/lib/cantango/registry/clazz.rb +92 -0
  40. data/lib/cantango/{configuration/registry → registry}/hash.rb +8 -10
  41. data/spec/cantango/category_spec.rb +21 -0
  42. data/spec/cantango/config/ability/modes/execution_spec.rb +33 -0
  43. data/spec/cantango/{configuration → config/ability}/modes_spec.rb +3 -3
  44. data/spec/cantango/{configuration → config}/ability_spec.rb +3 -3
  45. data/spec/cantango/{configuration → config}/account_spec.rb +1 -1
  46. data/spec/cantango/{configuration → config}/accounts_spec.rb +3 -3
  47. data/spec/cantango/{configuration → config}/adapters_spec.rb +1 -1
  48. data/spec/cantango/{configuration → config}/autoload_spec.rb +1 -2
  49. data/spec/cantango/{configuration → config}/categories_spec.rb +2 -10
  50. data/spec/cantango/config/class_methods_spec.rb +12 -0
  51. data/spec/cantango/{configuration → config}/debug_spec.rb +2 -7
  52. data/spec/cantango/config/engines/available_spec.rb +29 -0
  53. data/spec/cantango/{configuration → config}/engines/engine_shared.rb +0 -0
  54. data/spec/cantango/{configuration/engines_spec.rb → config/engines/order_spec.rb} +9 -54
  55. data/spec/cantango/config/engines_spec.rb +59 -0
  56. data/spec/cantango/{configuration → config}/factory_spec.rb +3 -3
  57. data/spec/cantango/{configuration → config}/guest/find_guest_default_way_spec.rb +1 -1
  58. data/spec/cantango/{configuration → config}/guest_spec.rb +2 -2
  59. data/spec/cantango/config/helpers_spec.rb +15 -0
  60. data/spec/cantango/config/localhosts_spec.rb +8 -0
  61. data/spec/cantango/{configuration → config}/models_spec.rb +10 -3
  62. data/spec/cantango/{configuration → config}/orms_spec.rb +2 -2
  63. data/spec/cantango/{configuration → config}/shared/factory_ex.rb +0 -0
  64. data/spec/cantango/{configuration → config}/user_spec.rb +2 -2
  65. data/spec/cantango/{configuration → config}/users_spec.rb +4 -4
  66. data/spec/cantango/config_spec.rb +86 -5
  67. data/spec/cantango/{configuration/registry → registry}/base_spec.rb +2 -2
  68. data/spec/cantango/{configuration/registry/candidate_spec.rb → registry/clazz_spec.rb} +2 -2
  69. data/spec/cantango/{configuration/registry → registry}/hash_spec.rb +2 -2
  70. data/spec/cantango/{configuration/shared/registry → registry/shared}/base_ex.rb +0 -0
  71. data/spec/cantango/{configuration/shared/registry → registry/shared}/clazz_ex.rb +0 -0
  72. data/spec/cantango/{configuration/shared/registry → registry/shared}/hash_ex.rb +0 -0
  73. metadata +87 -81
  74. data/lib/cantango/configuration.rb +0 -110
  75. data/lib/cantango/configuration/category.rb +0 -20
  76. data/lib/cantango/configuration/engine.rb +0 -33
  77. data/lib/cantango/configuration/engines.rb +0 -95
  78. data/lib/cantango/configuration/execution_modes.rb +0 -21
  79. data/lib/cantango/configuration/modes.rb +0 -8
  80. data/lib/cantango/configuration/registry.rb +0 -7
  81. data/lib/cantango/configuration/registry/clazz.rb +0 -94
  82. data/spec/cantango/configuration/execution_modes_spec.rb +0 -15
  83. data/spec/cantango/configuration/localhosts_spec.rb +0 -9
  84. data/spec/cantango/configuration/shared/execution_modes_ex.rb +0 -14
  85. data/spec/cantango/configuration_spec.rb +0 -112
@@ -1,10 +1,7 @@
1
- require 'singleton'
2
- require 'sugar-high/kind_of'
3
-
4
1
  module CanTango
5
- class Configuration
6
- module Registry
7
- class Hash < Base
2
+ module Registry
3
+ class Hash < Base
4
+ module InstanceMethods
8
5
  def types= *types
9
6
  raise "This is a Hash registry!"
10
7
  end
@@ -86,13 +83,14 @@ module CanTango
86
83
  def default= hash
87
84
  @default = Hashie::Mash.new hash
88
85
  end
89
-
86
+
90
87
  protected
91
-
88
+
92
89
  def hash? value
93
90
  value.is_a?(::Hash)
94
- end
91
+ end
95
92
  end
93
+ include InstanceMethods
96
94
  end
97
95
  end
98
- end
96
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe CanTango::Category do
4
+ subject { CanTango::Category.new 'Wheat', 'Barley' }
5
+
6
+ describe 'subjects' do
7
+ specify { subject.subjects.should == ['Wheat', 'Barley'] }
8
+ end
9
+
10
+ describe 'has_any? name' do
11
+ specify { subject.has_any?('Wheat').should be_true }
12
+ end
13
+
14
+ describe 'has_any? name, &block' do
15
+ specify {
16
+ subject.has_any?('Wheat') do
17
+ 1.should == 1
18
+ end
19
+ }
20
+ end
21
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ class Xaz
4
+ end
5
+
6
+ describe CanTango::Config::Ability::Modes::Execution do
7
+ subject { CanTango::Config::Ability::Modes::Execution.instance }
8
+
9
+ describe 'valid mode=' do
10
+ before do
11
+ subject.register :cache
12
+ end
13
+ specify { subject.registered.should include :cache }
14
+ end
15
+
16
+ describe 'clear! and invalid mode=' do
17
+ before do
18
+ subject.clear!
19
+ subject.register Xaz
20
+ end
21
+
22
+ specify { subject.registered.should be_empty }
23
+ end
24
+
25
+ describe 'reset!' do
26
+ before do
27
+ subject.register :a, :b
28
+ subject.reset!
29
+ end
30
+
31
+ specify { subject.registered.should == subject.default }
32
+ end
33
+ end
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/registry/clazz_ex'
2
+ require 'cantango/registry/shared/clazz_ex'
3
3
 
4
4
  class ModeA
5
5
  end
@@ -7,8 +7,8 @@ end
7
7
  class ModeB
8
8
  end
9
9
 
10
- describe CanTango::Configuration::Modes do
11
- subject { CanTango.config.modes }
10
+ describe CanTango::Config::Ability::Modes do
11
+ subject { CanTango.config.ability.modes }
12
12
 
13
13
  it_should_behave_like "Clazz Registry" do
14
14
  let(:hash1) do
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/factory_ex'
3
- require 'cantango/configuration/shared/execution_modes_ex'
2
+ require 'cantango/config/shared/factory_ex'
3
+ require 'cantango/config/ability/execution_modes_ex'
4
4
 
5
5
  class MyExecutor
6
6
  end
7
7
 
8
- describe CanTango::Configuration::Ability do
8
+ describe CanTango::Config::Ability do
9
9
  subject { CanTango.config.ability }
10
10
 
11
11
  it_should_behave_like 'Factory'
@@ -6,7 +6,7 @@ class BaseAccount
6
6
  end
7
7
 
8
8
 
9
- describe CanTango::Configuration::Account do
9
+ describe CanTango::Config::Account do
10
10
  subject { CanTango.config.account }
11
11
 
12
12
  describe 'set base class' do
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/registry/clazz_ex'
2
+ require 'cantango/registry/shared/clazz_ex'
3
3
 
4
4
  class UserAccount
5
5
  end
@@ -7,7 +7,7 @@ end
7
7
  class AdminAccount
8
8
  end
9
9
 
10
- describe CanTango::Configuration::Accounts do
10
+ describe CanTango::Config::Accounts do
11
11
  subject { CanTango.config.accounts }
12
12
 
13
13
  it_should_behave_like "Clazz Registry" do
@@ -17,6 +17,6 @@ describe CanTango::Configuration::Accounts do
17
17
  end
18
18
 
19
19
  describe 'register_account' do
20
- specify { subject.register_class(AdminAccount).registered.should include(:admin) }
20
+ specify { subject.register_account(AdminAccount).registered.should include(:admin) }
21
21
  end
22
22
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe CanTango::Configuration::Adapters do
3
+ describe CanTango::Config::Adapters do
4
4
  subject { CanTango.config.adapters }
5
5
 
6
6
  describe 'should run adapter for moneta' do
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
- require 'fixtures/models'
3
2
 
4
- describe CanTango::Configuration::Autoload do
3
+ describe CanTango::Config::Autoload do
5
4
  subject { CanTango.config.autoload }
6
5
 
7
6
  describe 'default settings' do
@@ -1,15 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/registry/hash_ex'
2
+ require 'cantango/registry/shared/hash_ex'
3
3
 
4
- describe CanTango::Configuration::Category do
5
- subject { CanTango::Configuration::Category.new }
6
- specify { subject.has_any?(:x).should_not be_true }
7
-
8
- subject { CanTango::Configuration::Category.new :a, :b }
9
- specify { subject.has_any?(:a).should be_true }
10
- end
11
-
12
- describe CanTango::Configuration::Categories do
4
+ describe CanTango::Config::Categories do
13
5
  subject { CanTango.config.categories }
14
6
 
15
7
  describe 'API' do
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ class Context
4
+ extend CanTango::Config::ClassMethods
5
+ end
6
+
7
+ # Note: This config feature is currently not used, but could potentially be of use in the future
8
+ describe CanTango::Config::ClassMethods do
9
+ subject { CanTango::Config::ClassMethods.new }
10
+
11
+ pending
12
+ end
@@ -1,13 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- class Context
4
- include CanTango::Api::Ability::User
5
- end
6
-
7
3
  # Note: This config feature is currently not used, but could potentially be of use in the future
8
- describe CanTango::Configuration::Debug do
9
- let(:context) { Context.new }
10
- subject { CanTango.config.debug }
4
+ describe CanTango::Config::Debug do
5
+ subject { CanTango.config.debug }
11
6
 
12
7
  describe 'should set debug mode :on' do
13
8
  before do
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+ require 'cantango/registry/shared/hash_ex'
3
+
4
+ class MyEngine < CanTango::Engine
5
+ end
6
+
7
+ class MyOtherEngine < CanTango::Engine
8
+ end
9
+
10
+
11
+ describe CanTango::Config::Engines do
12
+ subject { CanTango.config.engines }
13
+
14
+ def available
15
+ registered_names
16
+ end
17
+
18
+ def available? name
19
+ available.include? name.to_s
20
+ end
21
+
22
+ def all state
23
+ available.each {|engine| send(engine).set state }
24
+ end
25
+
26
+ def any? state
27
+ available.any? {|engine| send(engine).send(:"#{state}?") if respond_to?(engine) }
28
+ end
29
+ end
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/registry/hash_ex'
2
+ require 'cantango/registry/shared/hash_ex'
3
3
 
4
4
  class MyEngine < CanTango::Engine
5
5
  end
@@ -8,61 +8,23 @@ class MyOtherEngine < CanTango::Engine
8
8
  end
9
9
 
10
10
 
11
- describe CanTango::Configuration::ExecutionModes do
11
+ describe CanTango::Config::Engines do
12
12
  subject { CanTango.config.engines }
13
13
 
14
- it_should_behave_like "Hash Registry" do
15
- let(:hash1) do
16
- {:my_engine => MyEngine}
17
- end
18
-
19
- let(:hash2) do
20
- {:my_other_engine => MyOtherEngine}
21
- end
22
- end
23
-
24
- specify do
25
- lambda { subject.register :my_engine => 3 }.should raise_error
26
- end
27
-
28
- specify do
29
- lambda { subject.register :my_engine => MyEngine }.should_not raise_error
30
- end
31
-
32
- describe '#registered' do
33
- before do
34
- subject.register :my_engine => MyEngine
35
- end
36
-
37
- specify { subject.registered[:my_engine].should == MyEngine }
38
- specify { subject.registered_names.should include('my_engine') }
39
- specify { subject.available.should include('my_engine') }
40
- specify { subject.available?('my_engine').should be_true }
41
- specify { subject.available?('not_my_engine').should be_false }
42
- end
43
-
44
- let(:engines) do
45
- {:my_engine => MyEngine}.merge :my_other_engine => MyOtherEngine
46
- end
47
-
48
- before do
49
- subject.register engines
50
- end
51
-
52
- describe 'execution order' do
14
+ describe 'execution order' do
53
15
  before do
54
16
  subject.set_execution_order :my_other_engine, :engine, :my_engine, :my_other_engine
55
17
  end
56
-
18
+
57
19
  its(:execution_order) { should == ['my_other_engine', 'my_engine'] }
58
20
  end
59
-
21
+
60
22
  describe 'excute_first' do
61
23
  before do
62
24
  subject.set_execution_order :my_other_engine, :my_engine
63
25
  subject.execute_first :my_engine
64
26
  end
65
-
27
+
66
28
  its(:execution_order) { should == ['my_engine', 'my_other_engine'] }
67
29
  end
68
30
 
@@ -71,7 +33,7 @@ describe CanTango::Configuration::ExecutionModes do
71
33
  subject.set_execution_order :my_other_engine, :my_engine
72
34
  subject.execute_last :my_other_engine
73
35
  end
74
-
36
+
75
37
  its(:execution_order) { should == ['my_engine', 'my_other_engine'] }
76
38
  end
77
39
 
@@ -80,7 +42,7 @@ describe CanTango::Configuration::ExecutionModes do
80
42
  subject.set_execution_order :my_other_engine, :my_engine
81
43
  subject.execute_before :my_other_engine, :my_engine
82
44
  end
83
-
45
+
84
46
  its(:execution_order) { should == ['my_engine', 'my_other_engine'] }
85
47
  end
86
48
 
@@ -89,14 +51,7 @@ describe CanTango::Configuration::ExecutionModes do
89
51
  subject.set_execution_order :my_other_engine, :my_engine
90
52
  subject.execute_after :my_engine, :my_other_engine,
91
53
  end
92
-
54
+
93
55
  its(:execution_order) { should == ['my_engine', 'my_other_engine'] }
94
56
  end
95
-
96
- # all state
97
- # any? state
98
- # clear!
99
- # each
100
- # active? name
101
- # active
102
57
  end
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+ require 'cantango/registry/shared/hash_ex'
3
+
4
+ class MyEngine < CanTango::Engine
5
+ end
6
+
7
+ class MyOtherEngine < CanTango::Engine
8
+ end
9
+
10
+
11
+ describe CanTango::Config::Engines do
12
+ subject { CanTango.config.engines }
13
+
14
+ it_should_behave_like "Hash Registry" do
15
+ let(:hash1) do
16
+ {:my_engine => MyEngine}
17
+ end
18
+
19
+ let(:hash2) do
20
+ {:my_other_engine => MyOtherEngine}
21
+ end
22
+ end
23
+
24
+ specify do
25
+ lambda { subject.register :my_engine => 3 }.should raise_error
26
+ end
27
+
28
+ specify do
29
+ lambda { subject.register :my_engine => MyEngine }.should_not raise_error
30
+ end
31
+
32
+ describe '#registered' do
33
+ before do
34
+ subject.register :my_engine => MyEngine
35
+ end
36
+
37
+ specify { subject.registered[:my_engine].should == MyEngine }
38
+ specify { subject.registered_names.should include('my_engine') }
39
+ specify { subject.available.should include('my_engine') }
40
+ specify { subject.available?('my_engine').should be_true }
41
+ specify { subject.available?('not_my_engine').should be_false }
42
+ end
43
+
44
+ let(:engines) do
45
+ {:my_engine => MyEngine}.merge :my_other_engine => MyOtherEngine
46
+ end
47
+
48
+ before do
49
+ subject.register engines
50
+ end
51
+
52
+
53
+ # all state
54
+ # any? state
55
+ # clear!
56
+ # each
57
+ # active? name
58
+ # active
59
+ end
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/factory_ex'
2
+ require 'cantango/config/shared/factory_ex'
3
3
 
4
4
  AliasedCustomFactory = CustomFactory
5
5
 
6
6
  class MyFactory
7
- include CanTango::Configuration::Factory
7
+ include CanTango::Config::Factory
8
8
  include Singleton
9
9
 
10
10
  def default_class
@@ -22,7 +22,7 @@ class MyFactory
22
22
  end
23
23
  end
24
24
 
25
- describe CanTango::Configuration::Factory do
25
+ describe CanTango::Config::Factory do
26
26
  subject { MyFactory.instance }
27
27
 
28
28
  it_should_behave_like 'Factory'