cantango-config 0.1.0
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.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +40 -0
- data/Gemfile.lock +163 -0
- data/LICENSE.txt +20 -0
- data/README.mdown +21 -0
- data/Rakefile +49 -0
- data/VERSION +1 -0
- data/cantango-config.gemspec +145 -0
- data/lib/cantango/adapter/compiler.rb +9 -0
- data/lib/cantango/adapter/moneta.rb +23 -0
- data/lib/cantango/config.rb +12 -0
- data/lib/cantango/configuration/ability.rb +14 -0
- data/lib/cantango/configuration/account.rb +23 -0
- data/lib/cantango/configuration/accounts.rb +8 -0
- data/lib/cantango/configuration/adapters.rb +24 -0
- data/lib/cantango/configuration/autoload.rb +38 -0
- data/lib/cantango/configuration/candidate_registry.rb +94 -0
- data/lib/cantango/configuration/categories.rb +57 -0
- data/lib/cantango/configuration/debug.rb +41 -0
- data/lib/cantango/configuration/engine.rb +33 -0
- data/lib/cantango/configuration/engines.rb +97 -0
- data/lib/cantango/configuration/factory.rb +59 -0
- data/lib/cantango/configuration/guest.rb +57 -0
- data/lib/cantango/configuration/hash_registry.rb +91 -0
- data/lib/cantango/configuration/hooks.rb +12 -0
- data/lib/cantango/configuration/localhosts.rb +12 -0
- data/lib/cantango/configuration/models/actions.rb +26 -0
- data/lib/cantango/configuration/models/active_record.rb +22 -0
- data/lib/cantango/configuration/models/data_mapper.rb +12 -0
- data/lib/cantango/configuration/models/generic.rb +12 -0
- data/lib/cantango/configuration/models/mongo.rb +12 -0
- data/lib/cantango/configuration/models/mongo_mapper.rb +11 -0
- data/lib/cantango/configuration/models/mongoid.rb +13 -0
- data/lib/cantango/configuration/models.rb +77 -0
- data/lib/cantango/configuration/modes.rb +21 -0
- data/lib/cantango/configuration/orms.rb +8 -0
- data/lib/cantango/configuration/registry.rb +56 -0
- data/lib/cantango/configuration/user.rb +47 -0
- data/lib/cantango/configuration/users.rb +8 -0
- data/lib/cantango/configuration.rb +99 -0
- data/spec/cantango/config_spec.rb +8 -0
- data/spec/cantango/configuration/ability_spec.rb +13 -0
- data/spec/cantango/configuration/account_spec.rb +21 -0
- data/spec/cantango/configuration/accounts_spec.rb +18 -0
- data/spec/cantango/configuration/adapters_spec.rb +30 -0
- data/spec/cantango/configuration/autoload_spec.rb +52 -0
- data/spec/cantango/configuration/candidate_registry_spec.rb +12 -0
- data/spec/cantango/configuration/categories_spec.rb +58 -0
- data/spec/cantango/configuration/debug_spec.rb +39 -0
- data/spec/cantango/configuration/engines/engine_shared.rb +22 -0
- data/spec/cantango/configuration/engines_spec.rb +102 -0
- data/spec/cantango/configuration/factory_spec.rb +18 -0
- data/spec/cantango/configuration/guest/find_guest_default_way_spec.rb +32 -0
- data/spec/cantango/configuration/guest_spec.rb +61 -0
- data/spec/cantango/configuration/hash_registry_spec.rb +22 -0
- data/spec/cantango/configuration/localhosts_spec.rb +9 -0
- data/spec/cantango/configuration/models_spec.rb +47 -0
- data/spec/cantango/configuration/orms_spec.rb +9 -0
- data/spec/cantango/configuration/registry_spec.rb +15 -0
- data/spec/cantango/configuration/shared/candidate_registry_ex.rb +47 -0
- data/spec/cantango/configuration/shared/factory_ex.rb +40 -0
- data/spec/cantango/configuration/shared/hash_registry_ex.rb +55 -0
- data/spec/cantango/configuration/shared/modes_ex.rb +14 -0
- data/spec/cantango/configuration/shared/registry_ex.rb +40 -0
- data/spec/cantango/configuration/shared/role_registry_ex.rb +22 -0
- data/spec/cantango/configuration/user_spec.rb +45 -0
- data/spec/cantango/configuration/users_spec.rb +18 -0
- data/spec/cantango/configuration_spec.rb +112 -0
- data/spec/db/database.yml +4 -0
- data/spec/factories/project.rb +6 -0
- data/spec/fixtures/models/admin.rb +2 -0
- data/spec/fixtures/models/admin_account.rb +22 -0
- data/spec/fixtures/models/items.rb +8 -0
- data/spec/fixtures/models/permission.rb +12 -0
- data/spec/fixtures/models/project.rb +2 -0
- data/spec/fixtures/models/simple_roles.rb +49 -0
- data/spec/fixtures/models/user.rb +52 -0
- data/spec/fixtures/models/user_account.rb +21 -0
- data/spec/fixtures/models.rb +2 -0
- data/spec/migrations/001_create_projects.rb +12 -0
- data/spec/spec_helper.rb +35 -0
- metadata +231 -0
| @@ -0,0 +1,102 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'cantango/configuration/shared/hash_registry_ex'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class MyEngine < CanTango::Engine
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class MyOtherEngine < CanTango::Engine
         | 
| 8 | 
            +
            end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
             | 
| 11 | 
            +
            describe CanTango::Configuration::Modes 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 | 
            +
              describe 'execution order' do    
         | 
| 53 | 
            +
                before do
         | 
| 54 | 
            +
                  subject.set_execution_order :my_other_engine, :engine, :my_engine, :my_other_engine
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
                
         | 
| 57 | 
            +
                its(:execution_order) { should == ['my_other_engine', 'my_engine'] }
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
              
         | 
| 60 | 
            +
              describe 'excute_first' do
         | 
| 61 | 
            +
                before do
         | 
| 62 | 
            +
                  subject.set_execution_order :my_other_engine, :my_engine
         | 
| 63 | 
            +
                  subject.execute_first :my_engine
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
                
         | 
| 66 | 
            +
                its(:execution_order) { should == ['my_engine', 'my_other_engine'] }
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
              describe 'execute_last' do
         | 
| 70 | 
            +
                before do
         | 
| 71 | 
            +
                  subject.set_execution_order :my_other_engine, :my_engine
         | 
| 72 | 
            +
                  subject.execute_last :my_other_engine
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
                
         | 
| 75 | 
            +
                its(:execution_order) { should == ['my_engine', 'my_other_engine'] }
         | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
              describe 'execute_before' do
         | 
| 79 | 
            +
                before do
         | 
| 80 | 
            +
                  subject.set_execution_order :my_other_engine, :my_engine
         | 
| 81 | 
            +
                  subject.execute_before :my_other_engine, :my_engine
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
                
         | 
| 84 | 
            +
                its(:execution_order) { should == ['my_engine', 'my_other_engine'] }
         | 
| 85 | 
            +
              end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
              describe 'execute_after' do
         | 
| 88 | 
            +
                before do
         | 
| 89 | 
            +
                  subject.set_execution_order :my_other_engine, :my_engine
         | 
| 90 | 
            +
                  subject.execute_after :my_engine, :my_other_engine, 
         | 
| 91 | 
            +
                end
         | 
| 92 | 
            +
                
         | 
| 93 | 
            +
                its(:execution_order) { should == ['my_engine', 'my_other_engine'] }
         | 
| 94 | 
            +
              end
         | 
| 95 | 
            +
              
         | 
| 96 | 
            +
              # all state
         | 
| 97 | 
            +
              # any? state
         | 
| 98 | 
            +
              # clear!
         | 
| 99 | 
            +
              # each
         | 
| 100 | 
            +
              # active? name
         | 
| 101 | 
            +
              # active
         | 
| 102 | 
            +
            end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'cantango/configuration/shared/factory_ex'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class MyFactory
         | 
| 5 | 
            +
              include CanTango::Configuration::Factory 
         | 
| 6 | 
            +
              include Singleton
         | 
| 7 | 
            +
            end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            describe CanTango::Configuration::Factory do
         | 
| 10 | 
            +
              subject { MyFactory.instance }
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              specify { lambda { subject.default_factory}.should raise_error }
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it_should_behave_like 'Factory' do
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
             | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class MyAccount
         | 
| 4 | 
            +
              def self.guest
         | 
| 5 | 
            +
                :guest_account
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
            end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            class MyUser
         | 
| 10 | 
            +
              def self.guest
         | 
| 11 | 
            +
                :guest
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            describe CanTango::Configuration::Guest do
         | 
| 16 | 
            +
              describe 'default settings with class methods for #guest defined' do
         | 
| 17 | 
            +
                before do
         | 
| 18 | 
            +
                  CanTango.config.user.base_class = MyUser
         | 
| 19 | 
            +
                  CanTango.config.user_account.base_class = MyAccount
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                subject { CanTango.config.guest }
         | 
| 23 | 
            +
                  its(:default_user?)     { should be_true }
         | 
| 24 | 
            +
                  its(:user)              { should == :guest }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  its(:default_account?)  { should be_true }
         | 
| 27 | 
            +
                  its(:account)           { should == :guest_account }
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
             | 
| 32 | 
            +
             | 
| @@ -0,0 +1,61 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'fixtures/models'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe CanTango::Configuration::Guest do
         | 
| 5 | 
            +
              before do
         | 
| 6 | 
            +
                CanTango.config.user.base_class = User
         | 
| 7 | 
            +
                CanTango.config.user_account.base_class = UserAccount
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              subject { CanTango.config.guest }
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              describe 'default settings' do
         | 
| 13 | 
            +
                it 'should not have defined UserAccount.guest' do
         | 
| 14 | 
            +
                  UserAccount.should_not respond_to(:guest)
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                it 'should not have defined User.guest' do
         | 
| 18 | 
            +
                  User.should_not respond_to(:guest)
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                its(:account) { should be_nil } # should be set to UserAccount.guest if defined
         | 
| 22 | 
            +
                its(:user)    { should be_nil } # should set to User.guest if defined ?
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              describe 'set user' do
         | 
| 26 | 
            +
                describe 'with obj arg' do
         | 
| 27 | 
            +
                  before :each do
         | 
| 28 | 
            +
                    subject.user = '2'
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  its(:user) { should == '2' }
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                describe 'with block arg' do
         | 
| 35 | 
            +
                  before :each do
         | 
| 36 | 
            +
                    subject.user { 2 }
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  its(:user) { should == 2 }
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                describe 'with Proc arg' do
         | 
| 43 | 
            +
                  before :each do
         | 
| 44 | 
            +
                    subject.user Proc.new { 2 }
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  its(:user) { should be_a Proc }
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              describe 'set user account' do
         | 
| 52 | 
            +
                before :each do
         | 
| 53 | 
            +
                  subject.account = '2'
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                its(:account) { should == '2' }
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
            end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
             | 
| 61 | 
            +
             | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'cantango/configuration/shared/hash_registry_ex'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class MyRegis < CanTango::Configuration::HashRegistry
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            describe MyRegis do
         | 
| 8 | 
            +
              subject { MyRegis.new }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it_should_behave_like "Hash Registry" do
         | 
| 11 | 
            +
                let(:hash1) do
         | 
| 12 | 
            +
                  {:a => 1, :b => 2}
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
                
         | 
| 15 | 
            +
                let(:hash2) do
         | 
| 16 | 
            +
                  {:c => 3}
         | 
| 17 | 
            +
                end    
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
             | 
| 22 | 
            +
             | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'cantango/configuration/shared/hash_registry_ex'
         | 
| 3 | 
            +
            require 'fixtures/models/project'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            CanTango.debug!
         | 
| 6 | 
            +
            connect_db
         | 
| 7 | 
            +
            migrate
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            describe CanTango::Configuration::Models do
         | 
| 10 | 
            +
              let(:models) { CanTango.config.models }
         | 
| 11 | 
            +
              let(:orms) { CanTango.config.orms }
         | 
| 12 | 
            +
              
         | 
| 13 | 
            +
              it_should_behave_like "Hash Registry" do
         | 
| 14 | 
            +
                subject { models.actions }
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                let(:hash1) do
         | 
| 17 | 
            +
                  {:a => 1, :b => 2}
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
                
         | 
| 20 | 
            +
                let(:hash2) do
         | 
| 21 | 
            +
                  {:c => 3}
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
              
         | 
| 25 | 
            +
              subject { models } 
         | 
| 26 | 
            +
                
         | 
| 27 | 
            +
              describe 'available_models' do
         | 
| 28 | 
            +
                before do
         | 
| 29 | 
            +
                  orms.register :active_record
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                specify { subject.available_models.should_not be_empty }
         | 
| 33 | 
            +
                specify { subject.available_models.should include('Project') }
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
              
         | 
| 36 | 
            +
              describe 'by_reg_exp' do
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              describe 'by_category' do
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              describe 'exclude' do
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              describe 'excluded' do
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'cantango/configuration/shared/role_registry_ex'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class MyRegi < CanTango::Configuration::Registry
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            describe MyRegi do
         | 
| 8 | 
            +
              subject { MyRegi.new }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it_should_behave_like "Registry" do
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
            end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
             | 
| 15 | 
            +
             | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            class A
         | 
| 2 | 
            +
            end
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class B
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            shared_examples_for 'Candidate Registry' do
         | 
