spec/sinatra-mongo_spec.rb in sinatra-mongo-0.0.2 vs spec/sinatra-mongo_spec.rb in sinatra-mongo-0.1.0
- old
+ new
@@ -1,7 +1,78 @@
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
-describe "SinatraMongo" do
- it "fails" do
- fail "hey buddy, you should probably rename this file and start specing for real"
+describe "Sinatra::MongoExtension" do
+ before(:each) do
+ @app = Sinatra.new
+ @app.register Sinatra::MongoExtension
+ end
+
+ describe '#mongo' do
+ it 'creates and returns a Mongo::DB instance' do
+ @app.mongo.should be_kind_of(Mongo::DB)
+ end
+
+ it 'defaults to a db on localhost called default' do
+ @app.mongo.connection.host.should == '127.0.0.1'
+ @app.mongo.connection.port.should == 27017
+ @app.mongo.name.should == 'default'
+ end
+
+ context 'mongo_url is set' do
+ before(:each) do
+ @mongo_url = 'mongo://127.0.0.1:27017/test'
+ @app.mongo = @mongo_url
+ end
+
+ it 'creates the Mongo::DB instance with the supplied uri' do
+ @app.mongo.connection.host.should == '127.0.0.1'
+ @app.mongo.connection.port.should == 27017
+ @app.mongo.name.should == 'test'
+ end
+ end
+ end
+
+ describe '#mongo=' do
+ before(:each) do
+ @mongo_uri = 'mongo://127.0.0.1:27017/test'
+ @mongo = mock('mongo')
+ @app.stub!(:mongo).and_return(@mongo)
+ end
+
+ it 'sets the mongo_url environment variable' do
+ @app.mongo = @mongo_uri
+ @app.mongo_url.should == @mongo_uri
+ end
+
+ it 'calls the #mongo method' do
+ @app.should_receive(:mongo)
+ @app.mongo = @mongo_uri
+ end
+ end
+end
+
+describe 'registration of the extension' do
+ before(:each) do
+ @app = Sinatra.new
+ end
+
+ it 'sets the mongo_url variable' do
+ @app.register(Sinatra::MongoExtension)
+ @app.mongo_url.should == 'mongo://127.0.0.1:27017/default'
+ end
+
+ context "ENV['MONGO_URL'] is set" do
+ before(:each) do
+ @mongo_url = 'mongo://127.0.0.1:27017/via_mongo_url_env'
+ ENV['MONGO_URL'] = @mongo_url
+ @app.register(Sinatra::MongoExtension)
+ end
+ it 'sets the mongo_url variable to the value of the env variable' do
+ @app.mongo_url.should == @mongo_url
+ end
+ end
+
+ it 'calls helpers with MongoHelper' do
+ @app.should_receive(:helpers).with(Sinatra::MongoHelper)
+ @app.register(Sinatra::MongoExtension)
end
end