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: 2 additions & 2 deletions spec/factories/photo.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FactoryBot.define do
factory :photo do
image { Faker::Avatar.image }
caption "Lake Bondhus"
sequence(:image) { |n| "https://some.url/image#{n}.png" }
sequence(:caption) { |n| "Some caption #{n}" }
end
end
5 changes: 3 additions & 2 deletions spec/factories/users.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
FactoryBot.define do
factory :user do
sequence(:email) { |n| "test#{n}@example.com" }
password 'f4k3p455w0rd'
sequence(:username) { |n| "president#{n}" }
password "password"
sequence(:username) { |n| "person#{n}" }

factory :user_with_photos do
transient do
photos_count 1
Expand Down
8 changes: 2 additions & 6 deletions spec/features/1_setup_spec.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
require "rails_helper"

feature "Devise" do
feature "Setup:" do
scenario "root url set to photos index", points: 1 do
user = create(:user)

visit "/"

if page.has_selector?("label", text: "Email")
fill_in("Email", :with => user.email)
fill_in("Password", :with => user.password)
Expand All @@ -16,11 +17,7 @@

scenario "user authentication required for home page", points: 2 do
visit "/"
expect(page.current_path).to eq("/users/sign_in")
end

scenario "user authentication required for likes page", points: 1 do
visit "/likes"
expect(page.current_path).to eq("/users/sign_in")
end

Expand All @@ -34,5 +31,4 @@

expect(page).to have_content("Signed in successfully.")
end

end
59 changes: 0 additions & 59 deletions spec/features/2_header_spec.rb

This file was deleted.

58 changes: 58 additions & 0 deletions spec/features/2_navbar_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
require "rails_helper"

feature "Navbar:" do
scenario "edit profile link's text is username", points: 3 do
user = create(:user)
login_as(user, :scope => :user)

visit "/"

within("nav") do
expect(page).to have_link(user.username, href: "/users/edit")
end
end

scenario "no 'dummy' text in sign out link", points: 1 do
user = create(:user)
login_as(user, :scope => :user)

visit "/"

within("nav") do
expect(find(:xpath, "//a[@href='/users/sign_out']").text).not_to eq("Dummy Sign Out Link")
end
end

scenario "shows sign-up link if signed out", points: 2 do
visit "/"

within("nav") do
expect(page).to have_link(nil, href: "/users/sign_up")
end
end

scenario "shows sign-in link if signed out", points: 2 do
visit "/"

within("nav") do
expect(page).to have_link(nil, href: "/users/sign_in")
end
end

scenario "does not show sign-out link if signed out", points: 2 do
visit "/"

within("nav") do
expect(page).not_to have_link(nil, href: "/users/sign_out")
end
end

scenario "does not show edit link if signed out", points: 1 do
visit "/"

within("nav") do
expect(page).not_to have_link(nil, href: "/users/edit")
end
end

end
75 changes: 33 additions & 42 deletions spec/features/3_users_spec.rb
Original file line number Diff line number Diff line change
@@ -1,78 +1,79 @@
require "rails_helper"

feature "Users:" do

scenario "for new photo form, user ID prepopulated or in hidden field", points: 2 do
scenario "in routes.rb, 'get /users/:id' below 'devise_for :users'", points: 1 do
user = create(:user)
login_as(user, :scope => :user)

visit "/photos/new"
visit "/users/sign_in"

if page.has_selector?("label", text: "User")
expect(page).to have_selector("input[value='#{user.id}']")
expect(page).to have_field('User', with: "#{user.id}")
else
expect(page).not_to have_selector("label", text: "User")
end
expect(page.current_path).to eq "/"
end

scenario "RCAV set for /users", points: 1 do
scenario "user_id pre-populated in new photo form", points: 2 do
user = create(:user)

login_as(user, :scope => :user)
visit "/photos/new"

expect(page).to have_selector("input[value='#{user.id}']", visible: false)
end

scenario "RCAV dots connected for /users", points: 1 do
user = create(:user)

login_as(user, :scope => :user)
visit "/users"

expect(page.status_code).to be(200) # 200 is "OK"
end

scenario "/users lists all users", points: 2 do
user_1 = create(:user)
user_2 = create(:user)
login_as(user_1, :scope => :user)
scenario "/users lists all users", points: 3 do
users = create_list(:user, 2)

login_as(users.first, :scope => :user)
visit "/users"

users = User.all
users.each do |user|
expect(page).to have_content(user.username)
end
end

scenario "header includes link to /users", points: 1 do
scenario "navbar includes link to /users", points: 1 do
user = create(:user)
login_as(user, :scope => :user)

login_as(user, :scope => :user)
visit "/"

within('nav') do
expect(page).to have_link(nil, href: '/users')
within("nav") do
expect(page).to have_link(nil, href: "/users")
end
end

scenario "RCAV set for /users/:id", points: 1 do
scenario "RCAV dots connected for /users/:id", points: 1 do
user = create(:user)
login_as(user, :scope => :user)

login_as(user, :scope => :user)
visit "/users/#{user.id}"

expect(page.status_code).to be(200) # 200 is "OK"
end

scenario "/users/:id lists user's details", points: 1 do
scenario "/users/:id lists user's details", points: 2 do
user = create(:user)
login_as(user, :scope => :user)

login_as(user, :scope => :user)
visit "/users/#{user.id}"

expect(page).to have_content(user.username)
end

scenario "/users/:id lists user's photos caption", points: 2 do
scenario "/users/:id lists user's photos captions", points: 3 do
user = create(:user)
photo_1 = FactoryBot.create(:photo, :user_id => user.id)
photo_2 = FactoryBot.create(:photo, :user_id => user.id)
login_as(user, :scope => :user)
photo_1 = create(:photo, :user_id => user.id)
photo_2 = create(:photo, :user_id => user.id)

login_as(user, :scope => :user)
visit "/users/#{user.id}"

photos = Photo.all
Expand All @@ -83,8 +84,8 @@

scenario "/users/:id lists user's photos", points: 2 do
user = create(:user)
photo_1 = FactoryBot.create(:photo, :user_id => user.id)
photo_2 = FactoryBot.create(:photo, :user_id => user.id)
photo_1 = create(:photo, :user_id => user.id)
photo_2 = create(:photo, :user_id => user.id)
login_as(user, :scope => :user)

visit "/users/#{user.id}"
Expand All @@ -95,13 +96,13 @@
end
end

scenario "when signed in header has link to /users/:id", points: 2 do
scenario "when signed in navbar has link to /users/:id", points: 2 do
user = create(:user)
login_as(user, :scope => :user)

visit "/"

within('nav') do
within("nav") do
expect(page).to have_link(nil, href: "/users/#{user.id}")
end
end
Expand All @@ -111,18 +112,8 @@

visit "/"

within('nav') do
within("nav") do
expect(page).not_to have_link(nil, href: "/users/#{user.id}")
end
end

scenario "in routes.rb, /users/:id below 'devise_for :users'", points: 1 do
user = create(:user)
login_as(user, :scope => :user)

visit "/users/sign_in"

expect(page.current_path).to eq "/"
end

end
Loading