diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index a7514f19..c968a091 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -434,7 +434,7 @@ Metrics/BlockNesting: # Offense count: 13 # Configuration parameters: CountComments. Metrics/ClassLength: - Max: 650 + Max: 652 # Offense count: 33 Metrics/CyclomaticComplexity: diff --git a/app/models/conference.rb b/app/models/conference.rb index be3c36ad..8d0b786d 100644 --- a/app/models/conference.rb +++ b/app/models/conference.rb @@ -25,6 +25,9 @@ class Conference < ApplicationRecord has_one :email_settings, dependent: :destroy has_one :program, dependent: :destroy has_one :venue, dependent: :destroy + delegate :city, :country_name, to: :venue, allow_nil: true + delegate :name, :street, to: :venue, prefix: true, allow_nil: true + has_many :physical_tickets, through: :ticket_purchases has_many :ticket_purchases, dependent: :destroy has_many :payments, dependent: :destroy diff --git a/app/pdfs/ticket_pdf.rb b/app/pdfs/ticket_pdf.rb index 306d5870..c4408e7c 100644 --- a/app/pdfs/ticket_pdf.rb +++ b/app/pdfs/ticket_pdf.rb @@ -69,9 +69,9 @@ class TicketPdf < Prawn::Document draw_text @conference.title.to_s, at: [@mid_horizontal + 30, cursor - 30], size: 12 draw_text @conference.organization.name.to_s, at: [@mid_horizontal + 30, cursor - 50], size: 12 if @conference.venue - draw_text @conference.venue.name, at: [@mid_horizontal + 30, cursor - 70] - draw_text @conference.venue.street, at: [@mid_horizontal + 30, cursor - 90] - draw_text @conference.venue.city, at: [@mid_horizontal + 30, cursor - 110] + draw_text @conference.venue_name, at: [@mid_horizontal + 30, cursor - 70] + draw_text @conference.venue_street, at: [@mid_horizontal + 30, cursor - 90] + draw_text @conference.city, at: [@mid_horizontal + 30, cursor - 110] end move_up 130 move_down @mid_vertical diff --git a/app/views/conference_registrations/show.html.haml b/app/views/conference_registrations/show.html.haml index d060e412..359b9de7 100644 --- a/app/views/conference_registrations/show.html.haml +++ b/app/views/conference_registrations/show.html.haml @@ -9,9 +9,9 @@ -if @conference.venue at %strong - = "#{@conference.venue.name}," - = "#{@conference.venue.street}," - = "#{@conference.venue.city} / #{@conference.venue.country_name}." + = "#{@conference.venue_name}," + = "#{@conference.venue_street}," + = "#{@conference.city} / #{@conference.country_name}." %small = date_string(@conference.start_date, @conference.end_date) - unless @conference.code_of_conduct.blank? diff --git a/app/views/conferences/_conference_details.html.haml b/app/views/conferences/_conference_details.html.haml index 08b73023..ea33887e 100644 --- a/app/views/conferences/_conference_details.html.haml +++ b/app/views/conferences/_conference_details.html.haml @@ -12,7 +12,7 @@ = date_string(conference.start_date, conference.end_date) - if conference.venue %p - = "#{conference.venue.city}/#{conference.venue.country_name}" + = "#{conference.city}/#{conference.country_name}" - unless conference.description.blank? %p = markdown(conference.description) diff --git a/app/views/physical_tickets/show.html.haml b/app/views/physical_tickets/show.html.haml index 7dbc44da..ec8e7379 100644 --- a/app/views/physical_tickets/show.html.haml +++ b/app/views/physical_tickets/show.html.haml @@ -9,9 +9,9 @@ - if @conference.venue at %strong - #{@conference.venue.name}, - #{@conference.venue.street}, - #{@conference.venue.city} / #{@conference.venue.country_name}. + #{@conference.venue_name}, + #{@conference.venue_street}, + #{@conference.city} / #{@conference.country_name}. %small = date_string(@conference.start_date, @conference.end_date) .row diff --git a/spec/models/conference_spec.rb b/spec/models/conference_spec.rb index 64cc1aea..1c3ecb3b 100755 --- a/spec/models/conference_spec.rb +++ b/spec/models/conference_spec.rb @@ -3,6 +3,34 @@ # frozen_string_literal: true require 'spec_helper' +context 'Delegation' do + subject do + FactoryBot.create(:conference, start_date: 1.month.from_now, end_date: 2.month.from_now) + end + + context 'Venue' do + context 'when venue has not been set' do + it 'the accessors should be nil' do + expect(subject.city).to eq(nil) + expect(subject.country_name).to eq(nil) + expect(subject.venue_name).to eq(nil) + expect(subject.venue_street).to eq(nil) + end + end + + context 'when venue has been set' do + it 'should delegate to venue' do + venue = FactoryBot.create(:venue) + subject.update(venue: venue) + expect(subject.city).to eq(venue.city) + expect(subject.country_name).to eq(venue.country_name) + expect(subject.venue_name).to eq(venue.name) + expect(subject.venue_street).to eq(venue.street) + end + end + end +end + describe Conference do let(:subject) { create(:conference, start_date: Date.new(2014, 06, 30), end_date: Date.new(2014, 06, 30)) }