| 8 | 
            +
              let(:hash1) do
         | 
| 9 | 
            +
                {:a => A, :b => B}
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              let(:hash2) do
         | 
| 13 | 
            +
                {:c => 3}
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              describe 'register' do
         | 
| 17 | 
            +
                before do
         | 
| 18 | 
            +
                  subject.register :a, A
         | 
| 19 | 
            +
                  
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
                its(:registered) { should include(:a) }
         | 
| 22 | 
            +
                specify do
         | 
| 23 | 
            +
                  lambda { subject.register :b, 3 }.should raise_error
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              describe 'append <<' do
         | 
| 28 | 
            +
                before do
         | 
| 29 | 
            +
                  subject << hash1
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
                its(:registered) { should include(*hash1.keys) }
         | 
| 32 | 
            +
                its(:registered_classes) { should include(*hash1.values) }
         | 
| 33 | 
            +
                
         | 
| 34 | 
            +
                specify do
         | 
| 35 | 
            +
                  lambda { subject << hash2 }.should raise_error
         | 
| 36 | 
            +
                end    
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              describe 'set index []=' do
         | 
| 40 | 
            +
                before do
         | 
| 41 | 
            +
                  subject.clean!
         | 
| 42 | 
            +
                  subject[:a] = B
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
                its(:registered_classes) { should include(B) }
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
            end
         | 
| 47 | 
            +
             | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            class CustomFactory
         | 
| 2 | 
            +
              attr_accessor :name, :options
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              def initialize name, options = {}
         | 
| 5 | 
            +
                @name, @options = [name, options]
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
            end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            shared_examples_for 'Factory' do
         | 
| 10 | 
            +
              describe 'configure factory' do
         | 
| 11 | 
            +
                describe 'set factory' do
         | 
| 12 | 
            +
                  describe 'using non-callable' do
         | 
| 13 | 
            +
                   it 'should not allow factory to be defined' do
         | 
| 14 | 
            +
                      lambda { subject.factory {|name, opts| CustomFactory.new name, opts} }.should raise_error
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  describe 'using lambda' do
         | 
| 19 | 
            +
                    before :each do
         | 
| 20 | 
            +
                      subject.factory lambda {|name, opts| CustomFactory.new name, opts}
         | 
| 21 | 
            +
                    end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    it 'should set it' do
         | 
| 24 | 
            +
                      subject.factory_build('hello', :works => true).name.should == 'hello'
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  describe 'using Proc' do
         | 
| 29 | 
            +
                    before :each do
         | 
| 30 | 
            +
                      subject.factory Proc.new {|name, opts| CustomFactory.new name, opts}
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    it 'should set it' do
         | 
| 34 | 
            +
                      subject.factory_build('hello', :works => true).name.should == 'hello'
         | 
| 35 | 
            +
                    end
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
            end
         | 
| 40 | 
            +
             | 
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            shared_examples_for 'Hash Registry' do
         | 
| 2 | 
            +
              describe 'default settings' do
         | 
| 3 | 
            +
                describe 'defaults' do
         | 
| 4 | 
            +
                  before do
         | 
| 5 | 
            +
                    subject.default = hash1
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  its(:default) { should include(hash1) }
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              describe 'register' do
         | 
| 13 | 
            +
                before do
         | 
| 14 | 
            +
                  subject.register hash1
         | 
| 15 | 
            +
                  subject.register hash2
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
                its(:registered) { should include(hash1) }
         | 
| 18 | 
            +
                its(:registered) { should include(hash2) }
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              describe 'append <<' do
         | 
| 22 | 
            +
                before do
         | 
| 23 | 
            +
                  subject << hash2
         | 
| 24 | 
            +
                  subject.register hash1
         | 
| 25 | 
            +
                  subject << hash2
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
                its(:registered) { should include(hash1, hash2) }
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              describe 'get index []' do
         | 
| 31 | 
            +
                before do
         | 
| 32 | 
            +
                  subject.register hash1
         | 
| 33 | 
            +
                  subject << hash2
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
                
         | 
| 36 | 
            +
                it 'should respond to :symbol keys' do
         | 
| 37 | 
            +
                  subject[:c].should == hash2[:c]
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                it "should respond to 'string' keys" do
         | 
| 41 | 
            +
                  subject['c'].should == hash2[:c]
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              describe 'set index []=' do
         | 
| 46 | 
            +
                before do
         | 
| 47 | 
            +
                  subject.clean!
         | 
| 48 | 
            +
                  subject.register hash1
         | 
