Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ group :development, :test do
gem 'debug', platforms: %i[mri mingw x64_mingw]
gem 'rails-controller-testing'
gem 'rspec-rails'
gem 'selenium-webdriver'
gem 'webdrivers'
# gem 'webdrivers', '~> 5.0', require: false
end

group :development do
Expand All @@ -83,3 +83,5 @@ group :test do
end

gem 'tailwindcss-rails', '~> 2.0'

gem 'kaminari', '~> 1.2', '>= 1.2.1'
14 changes: 13 additions & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,18 @@ GEM
jbuilder (2.11.5)
actionview (>= 5.0.0)
activesupport (>= 5.0.0)
kaminari (1.2.2)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.2.2)
kaminari-activerecord (= 1.2.2)
kaminari-core (= 1.2.2)
kaminari-actionview (1.2.2)
actionview
kaminari-core (= 1.2.2)
kaminari-activerecord (1.2.2)
activerecord
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
launchy (2.5.2)
addressable (~> 2.8)
letter_opener (1.8.1)
Expand Down Expand Up @@ -273,14 +285,14 @@ DEPENDENCIES
dotenv-rails
importmap-rails
jbuilder
kaminari (~> 1.2, >= 1.2.1)
letter_opener
pg (~> 1.1)
puma (~> 5.0)
rails (~> 7.0.4, >= 7.0.4.3)
rails-controller-testing
rails_live_reload
rspec-rails
selenium-webdriver
sprockets-rails
stimulus-rails
tailwindcss-rails (~> 2.0)
Expand Down
10 changes: 3 additions & 7 deletions app/controllers/posts_controller.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
class PostsController < ApplicationController
def index
@user = User.find(params[:user_id])
@posts = @user.posts
@tester = 'herer'
@posts = Post.includes(:user, comments: :user).where(user_id: params[:user_id]).page(params[:page]).per(1)
# @user = @posts.user
end

def show
@post = Post.find(params[:id])
@post = Post.includes(:comments).find(params[:id])
# @comments = @post.comments
end

# def custom_post
# @post = Post.find(params[:id])
# end

def new
@post = Post.new
end
Expand Down
5 changes: 3 additions & 2 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class UsersController < ApplicationController
before_action :authenticate_user!
# before_action :authenticate_user!

def index
@users = User.all
Expand All @@ -10,7 +10,8 @@ def show
end

def edit
@user = current_user
# @user = current_user
@user = User.find(params[:id])
end

def update
Expand Down
4 changes: 2 additions & 2 deletions app/models/user.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable, :confirmable
# devise :database_authenticatable, :registerable,
# :recoverable, :rememberable, :validatable, :confirmable
has_many :posts, dependent: :destroy
has_many :comments, dependent: :destroy
has_many :likes, dependent: :destroy
Expand Down
2 changes: 1 addition & 1 deletion app/views/layouts/application.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<body>
<main class="container justify-center w-full p-4 m-auto bg-yellow-200">

<%if user_signed_in? %>
<%if false %>
<div class="flex justify-between m-4">
<nav class="flex p-2 space-x-4 text-lg">
<%= link_to "Home", root_path, class: "font-semibold " %>
Expand Down
6 changes: 4 additions & 2 deletions app/views/posts/_post.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
Post #<%= post.id%> by <%= post.user.name%>

</p>

<p class="text-3xl font-semibold">
<%= post.title%>
</p>
<p class="text-xl font-medium ">

<%= post.text%>
Expand All @@ -36,7 +38,7 @@ Post #<%= post.id%> by <%= post.user.name%>

<%# show comments if specifically asked for by render %>
<% if show_comments%>
<%= render partial:'/comments/comment' , collection:post.most_recent_comments %>
<%= render partial:'/comments/comment' , collection:post.comments %>
<%end%>

</div>
Expand Down
6 changes: 5 additions & 1 deletion app/views/posts/index.html.erb
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
<p class='text-3xl font-bold text-center'>All Posts</p>

<%= render @user%>

<%= render partial:'posts/post', collection:@posts, locals: {show_comments:true} %>
<%= paginate @posts %>
<%= render partial:'posts/post', collection:@posts, locals: {show_comments:true} %>
<%= paginate @posts %>
1 change: 1 addition & 0 deletions app/views/users/edit.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<%= form_for(@user) do |f|%>
<p>Edit User</p>
<div>
<%= f.label :name %>
<%= f.text_field :name %>
Expand Down
4 changes: 2 additions & 2 deletions app/views/users/index.html.erb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<h1 class="font-bold heading text-center text-4xl"> All Users</h1>
<h1 class="text-4xl font-bold text-center heading"> All Users</h1>


<ul>
<%= render partial:"user" , collection:@users %>
<%= render partial:"/users/user" , collection:@users %>

</ul>
2 changes: 1 addition & 1 deletion app/views/users/show.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<%= render 'user', user:@user %>
<%= render @user %>

<div class="flex justify-end float-right p-1 m-4 font-semibold ring-4 w-fit">
<%= link_to 'Edit User Data', edit_user_path %>
Expand Down
Empty file added config/initializers/selenium.rb
Empty file.
2 changes: 1 addition & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Rails.application.routes.draw do

