Skip to content

Instantly share code, notes, and snippets.

@HusseinMorsy
Forked from bcardarella/database_resetter.rb
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HusseinMorsy/3a9dfc338c95166fef23 to your computer and use it in GitHub Desktop.
Save HusseinMorsy/3a9dfc338c95166fef23 to your computer and use it in GitHub Desktop.
if Rails.env.test?
require 'active_record/fixtures'
require File.expand_path('../../test/config/geocoder.rb', __FILE__)
DatabaseCleaner.strategy = :transaction
class DatabaseResetter
def self.start
DatabaseCleaner.start
# Reload the fixtures
fixtures_path = File.join Rails.root, 'test', 'fixtures'
ActiveRecord::FixtureSet.reset_cache
Dir["#{fixtures_path}/**/*.yml"].map {|f| f[(fixtures_path.size + 1)..-5] }.each { |f_name| ActiveRecord::FixtureSet.create_fixtures(fixtures_path, f_name) }
end
def self.stop(controller)
controller.session.delete :identity_id
DatabaseCleaner.clean
end
end
end
namespace :api do
if Rails.env.test?
post '/tests' => 'tests#create'
delete '/tests' => 'tests#destroy'
end
end
require 'database_resetter'
class Api::TestsController < ApplicationController
before_action :ensure_test
layout false
def create
DatabaseResetter.start
head(:ok)
end
def destroy
DatabaseResetter.stop(self)
head(:ok)
end
private
def ensure_test
raise unless Rails.env.test?
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment