diff --git a/app/models/invitation.rb b/app/models/invitation.rb index 74c3998..6400e35 100644 --- a/app/models/invitation.rb +++ b/app/models/invitation.rb @@ -6,6 +6,9 @@ class Invitation < ApplicationRecord before_create :generate_token + scope :unused, -> { where(used_at: nil) } + scope :used, -> { where.not(used_at: nil) } + private def generate_token diff --git a/spec/models/invitation_spec.rb b/spec/models/invitation_spec.rb index 7f7b953..3ec7237 100644 --- a/spec/models/invitation_spec.rb +++ b/spec/models/invitation_spec.rb @@ -19,4 +19,26 @@ RSpec.describe Invitation, type: :model do expect(token).not_to eq(invitation_2.token) end end + + describe "scopes" do + before do + @unused_invitation = create :invitation, user: user + @used_invitation = create :invitation, user: user, used_at: DateTime.now + @used_invitation_2 = create :invitation, user: user, used_at: DateTime.now + end + + describe "#unused" do + it "returns unused invitations" do + expect(Invitation.unused.count).to eq(1) + expect(Invitation.unused.first).to eq(@unused_invitation) + end + end + + describe "#used" do + it "returns used invitations" do + expect(Invitation.used.count).to eq(2) + expect(Invitation.used.first).to eq(@used_invitation) + end + end + end end