-
Notifications
You must be signed in to change notification settings - Fork 21.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Minimal implementation that supports db:create SQLite replacement
- Loading branch information
Showing
4 changed files
with
74 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,14 @@ | |||
class ActiveRecord::Tasks::DatabaseTasks | |||
def self.create(configuration) | |||
if File.exist?(configuration['database']) | |||
$stderr.puts "#{configuration['database']} already exists" | |||
return | |||
end | |||
|
|||
ActiveRecord::Base.establish_connection(configuration) | |||
ActiveRecord::Base.connection | |||
rescue Exception => e | |||
$stderr.puts e, *(e.backtrace) | |||
$stderr.puts "Couldn't create database for #{configuration.inspect}" | |||
end | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,53 @@ | |||
require 'cases/helper' | |||
|
|||
module ActiveRecord | |||
class SqliteRakeTest < ActiveRecord::TestCase | |||
def setup | |||
@database = "db_create.sqlite3" | |||
@connection = stub :connection | |||
@configuration = { | |||
'adapter' => 'sqlite3', | |||
'database' => @database | |||
} | |||
|
|||
File.stubs(:exist?).returns(false) | |||
ActiveRecord::Base.stubs(:connection).returns(@connection) | |||
ActiveRecord::Base.stubs(:establish_connection).returns(true) | |||
end | |||
|
|||
def test_db_checks_database_exists | |||
File.expects(:exist?).with(@database).returns(false) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create @configuration | |||
end | |||
|
|||
def test_db_create_when_file_exists | |||
File.stubs(:exist?).returns(true) | |||
|
|||
$stderr.expects(:puts).with("#{@database} already exists") | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create @configuration | |||
end | |||
|
|||
def test_db_create_establishes_a_connection | |||
ActiveRecord::Base.expects(:establish_connection).with(@configuration) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create @configuration | |||
end | |||
|
|||
def test_db_create_returns_the_connection | |||
assert_equal ActiveRecord::Tasks::DatabaseTasks.create(@configuration), | |||
@connection | |||
end | |||
|
|||
def test_db_create_with_error_prints_message | |||
ActiveRecord::Base.stubs(:establish_connection).raises(Exception) | |||
|
|||
$stderr.stubs(:puts).returns(true) | |||
$stderr.expects(:puts). | |||
with("Couldn't create database for #{@configuration.inspect}") | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create(@configuration) | |||
end | |||
end | |||
end |