Skip to content

Instantly share code, notes, and snippets.

@wikimatze
Created July 18, 2017 21:16
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 wikimatze/fc862f20217e5431126d7784e632d296 to your computer and use it in GitHub Desktop.
Save wikimatze/fc862f20217e5431126d7784e632d296 to your computer and use it in GitHub Desktop.
require 'minitest'
require "minitest/autorun"
require "minitest/focus"
require 'rake'
require 'sequel'
require 'mocha/mini_test'
require 'padrino-core'
require 'pry'
class SequelWrapper
def initialize(sequel, sequel_migrator, sequel_model)
@sequel = sequel
@sequel_migrator = sequel_migrator
@sequel_model = sequel_model
end
def up
@sequel.extension :migration
@sequel_migrator.run @sequel_model.db, 'db/migrate'
puts '<= sq:migrate:up executed'
end
end
describe "SequelWrapper" do
it "call the up method" do
Sequel.extension :migration, :core_extensions
sequel_mock = MiniTest::Mock.new
sequel_mock.expect(:extension, nil, [:migration])
sequel_model_mock = MiniTest::Mock.new
expected_db_mock = mock('Sequel::Model.db')
sequel_model_mock.expect(:db, expected_db_mock)
sequel_migrator_mock = MiniTest::Mock.new
sequel_migrator_mock.expect(:run, nil, [expected_db_mock, 'db/migrate'])
sequel_wrapper = SequelWrapper.new(sequel_mock, sequel_migrator_mock, sequel_model_mock)
assert_output(/<= sq:migrate:up executed/) { sequel_wrapper.up }
assert sequel_mock.verify
assert sequel_migrator_mock.verify
assert sequel_model_mock.verify
end
end
namespace :sq do
namespace :migrate do
task :up => :skeleton do
SequelWrapper.new(Sequel, Sequel::Migrator, Sequel::Model.db)
end
end
end
# and testing the rake task
describe "sql" do
describe "migrate" do
it "#up" do
db = Sequel::Database.new()
Rake::Task["sq:migrate:up"].invoke
db.disconnect
end
end
end
# Now I go the following sometimes the following error
sq::migrate#test_0001_#up:
NameError: uninitialized constant Sequel::Migrator
Did you mean? Sequel::Migrator
Sequel::Migration
test_sequel.rb:45:in `block (3 levels) in <main>'
/home/wm/.rvm/gems/ruby-2.4.1/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute'
/home/wm/.rvm/gems/ruby-2.4.1/gems/rake-12.0.0/lib/rake/task.rb:250:in `each'
/home/wm/.rvm/gems/ruby-2.4.1/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute'
/home/wm/.rvm/gems/ruby-2.4.1/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain'
/home/wm/.rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
/home/wm/.rvm/gems/ruby-2.4.1/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/home/wm/.rvm/gems/ruby-2.4.1/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke'
test_sequel.rb:86:in `block (3 levels) in <main>'
2 runs, 5 assertions, 0 failures, 1 errors, 0 skips
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment