Fix for Ruby 1.8.6 compatibility
[merb_global.git] / spec / providers_spec.rb
blob378ef306aa29dd36cd37d050b830c7b6c334cefe
1 require 'spec_helper'
3 module TestProviders
4   include Merb::Global::Providers
5   
6   def self.providers_classes
7     @@providers_classes
8   end
9   
10   def self.providers_classes=(providers_classes)
11     @@providers_classes = providers_classes
12   end
13   
14   def self.clear
15     @@providers = {}
16     @@providers_classes = {}
17   end
18 end
20 describe Merb::Global::Providers do
21   after do
22     TestProviders.clear
23   end
24   
25   describe '.[]' do
26     it 'should lookup classes' do
27       provider = mock
28       provider_klass = mock do |klass|
29         klass.expects(:new).returns(provider)
30       end
31       TestProviders.providers_classes = {:test => provider_klass}
32       TestProviders[:test].should == provider
33     end
34     
35     it 'should load the provider' do
36       provider = 'test'
37       provider_path = 'merb_global/test_providers/test'
38       TestProviders.expects(:require).with(provider_path)
39       class TestProviders::Test; end
40       TestProviders[provider] === TestProviders::Test
41     end
43     it 'should create the provider' do
44       provider = 'test'
45       TestProviders.stubs(:require)
46       class TestProviders::Test; end
47       TestProviders::Test.expects(:new)
48       TestProviders[provider] === TestProviders::Test
49     end
50   end
51   
52   describe '.register' do
53     it 'should add the provider to hash' do
54       provider_class = mock
55       TestProviders.register(:test, provider_class)
56       TestProviders.providers_classes.should == {:test => provider_class}
57     end
58   end
59 end