diff --git a/app/models/concerns/verification.rb b/app/models/concerns/verification.rb index da484bff0..2f644158a 100644 --- a/app/models/concerns/verification.rb +++ b/app/models/concerns/verification.rb @@ -3,9 +3,9 @@ module Verification included do scope :level_three_verified, -> { where.not(verified_at: nil) } - 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 :level_two_verified, -> { where("users.level_two_verified_at IS NOT NULL OR (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.level_two_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.level_two_verified_at IS NULL AND (users.residence_verified_at IS NULL OR users.confirmed_phone IS NULL))") } 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 @@ -30,7 +30,7 @@ module Verification end def level_two_verified? - residence_verified? && sms_verified? + level_two_verified_at.present? || (residence_verified? && sms_verified?) end def level_three_verified? diff --git a/spec/concerns/verification_spec.rb b/spec/concerns/verification_spec.rb index 4b48dc5d1..3f9efb94c 100644 --- a/spec/concerns/verification_spec.rb +++ b/spec/concerns/verification_spec.rb @@ -19,10 +19,12 @@ shared_examples_for "verifiable" do user1 = create(:user, confirmed_phone: "123456789", residence_verified_at: Time.now) user2 = create(:user, confirmed_phone: "123456789", residence_verified_at: nil) user3 = create(:user, confirmed_phone: nil, residence_verified_at: Time.now) + user4 = create(:user, level_two_verified_at: Time.now) expect(model.level_two_verified).to include(user1) expect(model.level_two_verified).to_not include(user2) expect(model.level_two_verified).to_not include(user3) + expect(model.level_two_verified).to include(user4) end end @@ -32,12 +34,13 @@ shared_examples_for "verifiable" do user2 = create(:user, verified_at: Time.now) user3 = create(:user, confirmed_phone: "123456789", residence_verified_at: nil) user4 = create(:user, confirmed_phone: nil, residence_verified_at: Time.now) - + user5 = create(:user, level_two_verified_at: Time.now) expect(model.level_two_or_three_verified).to include(user1) expect(model.level_two_or_three_verified).to include(user2) expect(model.level_two_or_three_verified).to_not include(user3) expect(model.level_two_or_three_verified).to_not include(user4) + expect(model.level_two_or_three_verified).to include(user5) end end @@ -47,11 +50,13 @@ shared_examples_for "verifiable" do user2 = create(:user, verified_at: nil, residence_verified_at: nil, confirmed_phone: "123456789") user3 = create(:user, verified_at: nil, residence_verified_at: Time.now, confirmed_phone: nil) user4 = create(:user, verified_at: Time.now, residence_verified_at: Time.now, confirmed_phone: "123456789") + user5 = create(:user, level_two_verified_at: Time.now) expect(model.unverified).to include(user1) expect(model.unverified).to include(user2) expect(model.unverified).to include(user3) expect(model.unverified).to_not include(user4) + expect(model.unverified).to_not include(user5) end end @@ -90,7 +95,10 @@ shared_examples_for "verifiable" do expect(user.sms_verified?).to eq(false) end - it "level_two_verified? is true only if residence_verified_at and confirmed_phone" do + it "level_two_verified? is true if manually set, or if residence_verified_at and confirmed_phone" do + user = create(:user, level_two_verified_at: Time.now) + expect(user.level_two_verified?).to eq(true) + user = create(:user, confirmed_phone: "123456789", residence_verified_at: Time.now) expect(user.level_two_verified?).to eq(true) @@ -153,4 +161,4 @@ shared_examples_for "verifiable" do expect(user.verification_letter_sent?).to eq(false) end end -end \ No newline at end of file +end