145 lines
4.4 KiB
Ruby
145 lines
4.4 KiB
Ruby
include Warden::Test::Helpers
|
|
Warden.test_mode!
|
|
|
|
# Feature: Answer questions
|
|
# As a user
|
|
# I want to go to the inbox
|
|
# So I can answer and get new questions
|
|
feature "Inbox", :devise do
|
|
|
|
after :each do
|
|
Warden.test_reset!
|
|
end
|
|
|
|
# Scenario: User answers a question
|
|
# Given I am signed in
|
|
# When I visit the inbox
|
|
# And I have a question in my inbox
|
|
# Then I can answer my question
|
|
# And see the answer on my user profile
|
|
scenario "user answers a question", js: true do
|
|
me = FactoryBot.create :user
|
|
question = FactoryBot.create :question
|
|
Inbox.create question: question, user: me, new: true
|
|
|
|
login_as me, scope: :user
|
|
visit root_path
|
|
|
|
click_link "Inbox"
|
|
expect(page).to have_text(question.content)
|
|
fill_in "ib-answer", with: Faker::Lorem.sentence
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_2.png"), full: true
|
|
|
|
click_button "Answer"
|
|
wait_for_ajax
|
|
expect(page).not_to have_text(question.content)
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_3.png"), full: true
|
|
|
|
visit show_user_profile_path(me.screen_name)
|
|
expect(page).to have_text(question.content)
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_4.png"), full: true
|
|
end
|
|
|
|
# Scenario: User generates new question
|
|
# Given I am signed in
|
|
# When I visit the inbox
|
|
# And I click "Get new question"
|
|
# Then I get a new question
|
|
scenario 'user generates new question', js: true do
|
|
me = FactoryBot.create :user
|
|
|
|
login_as me, scope: :user
|
|
visit inbox_path
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_1.png"), full: true
|
|
|
|
click_button "Get new question"
|
|
wait_for_ajax
|
|
expect(page).to have_text('Answer')
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_2.png"), full: true
|
|
end
|
|
|
|
# Scenario: User with privacy options generates new question
|
|
# Given I am signed in
|
|
# When I visit the inbox
|
|
# And I click "Get new question"
|
|
# And I don't want to receive questions by anonymous users
|
|
# Then I get a new question
|
|
scenario 'user with privacy options generates new question', js: true do
|
|
me = FactoryBot.create :user
|
|
me.privacy_allow_anonymous_questions = false
|
|
me.save
|
|
|
|
login_as me, scope: :user
|
|
visit inbox_path
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_1.png"), full: true
|
|
|
|
click_button "Get new question"
|
|
wait_for_ajax
|
|
expect(page).to have_text('Answer')
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_2.png"), full: true
|
|
end
|
|
|
|
=begin
|
|
# Scenario: User deletes a question
|
|
# Given I am signed in
|
|
# When I visit the inbox
|
|
# And I have a question in my inbox
|
|
# And I delete the question
|
|
# Then don't see it anymore in my inbox
|
|
scenario "user deletes a question", js: true do
|
|
me = FactoryBot.create :user
|
|
question = FactoryBot.create :question
|
|
Inbox.create question: question, user: me
|
|
|
|
login_as me, scope: :user
|
|
visit inbox_path
|
|
expect(page).to have_text(question.content)
|
|
|
|
click_button "Delete"
|
|
expect(page).to have_text('Really delete?')
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_1.png"), full: true
|
|
|
|
# this apparently doesn't get triggered :(
|
|
page.find('.sweet-alert').click_button 'Delete'
|
|
wait_for_ajax
|
|
|
|
login_as me, scope: :user
|
|
visit inbox_path
|
|
expect(page).not_to have_text(question.content)
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_2.png"), full: true
|
|
end
|
|
|
|
# Scenario: User deletes all questions
|
|
# Given I am signed in
|
|
# When I visit the inbox
|
|
# And I have a few questions in my inbox
|
|
# And I click on "Delete all questions"
|
|
# Then don't see them anymore in my inbox
|
|
scenario "user deletes all questions", js: true do
|
|
me = FactoryBot.create :user
|
|
5.times do
|
|
question = FactoryBot.create :question
|
|
Inbox.create question: question, user: me
|
|
end
|
|
|
|
login_as me, scope: :user
|
|
visit inbox_path
|
|
expect(page).to have_text('Answer'.upcase)
|
|
|
|
click_button "Delete all questions"
|
|
expect(page).to have_text('Really delete 5 questions?')
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_1.png"), full: true
|
|
|
|
page.find('.sweet-alert').click_button 'Delete'
|
|
wait_for_ajax
|
|
|
|
puts me.inbox.all
|
|
|
|
login_as me, scope: :user
|
|
visit inbox_path
|
|
page.driver.render Rails.root.join("tmp/#{Time.now.to_i}_2.png"), full: true
|
|
expect(page).not_to have_text('Answer'.upcase)
|
|
end
|
|
=end
|
|
end
|