require "rails_helper"

describe "Verified users" do
  scenario "Verified emails" do
    user = create(:user, residence_verified_at: Time.current, document_number: "12345678Z")

    create(:verified_user, document_number: "12345678Z", email: "rock@example.com")
    create(:verified_user, document_number: "12345678Z", email: "roll@example.com")
    create(:verified_user, document_number: "99999999R", email: "another@example.com")

    login_as(user)
    visit verified_user_path

    expect(page).to have_content "roc*@example.com"
    expect(page).to have_content "rol*@example.com"
    expect(page).not_to have_content "ano*@example.com"
  end

  scenario "Verified phones" do
    user = create(:user, residence_verified_at: Time.current, document_number: "12345678Z")

    create(:verified_user, document_number: "12345678Z", phone: "611111111")
    create(:verified_user, document_number: "12345678Z", phone: "622222222")
    create(:verified_user, document_number: "99999999R", phone: "633333333")

    login_as(user)
    visit verified_user_path

    expect(page).to have_content "******111"
    expect(page).to have_content "******222"
    expect(page).not_to have_content "******333"
  end

  scenario "No emails or phones" do
    user = create(:user, residence_verified_at: Time.current, document_number: "12345678Z")

    create(:verified_user, document_number: "12345678Z")
    create(:verified_user, document_number: "12345678Z")

    login_as(user)
    visit verified_user_path

    expect(page).to have_current_path(new_sms_path)
  end

  scenario "Select a verified email" do
    user = create(:user, residence_verified_at: Time.current, document_number: "12345678Z")
    verified_user = create(:verified_user, document_number: "12345678Z", email: "rock@example.com")

    login_as(user)
    visit verified_user_path

    within("#verified_user_#{verified_user.id}_email") do
      click_button "Send code"
    end

    expect(page).to have_content "We have sent a confirmation email to your account: rock@example.com"
    expect(page).to have_current_path(account_path)
  end

  scenario "Select a verified phone" do
    user = create(:user, residence_verified_at: Time.current, document_number: "12345678Z")
    verified_user = create(:verified_user, document_number: "12345678Z", phone: "611111111")

    login_as(user)
    visit verified_user_path

    within("#verified_user_#{verified_user.id}_phone") do
      click_button "Send code"
    end

    expect(page).to have_content "Enter the confirmation code"
  end

  scenario "Continue without selecting any verified information" do
    user = create(:user, residence_verified_at: Time.current, document_number: "12345678Z")

    create(:verified_user, document_number: "12345678Z", phone: "611111111")

    login_as(user)
    visit verified_user_path

    click_link "Use other phone"

    expect(page).to have_current_path(new_sms_path)
  end

  scenario "No verified information" do
    user = create(:user, residence_verified_at: Time.current)

    login_as(user)
    visit verified_user_path

    expect(page).to have_current_path(new_sms_path)
  end
end