| 49 | 
            +
                  subject[:d] = hash2[:c]
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
                specify { subject[:d].should == hash2[:c] }
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
            end
         | 
| 55 | 
            +
             | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            shared_examples_for 'Modes' do
         | 
| 2 | 
            +
              describe 'valid mode=' do
         | 
| 3 | 
            +
                before do
         | 
| 4 | 
            +
                  subject.mode = :cache
         | 
| 5 | 
            +
                end
         | 
| 6 | 
            +
                specify { subject.modes.should == [:cache] }
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              describe 'invalid mode=' do
         | 
| 10 | 
            +
                specify do
         | 
| 11 | 
            +
                  lambda { subject.mode = :cachy! }.should raise_error
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            shared_examples_for 'Registry' do
         | 
| 2 | 
            +
              describe 'default settings' do
         | 
| 3 | 
            +
                
         | 
| 4 | 
            +
                #its(:registered)  { should be_empty }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                it 'should register groups' do
         | 
| 7 | 
            +
                  subject.register(:a, :b)
         | 
| 8 | 
            +
                  subject.registered.should include(:a, :b)
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                it 'should set defaults' do
         | 
| 12 | 
            +
                  subject.default = :a, :b
         | 
| 13 | 
            +
                  subject.default.should include(:a, :b)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              describe 'register' do
         | 
| 18 | 
            +
                before do
         | 
| 19 | 
            +
                  subject.register :abc, :def
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
                its(:registered) { should include(:abc, :def) }
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              describe 'append <<' do
         | 
| 25 | 
            +
                before do
         | 
| 26 | 
            +
                  subject.clean!
         | 
| 27 | 
            +
                  subject.register :abc, :def
         | 
| 28 | 
            +
                  subject << :xyz
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
                its(:registered) { should include(:abc, :def, :xyz) }
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              describe 'get index []' do
         | 
| 34 | 
            +
                before do
         | 
| 35 | 
            +
                  subject.clean!
         | 
| 36 | 
            +
                  subject.register :abc, :def
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
                specify {subject[0].should == :abc }
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'cantango/configuration/shared/registry_ex'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            shared_examples_for 'Role Registry' do
         | 
| 4 | 
            +
              it_should_behave_like "Registry"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              describe 'default settings' do
         | 
| 7 | 
            +
                its(:has_method) { should == has }
         | 
| 8 | 
            +
                its(:list_method) { should == list }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                its(:default_has_method) { should be_a Symbol }
         | 
| 11 | 
            +
                its(:default_list_method) { should be_a Symbol }
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              describe "exclude" do
         | 
| 15 | 
            +
                before do
         | 
| 16 | 
            +
                  subject.exclude :admin
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                its(:excluded) { should include(:admin) }
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| 22 | 
            +
             | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'fixtures/models'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class BaseUser
         | 
| 5 | 
            +
              def initialize
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
            end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            describe CanTango::Configuration::User do
         | 
| 10 | 
            +
              before do
         | 
| 11 | 
            +
                CanTango.config.user.base_class = User
         | 
| 12 | 
            +
                CanTango.config.user_account.base_class = UserAccount
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              subject { CanTango.config.user }
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              describe 'default settings' do
         | 
| 18 | 
            +
                its(:relations)         { should_not be_empty }
         | 
| 19 | 
            +
                its(:unique_key_field)  { should == :email }
         | 
| 20 | 
            +
                its(:base_class)        { should == ::User }
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              describe 'set base class' do
         | 
| 24 | 
            +
                before do
         | 
| 25 | 
            +
                  subject.base_class = BaseUser
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                its(:base_class)        { should == BaseUser }
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              describe 'relations config' do
         | 
| 32 | 
            +
                before do
         | 
| 33 | 
            +
                  subject.relations = :mine
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
                its(:relations)         { should include(:mine) }
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              describe 'unique_key_field config' do
         | 
| 39 | 
            +
                before do
         | 
| 40 | 
            +
                  subject.unique_key_field = :username
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
                its(:unique_key_field)  { should == :username }
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
            end
         | 
| 45 | 
            +
             | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'cantango/configuration/shared/candidate_registry_ex'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class User
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class Admin
         | 
| 8 | 
            +
            end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            describe CanTango::Configuration::Users do
         | 
| 11 | 
            +
              subject { CanTango.config.users }
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              it_should_behave_like "Candidate Registry" do
         | 
| 14 | 
            +
                let(:hash1) do
         | 
| 15 | 
            +
                  {:a => User, :b => Admin}
         | 
| 16 | 
            +
                end        
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         |