diff options
-rw-r--r-- | lib/puppet/rails.rb | 12 | ||||
-rw-r--r-- | spec/unit/rails.rb | 94 |
2 files changed, 102 insertions, 4 deletions
diff --git a/lib/puppet/rails.rb b/lib/puppet/rails.rb index bdb3a3cdc..2af41f9f6 100644 --- a/lib/puppet/rails.rb +++ b/lib/puppet/rails.rb @@ -35,9 +35,11 @@ module Puppet::Rails # The arguments for initializing the database connection. def self.database_arguments - args = {:adapter => Puppet[:dbadapter], :log_level => Puppet[:rails_loglevel]} + adapter = Puppet[:dbadapter] + + args = {:adapter => adapter, :log_level => Puppet[:rails_loglevel]} - case Puppet[:dbadapter] + case adapter when "sqlite3": args[:dbfile] = Puppet[:dblocation] when "mysql", "postgresql": @@ -45,9 +47,11 @@ module Puppet::Rails args[:username] = Puppet[:dbuser] unless Puppet[:dbuser].empty? args[:password] = Puppet[:dbpassword] unless Puppet[:dbpassword].empty? args[:database] = Puppet[:dbname] - args[:args] = Puppet[:dbsocket] unless Puppet[:dbsocket] == "" + + socket = Puppet[:dbsocket] + args[:socket] = socket unless socket.empty? else - raise ArgumentError, "Invalid db adapter %s" % Puppet[:dbadapter] + raise ArgumentError, "Invalid db adapter %s" % adapter end args end diff --git a/spec/unit/rails.rb b/spec/unit/rails.rb new file mode 100644 index 000000000..426479fce --- /dev/null +++ b/spec/unit/rails.rb @@ -0,0 +1,94 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../spec_helper' +require 'puppet/rails' + +describe Puppet::Rails, "when initializing any connection" do + it "should use settings" do + Puppet.settings.expects(:use).with(:main, :rails, :puppetmasterd) + + Puppet::Rails.connect + end + + it "should set up a logger" do + ActiveRecord::Base.expects(:logger=) + + Puppet::Rails.connect + end + + it "should set the log level" + + it "should set ActiveRecord::Base.allow_concurrency" do + ActiveRecord::Base.expects(:allow_concurrency=).with(true) + + Puppet::Rails.connect + end + + it "should call ActiveRecord::Base.verify_active_connections!" do + ActiveRecord::Base.expects(:verify_active_connections!) + + Puppet::Rails.connect + end + + it "should call ActiveRecord::Base.establish_connection with database_arguments" do + Puppet::Rails.expects(:database_arguments) + ActiveRecord::Base.expects(:establish_connection) + + Puppet::Rails.connect + end +end + +describe Puppet::Rails, "when initializing a sqlite3 connection" do + it "should provide the adapter, log_level, and dbfile arguments" do + Puppet.settings.expects(:value).with(:dbadapter).returns("sqlite3") + Puppet.settings.expects(:value).with(:rails_loglevel).returns("testlevel") + Puppet.settings.expects(:value).with(:dblocation).returns("testlocation") + + Puppet::Rails.database_arguments.should == { + :adapter => "sqlite3", + :log_level => "testlevel", + :dbfile => "testlocation" + } + end +end + +describe Puppet::Rails, "when initializing a mysql or postgresql connection" do + it "should provide the adapter, log_level, and host, username, password, and database arguments" do + Puppet.settings.expects(:value).with(:dbadapter).returns("mysql") + Puppet.settings.expects(:value).with(:rails_loglevel).returns("testlevel") + Puppet.settings.expects(:value).with(:dbserver).returns("testserver") + Puppet.settings.expects(:value).with(:dbuser).returns("testuser") + Puppet.settings.expects(:value).with(:dbpassword).returns("testpassword") + Puppet.settings.expects(:value).with(:dbname).returns("testname") + Puppet.settings.expects(:value).with(:dbsocket).returns("") + + Puppet::Rails.database_arguments.should == { + :adapter => "mysql", + :log_level => "testlevel", + :host => "testserver", + :username => "testuser", + :password => "testpassword", + :database => "testname" + } + end + + it "should provide the adapter, log_level, and host, username, password, database, and socket arguments" do + Puppet.settings.expects(:value).with(:dbadapter).returns("mysql") + Puppet.settings.expects(:value).with(:rails_loglevel).returns("testlevel") + Puppet.settings.expects(:value).with(:dbserver).returns("testserver") + Puppet.settings.expects(:value).with(:dbuser).returns("testuser") + Puppet.settings.expects(:value).with(:dbpassword).returns("testpassword") + Puppet.settings.expects(:value).with(:dbname).returns("testname") + Puppet.settings.expects(:value).with(:dbsocket).returns("testsocket") + + Puppet::Rails.database_arguments.should == { + :adapter => "mysql", + :log_level => "testlevel", + :host => "testserver", + :username => "testuser", + :password => "testpassword", + :database => "testname", + :socket => "testsocket" + } + end +end
\ No newline at end of file |