devise_for :users
# devise_for :users


root 'users#index'
Expand Down
71 changes: 71 additions & 0 deletions spec/features/post_index_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
require 'rails_helper'

RSpec.describe 'Posts Index', type: :feature do
before(:all) do
@user = User.create(name: 'Jann Doe', bio: 'I am John Doe', email: 'rand_email', photo: 'https://robohash.org/hey?set=set4')
@post = Post.create(user: @user, title: 'Hello', text: 'Teacher need to get trained')
@post1 = Post.create(user: @user, title: 'Hello1', text: 'Teacher need to get trained2')
@post2 = Post.create(user: @user, title: 'Hello2', text: 'Teacher need to get trained3')
@comment = Comment.create(user: @user, post: @post, text: 'I agree')
end

after(:all) do
@user.destroy
@post.destroy
@post1.destroy
@post2.destroy
@comment.destroy
end

it 'displays users profile picture' do
visit user_posts_path(@user)
expect(page).to have_css("img[src*='https://robohash.org/hey?set=set4']")
end

it 'displays users name' do
visit user_posts_path(@user)
expect(page).to have_content('Jann Doe')
end

it 'displays number of posts by user' do
visit user_posts_path(@user)
expect(page).to have_content('No of posts: 3')
end

it 'displays posts title' do
visit user_posts_path(@user)
expect(page).to have_content('Hello')
end

it 'displays posts text' do
visit user_posts_path(@user)
expect(page).to have_content('Teacher need to get trained2')
end

it 'displays posts comments' do
visit user_posts_path(@user)
expect(page).to have_content('Teacher need to get trained2')
end

it 'displays posts comments count' do
visit user_posts_path(@user)
expect(page).to have_content('Comments: 0')
end

it 'displays posts like count' do
visit user_posts_path(@user)
expect(page).to have_content('Likes: 0')
end

it 'redirects to show page when post title is clicked' do
visit user_posts_path(@user)
click_link('Hello')
expect(page).to have_content('Hello')
end

it 'will paginate posts' do
visit user_posts_path(@user)
expect(page).to have_content('Next')
expect(page).to have_content('Last')
end
end
50 changes: 50 additions & 0 deletions spec/features/post_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
require 'rails_helper'

RSpec.describe 'Posts Show', type: :feature do
before(:all) do
@user = User.create(name: 'Jann Doe', bio: 'I am John Doe', email: 'rand_email')
@post = Post.create(user: @user, title: 'Hello', text: 'Teacher need to get trained')
@comment = Comment.create(user: @user, post: @post, text: 'I agree')
end

after(:all) do
@user.destroy
@post.destroy
end

it 'displays the title of the post' do
visit user_posts_path(@user)
expect(page).to have_content('Hello')
end

it 'displays who wrote the post' do
visit user_posts_path(@user)
expect(page).to have_content('Jann Doe')
end

it 'displays number of comments' do
visit user_post_path(user_id: @user.id, id: @post.id)
expect(page).to have_content('Comments: 1')
end

it 'displays number of likes' do
visit user_posts_path(@user)
expect(page).to have_content('Likes: 0')
end

it 'displays the text of the post' do
visit user_posts_path(@user)
expect(page).to have_content('Teacher need to get trained')
end

it 'displays user name of commentor' do
visit user_post_path(user_id: @user.id, id: @post.id)
expect(page).to have_content('Jann Doe :')
end

it 'displays each comment the commentor left' do
visit user_post_path(user_id: @user.id, id: @post.id)

expect(page).to have_content('Jann Doe : I agree')
end
end
45 changes: 45 additions & 0 deletions spec/features/user_index_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
require 'rails_helper'

RSpec.describe 'Users Index Page', type: :feature do
before(:all) do
@user = User.create(name: 'John Doe', bio: 'I am John Doe', email: 'rand_email2', photo: 'https://robohash.org/hey?set=set4')

@user2 = User.create(name: 'Jann Doe', bio: 'I am Jann Doe', email: 'rand_email3', photo: 'https://robohash.org/ho?set=set4')
@post = Post.create(user: @user, title: 'Hello', text: 'Teacher need to get trained')

@post2 = Post.create(user: @user, title: 'Hello', text: 'My second post')

@post3 = Post.create(user: @user2, title: 'Hello', text: 'My first post')
end

after(:all) do
@user.destroy
@user2.destroy
@post.destroy
end

it 'displays all users names' do
visit users_path
expect(page).to have_content('Jann Doe')
expect(page).to have_content('Jann Doe')
end

it 'displays all users profile pictures' do
visit users_path
expect(page).to have_css("img[src*='https://robohash.org/hey?set=set4']")
expect(page).to have_css("img[src*='https://robohash.org/ho?set=set4']")
end

it 'displays all the users post count' do
visit users_path
expect(page).to have_content('No of posts: 2')
expect(page).to have_content('No of posts: 1')
end

it 'redirects to the users show page when clicked' do
visit users_path
find('a', text: 'Jann Doe', wait: 5).click

assert_current_path(user_path(@user2))
end
end
Loading