169 lines
3.6 KiB
Ruby
169 lines
3.6 KiB
Ruby
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
|
|
|
describe Padrino::Flash do
|
|
context 'storage' do
|
|
before do
|
|
@storage = Padrino::Flash::Storage.new(
|
|
:success => 'Success msg',
|
|
:error => 'Error msg',
|
|
:notice => 'Notice msg',
|
|
:custom => 'Custom msg'
|
|
)
|
|
@storage[:one] = 'One msg'
|
|
@storage[:two] = 'Two msg'
|
|
end
|
|
|
|
should 'acts like hash' do
|
|
assert_respond_to @storage, :[]
|
|
end
|
|
|
|
should 'know its size' do
|
|
assert_equal 4, @storage.length
|
|
assert_equal @storage.length, @storage.size
|
|
end
|
|
|
|
should 'sweep its content' do
|
|
assert_equal 2, @storage.sweep.size
|
|
assert_empty @storage.sweep
|
|
end
|
|
|
|
should 'discard everything' do
|
|
assert_empty @storage.discard.sweep
|
|
end
|
|
|
|
should 'discard specified key' do
|
|
assert_equal 1, @storage.discard(:one).sweep.size
|
|
end
|
|
|
|
should 'keep everything' do
|
|
assert_equal 2, @storage.sweep.keep.sweep.size
|
|
end
|
|
|
|
should 'keep only specified key' do
|
|
assert_equal 1, @storage.sweep.keep(:one).sweep.size
|
|
end
|
|
|
|
should 'not know the values you set right away' do
|
|
@storage[:foo] = 'bar'
|
|
assert_nil @storage[:foo]
|
|
end
|
|
|
|
should 'knows the values you set next time' do
|
|
@storage[:foo] = 'bar'
|
|
@storage.sweep
|
|
assert_equal 'bar', @storage[:foo]
|
|
end
|
|
|
|
should 'set values for now' do
|
|
@storage.now[:foo] = 'bar'
|
|
assert_equal 'bar', @storage[:foo]
|
|
end
|
|
|
|
should 'forgets values you set only for now next time' do
|
|
@storage.now[:foo] = 'bar'
|
|
@storage.sweep
|
|
assert_nil @storage[:foo]
|
|
end
|
|
end
|
|
|
|
routes = Proc.new do
|
|
get :index do
|
|
params[:key] ? flash[params[:key].to_sym].to_s : flash.now.inspect
|
|
end
|
|
|
|
post :index do
|
|
params.each { |k,v| flash[k.to_sym] = v.to_s }
|
|
flash.next.inspect
|
|
end
|
|
|
|
get :session do
|
|
settings.sessions?.inspect
|
|
end
|
|
|
|
get :redirect do
|
|
redirect url(:index, :key => :foo), 301, :foo => 'redirected!'
|
|
end
|
|
|
|
get :success do
|
|
flash.success = 'Yup'
|
|
end
|
|
|
|
get :error do
|
|
flash.error = 'Arg'
|
|
end
|
|
|
|
get :notice do
|
|
flash.notice = 'Mmm'
|
|
end
|
|
end
|
|
|
|
context 'padrino application without sessions' do
|
|
before { mock_app(&routes) }
|
|
|
|
should 'show nothing' do
|
|
get '/'
|
|
assert_equal '{}', body
|
|
end
|
|
|
|
should 'set a flash' do
|
|
post '/', :foo => :bar
|
|
assert_equal '{:foo=>"bar"}', body
|
|
end
|
|
end
|
|
|
|
context 'padrino application with sessions' do
|
|
before do
|
|
mock_app { enable :sessions; class_eval(&routes) }
|
|
end
|
|
|
|
should 'be sure have sessions enabled' do
|
|
assert @app.sessions
|
|
get '/session'
|
|
assert_equal 'true', body
|
|
end
|
|
|
|
should 'show nothing' do
|
|
get '/'
|
|
assert_equal '{}', body
|
|
end
|
|
|
|
should 'set a flash' do
|
|
post '/', :foo => :bar
|
|
assert_equal '{:foo=>"bar"}', body
|
|
end
|
|
|
|
should 'get a flash' do
|
|
post '/', :foo => :bar
|
|
get '/', :key => :foo
|
|
assert_equal 'bar', body
|
|
post '/'
|
|
assert_equal '{}', body
|
|
end
|
|
|
|
should 'follow redirects with flash' do
|
|
get '/redirect'
|
|
follow_redirect!
|
|
assert_equal 'redirected!', body
|
|
assert 301, status
|
|
end
|
|
|
|
should 'set success' do
|
|
get '/success'
|
|
get '/', :key => :success
|
|
assert_equal 'Yup', body
|
|
end
|
|
|
|
should 'set error' do
|
|
get '/error'
|
|
get '/', :key => :error
|
|
assert_equal 'Arg', body
|
|
end
|
|
|
|
should 'set notice' do
|
|
get '/notice'
|
|
get '/', :key => :notice
|
|
assert_equal 'Mmm', body
|
|
end
|
|
end
|
|
end
|