Skip to content

Instantly share code, notes, and snippets.

@alediaferia
Created June 21, 2016 22:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alediaferia/9076a677c367254668051b6a60f74a5c to your computer and use it in GitHub Desktop.
Save alediaferia/9076a677c367254668051b6a60f74a5c to your computer and use it in GitHub Desktop.
require 'action_controller/railtie'
require 'minitest/autorun'
require 'rack/test'
class TestApp < Rails::Application
config.root = File.dirname(__FILE__)
config.session_store :cookie_store, key: 'cookie_store_key'
secrets.secret_token = 'secret_token'
secrets.secret_key_base = 'secret_key_base'
config.logger = Logger.new($stdout)
Rails.logger = config.logger
routes.draw do
get '/' => 'test#index'
post '/' => 'test#create'
end
end
class TestController < ActionController::Base
include Rails.application.routes.url_helpers
def index
@ticket = Ticket.new
render plain: '<%= form_for(@ticket) { |f| f.select :priority, Ticket.priorities.map { |key, value| [key, value] } } %>'
end
def create
@ticket = Ticket.new(ticket_params)
@ticket.save
end
protected
def ticket_params
params.require(:ticket).permit(:priority)
end
end
require 'active_record'
require 'logger'
# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :tickets, force: true do |t|
t.integer "priority"
end
end
class Ticket < ActiveRecord::Base
enum priority: { 'High': 0, 'Middle': 1, 'Low': 2 }
end
class BugTest < Minitest::Test
include Rack::Test::Methods
def test_returns_success
post '/', {ticket: {priority: '1'}}
assert last_response.ok?
end
private
def app
Rails.application
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment