diff --git a/app/controllers/admin/verifications_controller.rb b/app/controllers/admin/verifications_controller.rb index 6cc1ae769..72685a199 100644 --- a/app/controllers/admin/verifications_controller.rb +++ b/app/controllers/admin/verifications_controller.rb @@ -1,11 +1,11 @@ class Admin::VerificationsController < Admin::BaseController def index - @users = User.unverified.page(params[:page]) + @users = User.incomplete_verification.page(params[:page]) end def search - @users = User.unverified.search(params[:name_or_email]).page(params[:page]).for_render + @users = User.incomplete_verification.search(params[:name_or_email]).page(params[:page]).for_render render :index end diff --git a/app/models/concerns/verification.rb b/app/models/concerns/verification.rb index 1bb922d0e..1227791dc 100644 --- a/app/models/concerns/verification.rb +++ b/app/models/concerns/verification.rb @@ -6,8 +6,7 @@ module Verification scope :level_two_verified, -> { where("users.confirmed_phone IS NOT NULL AND users.residence_verified_at IS NOT NULL") } scope :level_two_or_three_verified, -> { where("users.verified_at IS NOT NULL OR (users.confirmed_phone IS NOT NULL AND users.residence_verified_at IS NOT NULL)") } scope :unverified, -> { where("users.verified_at IS NULL AND (users.residence_verified_at IS NULL OR users.confirmed_phone IS NULL)") } - scope :with_failed_attempts, -> { where("users.failed_census_calls_count > ?", 0) } - scope :incomplete_verification, -> { unverified.with_failed_attempts } + scope :incomplete_verification, -> { where("(users.residence_verified_at IS NULL AND users.failed_census_calls_count > ?) OR (users.residence_verified_at IS NOT NULL AND (users.unconfirmed_phone IS NULL OR users.confirmed_phone IS NULL))", 0) } end def verification_email_sent? diff --git a/spec/concerns/verification_spec.rb b/spec/concerns/verification_spec.rb index da66da915..4b48dc5d1 100644 --- a/spec/concerns/verification_spec.rb +++ b/spec/concerns/verification_spec.rb @@ -55,27 +55,20 @@ shared_examples_for "verifiable" do end end - describe "#with_failed_attempts" do - it "returns users with failed verification attempts" do - user1 = create(:user, verified_at: nil, confirmed_phone: nil) - user2 = create(:user, verified_at: nil, confirmed_phone: nil) - create(:failed_census_call, user: user1) - - expect(model.with_failed_attempts).to include(user1) - expect(model.with_failed_attempts).to_not include(user2) - end - end - describe "#incomplete_verification" do it "returns users with incomplete verifications" do user1 = create(:user, verified_at: nil, confirmed_phone: nil) - user2 = create(:user, verified_at: nil, confirmed_phone: nil) - user3 = create(:user, verified_at: Time.now, residence_verified_at: Time.now, confirmed_phone: "123456789") create(:failed_census_call, user: user1) - expect(model.with_failed_attempts).to include(user1) - expect(model.with_failed_attempts).to_not include(user2) - expect(model.with_failed_attempts).to_not include(user3) + user2 = create(:user, verified_at: nil, residence_verified_at: Time.now, unconfirmed_phone: nil) + user3 = create(:user, verified_at: nil, confirmed_phone: nil) + user4 = create(:user, verified_at: Time.now, residence_verified_at: Time.now, unconfirmed_phone: "123456789", confirmed_phone: "123456789") + + + expect(model.incomplete_verification).to include(user1) + expect(model.incomplete_verification).to include(user2) + expect(model.incomplete_verification).to_not include(user3) + expect(model.incomplete_verification).to_not include(user4) end end end