Skip to content

Commit

Permalink
Add database connection helpers for test setup
Browse files Browse the repository at this point in the history
  • Loading branch information
mcordell committed Jun 23, 2015
1 parent e785ed4 commit d15e817
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 1 deletion.
12 changes: 11 additions & 1 deletion Rakefile
Original file line number Diff line number Diff line change
@@ -1,2 +1,12 @@
require "bundler/gem_tasks"
require 'bundler/gem_tasks'
require_relative './spec/database'

namespace :db do
task :setup do
Database.setup
end

task :reset do
Database.reset
end
end
57 changes: 57 additions & 0 deletions spec/database.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
require 'yaml'
require 'active_record'

class DatabaseAlreadyExists < StandardError; end

class Database
class << self
def setup
setup_config
begin
ActiveRecord::Tasks::PostgreSQLDatabaseTasks.new(configuration).create
rescue DatabaseAlreadyExists
$stderr.puts "#{configuration['database']} already exists"
end
end

def reset
setup_config
connection = ActiveRecord::Base.connection
connection.drop_table(:users) if connection.table_exists?(:users)
connection.create_table 'users', force: :cascade do |t|
t.string 'email', default: '', null: false
t.string 'encrypted_password', default: '', null: false
t.string 'reset_password_token'
t.datetime 'reset_password_sent_at'
t.datetime 'remember_created_at'
t.integer 'sign_in_count', default: 0, null: false
t.datetime 'current_sign_in_at'
t.datetime 'last_sign_in_at'
t.string 'current_sign_in_ip'
t.string 'last_sign_in_ip'
t.datetime 'created_at'
t.datetime 'updated_at'
t.string 'provider', default: '', null: false
t.string 'uid', default: '', null: false
t.text 'tokens'
end
end

def establish_connection
setup_config
ActiveRecord::Base.establish_connection(
ActiveRecord::Base.configurations[:test])
end

private

def setup_config
configuration = config('test')
ActiveRecord::Base.configurations[:test] = configuration
end

def config(env)
YAML.load_file(File.expand_path('../database.yml', __FILE__))[env]
end
end
end
6 changes: 6 additions & 0 deletions spec/database.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
test:
adapter: postgresql
database: gta_test
pool: 5
timeout: 5000
host: localhost
22 changes: 22 additions & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,2 +1,24 @@
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
require 'grape_token_auth'
require 'airborne'
require 'grape'
require 'pry'
require 'active_record'
require 'factory_girl'
require 'database_cleaner'
require_relative './database'

Database.establish_connection

RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end

config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end
end

0 comments on commit d15e817

Please sign in to comment.