From e94fabbaa8e91bead09a82c94e79455b8c78a6e6 Mon Sep 17 00:00:00 2001 From: Rishabh Saxena Date: Sat, 12 Mar 2016 11:57:48 +0530 Subject: [PATCH 1/2] after destroy callback for registration --- app/models/registration.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/models/registration.rb b/app/models/registration.rb index 2f2d5c68..6b35e759 100644 --- a/app/models/registration.rb +++ b/app/models/registration.rb @@ -29,6 +29,7 @@ class Registration < ActiveRecord::Base validate :registration_limit_not_exceed, on: :create after_create :set_week, :subscribe_to_conference, :send_registration_mail + after_destroy :destroy_purchased_tickets def week created_at.strftime('%W').to_i @@ -36,6 +37,13 @@ class Registration < ActiveRecord::Base private + def destroy_purchased_tickets + ticket_purchased = TicketPurchase.where(conference_id: conference_id) + unless ticket_purchased.empty? + ticket_purchased.destroy_all + end + end + def subscribe_to_conference Subscription.create(conference_id: conference.id, user_id: user.id) end From e826bb85ebb8893c3f9ca205cdfddd0cd2c81e9d Mon Sep 17 00:00:00 2001 From: Rishabh Saxena Date: Sat, 12 Mar 2016 14:08:32 +0530 Subject: [PATCH 2/2] writing tests for deleting tickets after unregistering writing tests for deleting tickets after unregistering --- spec/models/registration_spec.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/spec/models/registration_spec.rb b/spec/models/registration_spec.rb index 1bf9e88f..820ca0b9 100644 --- a/spec/models/registration_spec.rb +++ b/spec/models/registration_spec.rb @@ -22,4 +22,17 @@ describe 'Registration' do end end end + describe 'after destroy' do + it 'destroys purchased tickets' do + conference = build(:conference) + registration1 = build(:registration, conference: conference) + registration1.save + ticket_purchase = build(:ticket_purchase, conference: conference) + ticket_purchase.save + expect(conference.ticket_purchases.size).to be 1 + registration1.destroy + expect(conference.registrations.size).to be 0 + expect(conference.ticket_purchases.size).to be 0 + end + end end