Browse Source

Look at last signed in at to determine unconfirmed users

pull/1797/head
Kat 3 years ago
parent
commit
7717f1df6e
  1. 5
      app/models/user.rb
  2. 8
      spec/models/user_spec.rb
  3. 12
      spec/requests/users_controller_spec.rb

5
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?

8
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

12
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: {}

Loading…
Cancel
Save