Tweaks to the Sinatra extension helper to make it more in line with the Sinatra guidelines for writing extensions
This commit is contained in:
parent
e81d1d435b
commit
6ec14d7695
|
@ -69,7 +69,7 @@ If you're using the modular [Sinatra::Base](http://www.sinatrarb.com/intro.html#
|
|||
require 'sinatra/base'
|
||||
|
||||
class BlehApp < Sinatra::Base
|
||||
register PaperTrail::Sinatra
|
||||
register Sinatra::PaperTrail
|
||||
end
|
||||
```
|
||||
|
||||
|
|
|
@ -6,6 +6,10 @@ require 'paper_trail/cleaner'
|
|||
Dir[File.join(File.dirname(__FILE__), 'paper_trail', 'frameworks', '*.rb')].each { |file| require file }
|
||||
Dir[File.join(File.dirname(__FILE__), 'paper_trail', 'serializers', '*.rb')].each { |file| require file }
|
||||
|
||||
# Require all frameworks
|
||||
# require 'paper_trail/frameworks/rails'
|
||||
# require 'paper_trail/frameworks/sinatra' if defined?(Sinatra)
|
||||
|
||||
# PaperTrail's module methods can be called in both models and controllers.
|
||||
module PaperTrail
|
||||
extend PaperTrail::Cleaner
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
module PaperTrail
|
||||
module Sinatra
|
||||
module Sinatra
|
||||
module PaperTrail
|
||||
|
||||
# Register this module inside your Sinatra application to gain access to controller-level methods used by PaperTrail
|
||||
def self.registered(app)
|
||||
app.helpers PaperTrail::Sinatra
|
||||
app.helpers Sinatra::PaperTrail
|
||||
app.before { set_paper_trail_whodunnit }
|
||||
end
|
||||
|
||||
|
@ -26,10 +26,6 @@ module PaperTrail
|
|||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
if defined?(Sinatra)
|
||||
module Sinatra
|
||||
register PaperTrail::Sinatra
|
||||
end
|
||||
register Sinatra::PaperTrail if defined?(register)
|
||||
end
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
require 'test_helper'
|
||||
require 'sinatra/base'
|
||||
|
||||
# --- Tests for modular `Sinatra::Base` style ----
|
||||
class BaseApp < Sinatra::Base
|
||||
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => File.expand_path('../../dummy/db/test.sqlite3', __FILE__))
|
||||
register Sinatra::PaperTrail
|
||||
|
||||
get '/test' do
|
||||
Widget.create!(:name => 'foo')
|
||||
'Hello'
|
||||
end
|
||||
|
||||
def current_user
|
||||
'foobar'
|
||||
end
|
||||
end
|
||||
|
||||
class ModularSinatraTest < ActiveSupport::TestCase
|
||||
include Rack::Test::Methods
|
||||
|
||||
def app
|
||||
@app ||= BaseApp
|
||||
end
|
||||
|
||||
test 'baseline' do
|
||||
assert_nil Widget.first
|
||||
assert_nil Widget.create.versions.first.whodunnit
|
||||
end
|
||||
|
||||
context "`PaperTrail::Sinatra` in a `Sinatra::Base` application" do
|
||||
|
||||
should "sets the `user_for_paper_trail` from the `current_user` method" do
|
||||
get '/test'
|
||||
assert_equal 'Hello', last_response.body
|
||||
widget = Widget.first
|
||||
assert_not_nil widget
|
||||
assert_equal 1, widget.versions.size
|
||||
assert_equal 'foobar', widget.versions.first.whodunnit
|
||||
end
|
||||
|
||||
end
|
||||
end
|
|
@ -1,62 +1,23 @@
|
|||
require 'test_helper'
|
||||
require 'sinatra/base'
|
||||
|
||||
# --- Tests for modular `Sinatra::Base` style ----
|
||||
class BaseApp < Sinatra::Base
|
||||
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => File.expand_path('../../dummy/db/test.sqlite3', __FILE__))
|
||||
register PaperTrail::Sinatra
|
||||
|
||||
get '/test' do
|
||||
w = Widget.create!(:name => 'foo')
|
||||
'Hello'
|
||||
end
|
||||
|
||||
def current_user
|
||||
'foobar'
|
||||
end
|
||||
end
|
||||
|
||||
class PaperTrailModularSinatraTest < ActiveSupport::TestCase
|
||||
include Rack::Test::Methods
|
||||
|
||||
def app
|
||||
@app ||= BaseApp
|
||||
end
|
||||
|
||||
test 'baseline' do
|
||||
assert_nil Widget.first
|
||||
assert_nil Widget.create.versions.first.whodunnit
|
||||
end
|
||||
|
||||
context "`PaperTrail::Sinatra` in a `Sinatra::Base` application" do
|
||||
|
||||
should "sets the `user_for_paper_trail` from the `current_user` method" do
|
||||
get '/test'
|
||||
assert_equal 'Hello', last_response.body
|
||||
widget = Widget.first
|
||||
assert_not_nil widget
|
||||
assert_equal 1, widget.versions.size
|
||||
assert_equal 'foobar', widget.versions.first.whodunnit
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
require 'sinatra'
|
||||
|
||||
# --- Tests for non-modular `Sinatra::Application` style ----
|
||||
class Sinatra::Application
|
||||
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => File.expand_path('../../dummy/db/test.sqlite3', __FILE__))
|
||||
register Sinatra::PaperTrail # we shouldn't actually need this line if I'm not mistaken but the tests seem to fail without it ATM
|
||||
|
||||
get '/test' do
|
||||
w = Widget.create!(:name => 'foo')
|
||||
'Hello'
|
||||
Widget.create!(:name => 'foo')
|
||||
'Hai'
|
||||
end
|
||||
|
||||
def current_user
|
||||
'raboof'
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class PaperTrailSinatraTest < ActiveSupport::TestCase
|
||||
class SinatraTest < ActiveSupport::TestCase
|
||||
include Rack::Test::Methods
|
||||
|
||||
def app
|
||||
|
@ -70,13 +31,9 @@ class PaperTrailSinatraTest < ActiveSupport::TestCase
|
|||
|
||||
context "`PaperTrail::Sinatra` in a `Sinatra::Application` application" do
|
||||
|
||||
def app
|
||||
@app ||= BaseApp
|
||||
end
|
||||
|
||||
should "sets the `user_for_paper_trail` from the `current_user` method" do
|
||||
get '/test'
|
||||
assert_equal 'Hello', last_response.body
|
||||
assert_equal 'Hai', last_response.body
|
||||
widget = Widget.first
|
||||
assert_not_nil widget
|
||||
assert_equal 1, widget.versions.size
|
||||
|
|
Loading…
Reference in New Issue