diff --git a/app/models/ticket.rb b/app/models/ticket.rb index ac7727f6..e805ad89 100644 --- a/app/models/ticket.rb +++ b/app/models/ticket.rb @@ -15,4 +15,7 @@ class Ticket < ActiveRecord::Base has_one :nonprofit, through: :event has_many :activities, as: :attachment, dependent: :destroy + def related_tickets + payment.tickets.where('id != ?', self.id) + end end diff --git a/spec/models/ticket_spec.rb b/spec/models/ticket_spec.rb new file mode 100644 index 00000000..33ab7ecf --- /dev/null +++ b/spec/models/ticket_spec.rb @@ -0,0 +1,35 @@ +# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later +require 'rails_helper' + +RSpec.describe Ticket, type: :model do + let(:payment1) { force_create(:payment)} + let(:payment2) { force_create(:payment)} + let(:ticket1) { force_create(:ticket, payment: payment1)} + let(:ticket2) { force_create(:ticket, payment: payment1)} + let(:ticket3) { force_create(:ticket, payment: payment1)} + let(:ticket4) { force_create(:ticket, payment: payment2)} + + before(:each) do + ticket1 + ticket2 + ticket3 + ticket4 + end + + it 'has ticket1 getting ticket2 and ticket3 for related_tickets' do + expect(ticket1.related_tickets).to contain_exactly(ticket2, ticket3) + end + + it 'has ticket2 getting ticket1 and ticket3 for related_tickets' do + expect(ticket2.related_tickets).to contain_exactly(ticket1, ticket3) + end + + + it 'has ticket3 getting ticket1 and ticket2 for related_tickets' do + expect(ticket3.related_tickets).to contain_exactly(ticket1, ticket2) + end + + it 'has ticket4 getting no related tickets' do + expect(ticket4.related_tickets).to be_empty + end +end