WIP: Karol's implementation #1
9 changed files with 63 additions and 3 deletions
|
@ -1,2 +1,10 @@
|
||||||
class ApplicationController < ActionController::Base
|
class ApplicationController < ActionController::Base
|
||||||
|
helper_method :current_user
|
||||||
|
helper_method :logged_in?
|
||||||
|
def current_user
|
||||||
|
User.find_by(id: session[:user_id])
|
||||||
|
end
|
||||||
|
def logged_in?
|
||||||
|
!current_user.nil?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,6 +3,11 @@ class SessionsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
@user = User.find_by(username: params[:username])
|
||||||
|
if @user && @user.authenticate(params[:password])
|
||||||
|
sessions[:user_id] = @user.id
|
||||||
|
end
|
||||||
|
redirect_to '/welcome'
|
||||||
end
|
end
|
||||||
|
|
||||||
def welcome
|
def welcome
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
class UsersController < ApplicationController
|
class UsersController < ApplicationController
|
||||||
def new
|
def new
|
||||||
|
@user = User.new
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
|
|
@ -1,2 +1,8 @@
|
||||||
<h1>Sessions#new</h1>
|
<h1>Login</h1>
|
||||||
<p>Find me in app/views/sessions/new.html.erb</p>
|
<%= form_tag '/login' do %>
|
||||||
|
<%= label_tag :username%>
|
||||||
|
<%= text_field_tag :username %>
|
||||||
|
<%= label_tag :password%>
|
||||||
|
<%= password_field_tag :password%>
|
||||||
|
<%= submit_tag "Login"%>
|
||||||
|
<%end%>
|
|
@ -1,3 +1,6 @@
|
||||||
<h1>Welcome</h1>
|
<h1>Welcome</h1>
|
||||||
|
<% if logged_in? %>
|
||||||
|
<h1>You are Logged In, <%= current_user.username %></h1>
|
||||||
|
<%end%>
|
||||||
<%= button_to "Login", '/login', method: :get%>
|
<%= button_to "Login", '/login', method: :get%>
|
||||||
<%= button_to "Sign Up", '/users/new', method: :get%>
|
<%= button_to "Sign Up", '/users/new', method: :get%>
|
18
spec/controllers/application_controller_spec.rb
Normal file
18
spec/controllers/application_controller_spec.rb
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe ApplicationController do
|
||||||
|
describe 'current_user' do
|
||||||
|
before(:all) do
|
||||||
|
User.create(username: 'karol.selak@gmail.com', password: 'abcde')
|
||||||
|
end
|
||||||
|
context 'when a user is logged in' do
|
||||||
|
it 'returns the user' do
|
||||||
|
# TODO
|
||||||
|
# expect(current_user.username).to eql('karol.selak@gmail.com')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
describe 'logged_in?' do
|
||||||
|
# TODO
|
||||||
|
end
|
||||||
|
end
|
|
@ -8,6 +8,11 @@ RSpec.describe SessionsController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
describe 'get create' do
|
describe 'get create' do
|
||||||
|
# TODO test session status
|
||||||
|
subject { get 'create' }
|
||||||
|
it 'redirects to /welcome' do
|
||||||
|
expect(subject).to redirect_to('/welcome')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
describe 'get welcome' do
|
describe 'get welcome' do
|
||||||
subject { get 'welcome' }
|
subject { get 'welcome' }
|
||||||
|
|
|
@ -8,5 +8,19 @@ RSpec.describe UsersController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
describe 'get create' do
|
describe 'get create' do
|
||||||
|
before(:all) do # TODO change it to cleanup after each test
|
||||||
|
User.destroy_all
|
||||||
|
end
|
||||||
|
subject {
|
||||||
|
get :create, params: {user: {username: 'karol.selak@gmail.com', password: 'abcde'}}
|
||||||
|
}
|
||||||
|
it 'creates a user' do
|
||||||
|
subject
|
||||||
|
expect(User.where(username: 'karol.selak@gmail.com').size).to eql(1)
|
||||||
|
end
|
||||||
|
it 'redirects to /welcome' do
|
||||||
|
subject
|
||||||
|
expect(subject).to redirect_to('/welcome')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -93,4 +93,4 @@ RSpec.configure do |config|
|
||||||
# as the one that triggered the failure.
|
# as the one that triggered the failure.
|
||||||
Kernel.srand config.seed
|
Kernel.srand config.seed
|
||||||
=end
|
=end
|
||||||
end
|
end
|
Loading…
Add table
Add a link
Reference in a new issue