diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb index 9758202..965f08c 100644 --- a/test/application_system_test_case.rb +++ b/test/application_system_test_case.rb @@ -5,4 +5,11 @@ class ApplicationSystemTestCase < ActionDispatch::SystemTestCase Selenium::WebDriver.logger.ignore(:capabilities) driven_by :selenium, using: :headless_firefox, screen_size: [1600, 900] + + def sign_in(user: users.sample, password: randomize_user_password!(user)) + visit new_user_session_url + fill_in User.human_attribute_name(:email).capitalize, with: user.email + fill_in User.human_attribute_name(:password).capitalize, with: password + click_on t(:sign_in) + end end diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index 7e1c0e6..0a5c8db 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -2,3 +2,4 @@ admin: email: admin@dev27.fixin.me status: admin encrypted_password: <%= Devise::Encryptor.digest(User, 'admin') %> + confirmed_at: <%= DateTime.now %> diff --git a/test/system/users_test.rb b/test/system/users_test.rb index 1086cdc..ff4172a 100644 --- a/test/system/users_test.rb +++ b/test/system/users_test.rb @@ -6,28 +6,25 @@ class UsersTest < ApplicationSystemTestCase end test "sign in" do - visit new_user_session_url - users.sample.then do |user| - fill_in User.human_attribute_name(:email).capitalize, with: user.email - fill_in User.human_attribute_name(:password).capitalize, with: randomize_user_password!(user) - end - click_on t(:sign_in) + sign_in assert_no_current_path new_user_session_path assert_text t('devise.sessions.signed_in') end test "sign in fails with invalid password" do - visit new_user_session_url - users.sample.then do |user| - fill_in User.human_attribute_name(:email).capitalize, with: user.email - fill_in User.human_attribute_name(:password).capitalize, with: random_password - end - click_on t(:sign_in) + sign_in password: random_password assert_current_path new_user_session_path assert_text t('devise.failure.invalid', authentication_keys: User.human_attribute_name(:email)) end - # TODO: require e-mail confirmation on registration + test "sign out" do + sign_in user: @admin + visit root_url + click_on t(:sign_out) + assert_current_path new_user_session_path + assert_text t('devise.sessions.signed_out') + end + test "register" do visit new_user_session_url click_link t(:register) @@ -39,7 +36,7 @@ class UsersTest < ApplicationSystemTestCase click_on t(:register) end assert_no_current_path new_user_registration_path - assert_text t('devise.registrations.signed_up') + assert_text t('devise.registrations.signed_up_but_unconfirmed') end #test "visiting the index" do