<%= f.label :name %>
<%= f.text_field :name %>
diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb
index d2257fa..17644fe 100644
--- a/app/views/users/index.html.erb
+++ b/app/views/users/index.html.erb
@@ -1,7 +1,7 @@
-
All Users
+
All Users
-<%= render partial:"user" , collection:@users %>
+<%= render partial:"/users/user" , collection:@users %>
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index 27120dc..3b66ebb 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -1,4 +1,4 @@
- <%= render 'user', user:@user %>
+ <%= render @user %>
<%= link_to 'Edit User Data', edit_user_path %>
diff --git a/config/initializers/selenium.rb b/config/initializers/selenium.rb
new file mode 100644
index 0000000..e69de29
diff --git a/config/routes.rb b/config/routes.rb
index 41adf51..c0c0eca 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,6 +1,6 @@
Rails.application.routes.draw do
- devise_for :users
+ # devise_for :users
root 'users#index'
diff --git a/spec/features/post_index_spec.rb b/spec/features/post_index_spec.rb
new file mode 100644
index 0000000..6caee5d
--- /dev/null
+++ b/spec/features/post_index_spec.rb
@@ -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
diff --git a/spec/features/post_spec.rb b/spec/features/post_spec.rb
new file mode 100644
index 0000000..bb98063
--- /dev/null
+++ b/spec/features/post_spec.rb
@@ -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
diff --git a/spec/features/user_index_spec.rb b/spec/features/user_index_spec.rb
new file mode 100644
index 0000000..2a00186
--- /dev/null
+++ b/spec/features/user_index_spec.rb
@@ -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
diff --git a/spec/features/user_spec.rb b/spec/features/user_spec.rb
new file mode 100644
index 0000000..a5bdbee
--- /dev/null
+++ b/spec/features/user_spec.rb
@@ -0,0 +1,92 @@
+require 'rails_helper'
+
+RSpec.feature 'User', type: :feature do
+ before(:all) do
+ @user = User.create(name: 'Jann Doe', bio: 'I am Jann Doe', email: 'ran.com', photo: 'https://robohash.org/hey?set=set4')
+ @post = Post.create(user_id: @user.id, title: 'Hello', text: 'Teacher need to get trained')
+ @post2 = Post.create(user_id: @user.id, title: 'Hello', text: 'My second post')
+ @post3 = Post.create(user_id: @user.id, title: 'Hello', text: 'My third post')
+ end
+
+ after(:all) do
+ @user.destroy
+ @post.destroy
+ @post2.destroy
+ @post3.destroy
+ end
+
+ it 'displays a users profile picture' do
+ visit user_path(@user)
+ expect(page).to have_css("img[src*='https://robohash.org/hey?set=set4']")
+ end
+
+ it 'displays a user UserName' do
+ visit user_path(@user)
+ expect(page).to have_content('Jann Doe')
+ end
+end
+
+RSpec.feature 'User show', type: :feature do
+ before(:all) do
+ @user = User.create(name: 'Jann Doe', bio: 'I am Jann Doe', email: 'ran.com', photo: 'https://robohash.org/hey?set=set4')
+ @post = Post.create(user_id: @user.id, title: 'Hello', text: 'Teacher need to get trained')
+ @post2 = Post.create(user_id: @user.id, title: 'Hello', text: 'My second post')
+ @post3 = Post.create(user_id: @user.id, title: 'Hello', text: 'My third post')
+ end
+
+ after(:all) do
+ @user.destroy
+ @post.destroy
+ @post2.destroy
+ @post3.destroy
+ end
+
+ it 'displays a user bio' do
+ visit user_path(@user)
+ expect(page).to have_content('I am Jann Doe')
+ end
+ it 'displays button to view all posts' do
+ visit user_path(@user)
+ expect(page).to have_content('See All Posts')
+ end
+
+ it 'redirects to all posts page when view all posts is clicked' do
+ visit user_path(@user)
+ click_button 'See All Posts'
+ expect(page).to have_content('My third post')
+ expect(page).to have_content('My second post')
+ expect(page).to have_content('Teacher need to get trained')
+ end
+end
+
+RSpec.feature 'User show and nav', type: :feature do
+ before(:all) do
+ @user = User.create(name: 'Jann Doe', bio: 'I am Jann Doe', email: 'ran.com', photo: 'https://robohash.org/hey?set=set4')
+ @post = Post.create(user_id: @user.id, title: 'Hello', text: 'Teacher need to get trained')
+ @post2 = Post.create(user_id: @user.id, title: 'Hello', text: 'My second post')
+ @post3 = Post.create(user_id: @user.id, title: 'Hello', text: 'My third post')
+ end
+
+ after(:all) do
+ @user.destroy
+ @post.destroy
+ @post2.destroy
+ @post3.destroy
+ end
+ it 'displays a users 3 most recent posts' do
+ visit user_path(@user)
+ expect(page).to have_content('My third post')
+ expect(page).to have_content('My second post')
+ expect(page).to have_content('Teacher need to get trained')
+ end
+
+ it 'displays number of posts' do
+ visit user_path(@user)
+ expect(page).to have_content('No of posts: 3')
+ end
+ it 'redirects to post show page when post is clicked' do
+ visit user_path(@user)
+ click_on 'My third post'
+ expect(page).to have_content('My third post')
+ end
+end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 6584c98..cb42a0b 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -33,6 +33,8 @@
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
config.fixture_path = "#{Rails.root}/spec/fixtures"
+ Capybara.javascript_driver = :selenium_firefox
+
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
@@ -60,4 +62,15 @@
config.filter_rails_from_backtrace!
# arbitrary gems may also be filtered via:
# config.filter_gems_from_backtrace("gem name")
+ Capybara.register_driver :selenium_chrome_headless do |app|
+ options = Selenium::WebDriver::Chrome::Options.new
+ options.add_argument('--headless')
+ options.add_argument('--no-sandbox')
+ options.add_argument('--disable-dev-shm-usage')
+
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options:)
+ end
+
+ Capybara.javascript_driver = :selenium_chrome_headless
+ Capybara.server = :puma
end
diff --git a/spec/views/users/index.html.erb_spec.rb b/spec/views/users/index.html.erb_spec.rb
deleted file mode 100644
index 533b1d8..0000000
--- a/spec/views/users/index.html.erb_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe 'users/index.html.erb', type: :feature, new: true do
- let!(:user) do
- User.create(name: 'Tati', bio: 'Coding', photo: 'https://avatars.githubusercontent.com/u/80094659?v=4')
- end
-
- before do
- visit users_path
- end
-
- describe 'GET /users' do
- it 'displays users' do
- # visit users_path
-
- expect(page).to have_content(' ')
- end
- end
-end