From 7717f1df6e5a9ed31c879cf36febe012462cbbde Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 26 Jul 2023 08:39:44 +0100 Subject: [PATCH] Look at last signed in at to determine unconfirmed users --- app/models/user.rb | 5 +++-- spec/models/user_spec.rb | 8 ++++---- spec/requests/users_controller_spec.rb | 12 ++++++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 0c3775068..fbdd2131f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -61,6 +61,7 @@ class User < ApplicationRecord statuses.each do |status| status = status == "active" ? "active_status" : status + status = status == "unconfirmed" ? "not_signed_in" : status if respond_to?(status, true) scopes << send(status) end @@ -72,9 +73,9 @@ class User < ApplicationRecord filtered_records } - scope :unconfirmed, -> { where(confirmed_at: nil, active: true) } + scope :not_signed_in, -> { where(last_sign_in_at: nil, active: true) } scope :deactivated, -> { where(active: false) } - scope :active_status, -> { where(active: true).where.not(confirmed_at: nil) } + scope :active_status, -> { where(active: true).where.not(last_sign_in_at: nil) } def lettings_logs if support? diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 5e73af28a..9212ff20a 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -258,11 +258,11 @@ RSpec.describe User, type: :model do describe "scopes" do let(:organisation_1) { create(:organisation, :without_dpc, name: "A") } let(:organisation_2) { create(:organisation, :without_dpc, name: "B") } - let!(:user_1) { create(:user, name: "Joe Bloggs", email: "joe@example.com", organisation: organisation_1, role: "support") } + let!(:user_1) { create(:user, name: "Joe Bloggs", email: "joe@example.com", organisation: organisation_1, role: "support", last_sign_in_at: Time.zone.now) } let!(:user_2) { create(:user, name: "Jenny Ford", email: "jenny@smith.com", organisation: organisation_1, role: "data_coordinator") } let!(:user_3) { create(:user, name: "Tom Smith", email: "tom@example.com", organisation: organisation_1, role: "data_provider") } let!(:user_4) { create(:user, name: "Greg Thomas", email: "greg@org2.com", organisation: organisation_2, role: "data_coordinator") } - let!(:user_5) { create(:user, name: "Adam Thomas", email: "adam@org2.com", organisation: organisation_2, role: "data_coordinator") } + let!(:user_5) { create(:user, name: "Adam Thomas", email: "adam@org2.com", organisation: organisation_2, role: "data_coordinator", last_sign_in_at: Time.zone.now) } context "when searching by name" do it "returns case insensitive matching records" do @@ -294,8 +294,8 @@ RSpec.describe User, type: :model do context "when filtering by status" do before do user_2.update!(active: false) - user_3.update!(active: false, confirmed_at: nil) - user_4.update!(confirmed_at: nil) + user_3.update!(active: false, last_sign_in_at: nil) + user_4.update!(last_sign_in_at: nil) end context "when filtering by active status" do diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index 497d1b33d..984090863 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -474,9 +474,9 @@ RSpec.describe UsersController, type: :request do context "when filtering" do context "with status filter" do - let!(:active_user) { create(:user, name: "active name", active: true, organisation: user.organisation) } - let!(:deactivated_user) { create(:user, active: false, name: "deactivated name", organisation: user.organisation) } - let!(:unconfirmed_user) { create(:user, confirmed_at: nil, name: "unconfirmed name", organisation: user.organisation) } + let!(:active_user) { create(:user, name: "active name", active: true, organisation: user.organisation, last_sign_in_at: Time.zone.now) } + let!(:deactivated_user) { create(:user, active: false, name: "deactivated name", organisation: user.organisation, last_sign_in_at: Time.zone.now) } + let!(:unconfirmed_user) { create(:user, last_sign_in_at: nil, name: "unconfirmed name", organisation: user.organisation) } it "shows users for multiple selected statuses" do get "/users?status[]=active&status[]=deactivated", headers:, params: {} @@ -1215,9 +1215,9 @@ RSpec.describe UsersController, type: :request do context "when filtering" do context "with status filter" do - let!(:active_user) { create(:user, name: "active name", active: true) } - let!(:deactivated_user) { create(:user, active: false, name: "deactivated name") } - let!(:unconfirmed_user) { create(:user, confirmed_at: nil, name: "unconfirmed name") } + let!(:active_user) { create(:user, name: "active name", active: true, last_sign_in_at: Time.zone.now) } + let!(:deactivated_user) { create(:user, active: false, name: "deactivated name", last_sign_in_at: Time.zone.now) } + let!(:unconfirmed_user) { create(:user, last_sign_in_at: nil, name: "unconfirmed name") } it "shows users for multiple selected statuses" do get "/users?status[]=active&status[]=deactivated", headers:, params: {}