From 7e6888dd849e58a2e8da233223b72a0f12480834 Mon Sep 17 00:00:00 2001 From: Chris D'Ambrosio Date: Fri, 29 Aug 2014 19:14:49 -0700 Subject: [PATCH 1/2] unfold multiline fields from ticket page --- lib/roart/ticket_page.rb | 8 +++++++- spec/roart/ticket_page_spec.rb | 18 ++++++++++++++++-- spec/test_data/ticket-v3.2.1.txt | 26 ++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 spec/test_data/ticket-v3.2.1.txt diff --git a/lib/roart/ticket_page.rb b/lib/roart/ticket_page.rb index e94be06..c7129d9 100644 --- a/lib/roart/ticket_page.rb +++ b/lib/roart/ticket_page.rb @@ -6,6 +6,7 @@ module TicketPage def to_hash hash = HashWithIndifferentAccess.new + unfold_fields! self.delete_if{|x| !x.include?(":")} return false if self.size == 0 self.each do |ln| @@ -24,6 +25,11 @@ def to_hash hash end + def unfold_fields! + unfolded = join("\n").gsub(/\n +/, " ") + replace(unfolded.lines) + end + def to_search_list_array array = Array.new self.each do |ticket| @@ -75,4 +81,4 @@ def to_history_hash end -end \ No newline at end of file +end diff --git a/spec/roart/ticket_page_spec.rb b/spec/roart/ticket_page_spec.rb index 0feda59..9fcf75d 100644 --- a/spec/roart/ticket_page_spec.rb +++ b/spec/roart/ticket_page_spec.rb @@ -32,7 +32,21 @@ end end - + + describe 'reading an old ticket (v3.2.1)' do + + before do + @page = File.open(File.join(File.dirname(__FILE__), %w[ .. test_data ticket-v3.2.1.txt])).readlines.join + @page = @page.split("\n") + @page.extend(Roart::TicketPage) + end + + it 'should unfold multiline fields' do + @page.to_hash[:requestors].should match('steve@oceanic.com') + @page.to_hash[:requestors].should match('scott@oceanic.com') + end + end + describe 'search array' do before do @@ -90,4 +104,4 @@ end -end \ No newline at end of file +end diff --git a/spec/test_data/ticket-v3.2.1.txt b/spec/test_data/ticket-v3.2.1.txt new file mode 100644 index 0000000..aa37821 --- /dev/null +++ b/spec/test_data/ticket-v3.2.1.txt @@ -0,0 +1,26 @@ +RT/3.2.1 200 Ok + +id: ticket/815 +Queue: RspecTests +Owner: chrisdambrosio +Creator: chrisdambrosio +Subject: Support very old installations +Status: open +Priority: 0 +InitialPriority: 0 +FinalPriority: 0 + +Requestors: scott@oceanic.com, + steve@oceanic.com + +Cc: +AdminCc: +Created: Mon Aug 11 11:34:24 2014 +Starts: Not set +Started: Not set +Due: Not set +Resolved: Not set +Told: Not set +TimeEstimated: 0 +TimeWorked: 0 +TimeLeft: 0 From 13c1d7845de55e8d56c17741b9c7dc13880e4edb Mon Sep 17 00:00:00 2001 From: Chris D'Ambrosio Date: Fri, 29 Aug 2014 23:44:27 -0700 Subject: [PATCH 2/2] ticket page handles non-keypair deletions --- lib/roart/ticket.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/roart/ticket.rb b/lib/roart/ticket.rb index 4029acb..4850b7a 100644 --- a/lib/roart/ticket.rb +++ b/lib/roart/ticket.rb @@ -293,7 +293,6 @@ def page_array(uri) #:nodoc: page = page.split("\n") status = page.delete_at(0) if status.include?("200") - page.delete_if{|x| !x.include?(":")} page else raise TicketSystemInterfaceError, "Error Getting Ticket: #{status}"