From ae18098c6da2e347f5ddd79f68b1faa5138fddc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Garc=C3=ADa=20Cota?= Date: Fri, 2 Mar 2012 14:02:33 +0100 Subject: [PATCH] kinda-sorta working? --- .rspec | 2 + lib/locomotive/liquid/drops/current_user.rb | 15 ++++++ lib/locomotive/render.rb | 2 +- .../liquid/drops/current_user_spec.rb | 50 ++++++++++++++----- 4 files changed, 56 insertions(+), 13 deletions(-) create mode 100644 .rspec diff --git a/.rspec b/.rspec new file mode 100644 index 00000000..f5f59fd4 --- /dev/null +++ b/.rspec @@ -0,0 +1,2 @@ +--drb +--colour diff --git a/lib/locomotive/liquid/drops/current_user.rb b/lib/locomotive/liquid/drops/current_user.rb index 605437c7..d1b07219 100644 --- a/lib/locomotive/liquid/drops/current_user.rb +++ b/lib/locomotive/liquid/drops/current_user.rb @@ -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 diff --git a/lib/locomotive/render.rb b/lib/locomotive/render.rb index 91f4af29..4bf0ef8c 100644 --- a/lib/locomotive/render.rb +++ b/lib/locomotive/render.rb @@ -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) diff --git a/spec/lib/locomotive/liquid/drops/current_user_spec.rb b/spec/lib/locomotive/liquid/drops/current_user_spec.rb index 83d2ab79..aba41c9e 100644 --- a/spec/lib/locomotive/liquid/drops/current_user_spec.rb +++ b/spec/lib/locomotive/liquid/drops/current_user_spec.rb @@ -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