diff --git a/app/models/user.rb b/app/models/user.rb index a0a9d5f..04e0bec 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -16,6 +16,9 @@ class User < ActiveRecord::Base after_invitation_accepted :accept_invite + scope :guests, -> { where(first_name: 'guest') } + scope :stale_guests, -> { guests.where('created_at < ?', 1.week.ago) } + def area_code self.phone ? self.phone.slice(0,3) : nil end diff --git a/lib/tasks/destroy_stale_guest_users.rake b/lib/tasks/destroy_stale_guest_users.rake new file mode 100644 index 0000000..54d11c7 --- /dev/null +++ b/lib/tasks/destroy_stale_guest_users.rake @@ -0,0 +1,3 @@ +task destroy_stale_guest_users: :environment do + User.stale_guests.destroy_all +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 257ea4f..916879a 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -107,4 +107,24 @@ expect(user.most_recent_bills(2)).to be_a(Array) end end + + describe '.guests' do + let!(:guest) { create :user, first_name: 'guest' } + let!(:not_guest) { create :user, first_name: 'not guest' } + subject { User.guests } + + it { is_expected.to include(guest) } + it { is_expected.not_to include(not_guest) } + end + + describe '.stale_guests' do + let!(:stale_guest) { create :user, first_name: 'guest', created_at: 2.weeks.ago } + let!(:not_stale) { create :user, first_name: 'guest' } + let!(:not_guest) { create :user, first_name: 'not guest', created_at: 2.weeks.ago } + subject { User.stale_guests } + + it { is_expected.to include(stale_guest) } + it { is_expected.not_to include(not_stale) } + it { is_expected.not_to include(not_guest) } + end end