diff --git a/lib/sequencer/unit/import/zendesk/ticket/comment/source_based.rb b/lib/sequencer/unit/import/zendesk/ticket/comment/source_based.rb index ee130de05..5932ff3a8 100644 --- a/lib/sequencer/unit/import/zendesk/ticket/comment/source_based.rb +++ b/lib/sequencer/unit/import/zendesk/ticket/comment/source_based.rb @@ -9,9 +9,12 @@ class Sequencer uses :resource def value - method_name = resource.via.channel.to_sym - return if !respond_to?(method_name, true) - send(method_name) + return if private_methods(false).exclude?(value_method_name) + send(value_method_name) + end + + def value_method_name + @value_method_name ||= resource.via.channel.to_sym end end end diff --git a/spec/lib/sequencer/unit/import/zendesk/ticket/comment/source_based_spec.rb b/spec/lib/sequencer/unit/import/zendesk/ticket/comment/source_based_spec.rb new file mode 100644 index 000000000..bb09d5659 --- /dev/null +++ b/spec/lib/sequencer/unit/import/zendesk/ticket/comment/source_based_spec.rb @@ -0,0 +1,39 @@ +require 'rails_helper' + +RSpec.describe Sequencer::Unit::Import::Zendesk::Ticket::Comment::SourceBased, sequencer: :unit do + + before(:all) do + + described_class.class_eval do + + private + + def email + 'test@example.com' + end + end + end + + def parameters_for_channel(channel) + { + resource: double( + via: double( + channel: channel + ) + ) + } + end + + context 'for resource.via.channel attribute' do + + it 'provides from existing method' do + provided = process(parameters_for_channel('email')) + expect(provided[:source_based]).to eq('test@example.com') + end + + it 'provides nil for non existing method' do + provided = process(parameters_for_channel('system')) + expect(provided[:source_based]).to be_nil + end + end +end