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