kinda-sorta working?

This commit is contained in:
Enrique García Cota 2012-03-02 14:02:33 +01:00
parent b359152757
commit ae18098c6d
4 changed files with 56 additions and 13 deletions

2
.rspec Normal file
View File

@ -0,0 +1,2 @@
--drb
--colour

View File

@ -2,9 +2,24 @@ module Locomotive
module Liquid
module Drops
class CurrentUser < Base
include ::Rails.application.routes.url_helpers
def logged_in?
_source.present?
end
def name
_source.account.name if logged_in?
end
def email
_source.account.email if logged_in?
end
def logout_path
destroy_admin_session_path
end
def login_path
new_admin_session_path
end
end
end
end

View File

@ -69,7 +69,7 @@ module Locomotive
'url' => request.url,
'now' => Time.now.utc,
'today' => Date.today,
'current_user' => Locomotive::Liquid::Drops::CurrentUser.new(current_user)
'current_user' => Locomotive::Liquid::Drops::CurrentUser.new(current_admin)
}
assigns.merge!(Locomotive.config.context_assign_extensions)

View File

@ -13,25 +13,51 @@ describe Locomotive::Liquid::Drops::CurrentUser do
@controller.stubs(:params).returns(:url => '/subpage')
@controller.stubs(:request).returns(OpenStruct.new(:url => '/subpage', :fullpath => '/subpage'))
@controller.current_site = @site
@admin = FactoryGirl.build(:admin)
end
def expect_render(template, text)
@page.raw_template = template
@page.send(:serialize_template)
@controller.expects(:render).with(:text => text, :layout => false, :status => :ok).returns(true)
@controller.send(:render_locomotive_page)
end
context '#logged_in?' do
it 'returns false when no user is logged in' do
@page.raw_template = '{{ current_user.logged_in? }}'
@page.send(:serialize_template)
@controller.expects(:render).with(:text => "false", :layout => false, :status => :ok).returns(true)
@controller.send(:render_locomotive_page)
expect_render('{{ current_user.logged_in? }}', 'false')
end
it 'returns true when there is a user logged in' do
@page.raw_template = '{{ current_user.logged_in? }}'
@page.send(:serialize_template)
@controller.expects(:render).with(:text => "true", :layout => false, :status => :ok).returns(true)
@controller.send(:render_locomotive_page)
@controller.expects(:current_admin).twice.returns(true)
expect_render('{{ current_user.logged_in? }}', 'true')
end
end
after(:all) do
ENV['APP_TLD'] = nil
Locomotive.configure_for_test(true)
context '#name' do
it 'returns nothing when no user is logged in' do
expect_render('{{ current_user.name }}', '')
end
it 'returns the username when the user is logged in' do
@controller.expects(:current_admin).twice.returns(@admin)
expect_render('{{ current_user.name }}', 'Admin')
end
end
context '#email' do
it 'returns nothing when no user is logged in' do
expect_render('{{ current_user.email }}', '')
end
it 'returns the username when the user is logged in' do
@controller.expects(:current_admin).twice.returns(@admin)
expect_render('{{ current_user.email }}', 'admin@locomotiveapp.org')
end
end
context '#logout_path' do
it 'returns the logout url' do
expect_render('{{ current_user.logout_path }}', '/admin/sign_out')
end
end
end