The `type: :feature` is automatically detected by RSpec because these tests are inside the `spec/features` folder. Using `feature` re-adds a `type: :feature` to these files, which will result in a conflict when we upgrade to Rails 5.1's system tests. Because of this change, we also need to change `background` to `before` or else these tests will fail.
111 lines
2.7 KiB
Ruby
111 lines
2.7 KiB
Ruby
require "rails_helper"
|
|
|
|
describe "Welcome screen" do
|
|
|
|
let(:budget) { create(:budget) }
|
|
|
|
scenario "requires a logged in user" do
|
|
visit welcome_path
|
|
expect(page).to have_content "You must sign in or register to continue."
|
|
end
|
|
|
|
scenario "for a not verified user" do
|
|
user = create(:user)
|
|
login_through_form_as(user)
|
|
|
|
expect(page).to have_current_path(page_path("welcome_not_verified"))
|
|
end
|
|
|
|
scenario "for a level two verified user" do
|
|
user = create(:user, :level_two)
|
|
login_as(user)
|
|
|
|
visit welcome_path
|
|
expect(page).to have_current_path(page_path("welcome_level_two_verified"))
|
|
end
|
|
|
|
scenario "for a level three verified user" do
|
|
user = create(:user, :level_three)
|
|
login_as(user)
|
|
|
|
visit welcome_path
|
|
expect(page).to have_current_path(page_path("welcome_level_three_verified"))
|
|
end
|
|
|
|
scenario "a regular user does not see it when coing to /email" do
|
|
|
|
plain, encrypted = Devise.token_generator.generate(User, :email_verification_token)
|
|
|
|
user = create(:user, email_verification_token: plain)
|
|
|
|
visit email_path(email_verification_token: encrypted)
|
|
|
|
fill_in "user_login", with: user.email
|
|
fill_in "user_password", with: user.password
|
|
|
|
click_button "Enter"
|
|
|
|
expect(page).to have_content("You are a verified user")
|
|
|
|
expect(page).to have_current_path(account_path)
|
|
end
|
|
|
|
scenario "it is not shown more than once" do
|
|
user = create(:user, sign_in_count: 2)
|
|
|
|
login_through_form_as(user)
|
|
|
|
expect(page).to have_current_path(root_path)
|
|
end
|
|
|
|
scenario "is not shown to organizations" do
|
|
organization = create(:organization)
|
|
|
|
login_through_form_as(organization.user)
|
|
|
|
expect(page).to have_current_path(root_path)
|
|
end
|
|
|
|
scenario "it is not shown to level-2 users" do
|
|
user = create(:user, residence_verified_at: Time.current, confirmed_phone: "123")
|
|
|
|
login_through_form_as(user)
|
|
|
|
expect(page).to have_current_path(root_path)
|
|
end
|
|
|
|
scenario "it is not shown to level-3 users" do
|
|
user = create(:user, verified_at: Time.current)
|
|
|
|
login_through_form_as(user)
|
|
|
|
expect(page).to have_current_path(root_path)
|
|
end
|
|
|
|
scenario "is not shown to administrators" do
|
|
administrator = create(:administrator)
|
|
|
|
login_through_form_as(administrator.user)
|
|
|
|
expect(page).to have_current_path(root_path)
|
|
end
|
|
|
|
scenario "a regular users sees it the first time he logs in, with all options active
|
|
if the setting skip_verification is activated" do
|
|
|
|
Setting["feature.user.skip_verification"] = "true"
|
|
|
|
user = create(:user)
|
|
|
|
login_through_form_as(user)
|
|
|
|
4.times do |i|
|
|
expect(page).to have_css "li:nth-child(#{i + 1})"
|
|
end
|
|
|
|
Setting["feature.user.skip_verification"] = nil
|
|
end
|
|
|
|
|
|
end
|