roart 0.1.5.1 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,21 +2,20 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{roart}
5
- s.version = "0.1.5"
5
+ s.version = "0.1.6"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["PJ Davis"]
9
- s.date = %q{2010-01-12}
9
+ s.date = %q{2010-03-09}
10
10
  s.description = %q{Interface for working with Request Tracker (RT) tickets inspired by ActiveRecord.}
11
11
  s.email = %q{pj.davis@gmail.com}
12
- s.extra_rdoc_files = ["History.txt", "README.rdoc", "spec/test_data/full_history.txt", "spec/test_data/single_history.txt"]
13
- s.files = ["History.txt", "README.rdoc", "Rakefile", "lib/roart.rb", "lib/roart/callbacks.rb", "lib/roart/connection.rb", "lib/roart/core/array.rb", "lib/roart/core/hash.rb", "lib/roart/core/string.rb", "lib/roart/errors.rb", "lib/roart/history.rb", "lib/roart/roart.rb", "lib/roart/ticket.rb", "lib/roart/ticket_page.rb", "roart.gemspec", "spec/roart/callbacks_spec.rb", "spec/roart/connection_spec.rb", "spec/roart/core/array_spec.rb", "spec/roart/core/hash_spec.rb", "spec/roart/core/string_spec.rb", "spec/roart/history_spec.rb", "spec/roart/roart_spec.rb", "spec/roart/ticket_page_spec.rb", "spec/roart/ticket_spec.rb", "spec/roart_spec.rb", "spec/spec_helper.rb", "spec/test_data/full_history.txt", "spec/test_data/single_history.txt"]
14
- s.has_rdoc = true
12
+ s.extra_rdoc_files = ["History.txt", "README.rdoc", "spec/test_data/full_history.txt", "spec/test_data/search_ticket.txt", "spec/test_data/single_history.txt", "spec/test_data/ticket.txt"]
13
+ s.files = ["History.txt", "README.rdoc", "Rakefile", "lib/roart.rb", "lib/roart/callbacks.rb", "lib/roart/connection.rb", "lib/roart/connection_adapter.rb", "lib/roart/connection_adapters/mechanize_adapter.rb", "lib/roart/core/array.rb", "lib/roart/core/hash.rb", "lib/roart/core/hash/indifferent_access.rb", "lib/roart/core/string.rb", "lib/roart/errors.rb", "lib/roart/history.rb", "lib/roart/roart.rb", "lib/roart/ticket.rb", "lib/roart/ticket_page.rb", "lib/roart/validations.rb", "roart.gemspec", "spec/roart/callbacks_spec.rb", "spec/roart/connection_adapter_spec.rb", "spec/roart/connection_spec.rb", "spec/roart/core/array_spec.rb", "spec/roart/core/hash_spec.rb", "spec/roart/core/string_spec.rb", "spec/roart/history_spec.rb", "spec/roart/roart_spec.rb", "spec/roart/ticket_page_spec.rb", "spec/roart/ticket_spec.rb", "spec/roart_spec.rb", "spec/spec_helper.rb", "spec/test_data/full_history.txt", "spec/test_data/search_ticket.txt", "spec/test_data/single_history.txt", "spec/test_data/ticket.txt"]
15
14
  s.homepage = %q{http://github.com/pjdavis/roart}
16
15
  s.rdoc_options = ["--main", "README.rdoc"]
17
16
  s.require_paths = ["lib"]
18
17
  s.rubyforge_project = %q{roart}
19
- s.rubygems_version = %q{1.3.2}
18
+ s.rubygems_version = %q{1.3.5}
20
19
  s.summary = %q{Interface for working with Request Tracker (RT) tickets inspired by ActiveRecord}
21
20
 
22
21
  if s.respond_to? :specification_version then
@@ -24,14 +23,14 @@ Gem::Specification.new do |s|
24
23
  s.specification_version = 3
25
24
 
26
25
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
- s.add_runtime_dependency(%q<mechanize>, [">= 0.9.0"])
26
+ s.add_runtime_dependency(%q<mechanize>, [">= 0.9.3"])
28
27
  s.add_development_dependency(%q<bones>, [">= 2.5.1"])
29
28
  else
30
- s.add_dependency(%q<mechanize>, [">= 0.9.0"])
29
+ s.add_dependency(%q<mechanize>, [">= 0.9.3"])
31
30
  s.add_dependency(%q<bones>, [">= 2.5.1"])
32
31
  end
33
32
  else
34
- s.add_dependency(%q<mechanize>, [">= 0.9.0"])
33
+ s.add_dependency(%q<mechanize>, [">= 0.9.3"])
35
34
  s.add_dependency(%q<bones>, [">= 2.5.1"])
36
35
  end
37
- end
36
+ end
@@ -5,7 +5,7 @@ describe 'ticket callbacks' do
5
5
  describe 'create callbacks' do
6
6
 
7
7
  before do
8
- post_data = @payload = {:subject => 'A New Ticket', :queue => 'My Queue'}
8
+ post_data = @payload = {:queue => 'My Queue', :subject => 'A New Ticket'}
9
9
  post_data.update(:id => 'ticket/new')
10
10
  post_data = to_content_format(post_data)
11
11
  mock_connection = mock('connection')
@@ -27,7 +27,7 @@ describe 'ticket callbacks' do
27
27
  describe 'update callbacks' do
28
28
 
29
29
  before do
30
- @post_data = @payload = {:subject => 'A New Ticket', :queue => 'My Queue'}
30
+ @post_data = @payload = {:subject => 'A New Ticket', :queue => 'My Queue'}.with_indifferent_access
31
31
  @post_data[:subject] = 'An Old Ticket'
32
32
  @post_data = to_content_format(@post_data)
33
33
  @mock_connection = mock('connection')
@@ -28,7 +28,7 @@ describe 'ticket page' do
28
28
  end
29
29
 
30
30
  it 'should be a hash' do
31
- @page.to_hash.class.should == Hash
31
+ @page.to_hash.class.should == HashWithIndifferentAccess
32
32
  end
33
33
 
34
34
  end
@@ -51,6 +51,22 @@ describe 'ticket page' do
51
51
  end
52
52
 
53
53
  end
54
+
55
+ describe "search list array" do
56
+ before do
57
+ @array = [['id:234', 'subject:SomeTicket', ], ['id:432','subject:Another']]
58
+ @array.extend(Roart::TicketPage)
59
+ @array = @array.to_search_list_array
60
+ end
61
+
62
+ it "should return an array of hashes" do
63
+ @array.first.class.should == HashWithIndifferentAccess
64
+ end
65
+
66
+ it "should put the search elements into the array" do
67
+ @array.first[:id].should == 234
68
+ end
69
+ end
54
70
 
55
71
  describe 'ticket history hash' do
56
72
 
@@ -61,7 +77,7 @@ describe 'ticket page' do
61
77
  end
62
78
 
63
79
  it 'should give back the hash of history' do
64
- @page.to_history_hash.class.should == Hash
80
+ @page.to_history_hash.class.should == HashWithIndifferentAccess
65
81
  end
66
82
 
67
83
  it 'should have some content' do
@@ -72,16 +72,23 @@ describe "Ticket" do
72
72
  describe 'search' do
73
73
 
74
74
  it 'should give an array of tickets' do
75
- Roart::Ticket.should_receive(:page_array).with('uri').and_return(['23:SomeTicket', '33:Another'])
75
+ Roart::Ticket.should_receive(:page_list_array).with('uri&format=l').and_return([['id:234', 'subject:SomeTicket', ], ['id:432','subject:Another']])
76
76
  Roart::Ticket.send(:get_tickets_from_search_uri, 'uri').size.should == 2
77
77
  end
78
78
 
79
- it 'should not have full tickets' do
80
- Roart::Ticket.should_receive(:page_array).with('uri').and_return(['23:SomeTicket', '33:Another'])
79
+ it 'should have full tickets' do
80
+ Roart::Ticket.should_receive(:page_list_array).with('uri&format=l').and_return([['id:234', 'subject:SomeTicket', ], ['id:432','subject:Another']])
81
81
  Roart::Ticket.send(:get_tickets_from_search_uri, 'uri').each do |ticket|
82
- ticket.full.should_not be_true
82
+ ticket.full.should be_true
83
83
  end
84
84
  end
85
+
86
+ it 'should give back an array of arrays of strings' do
87
+ test_data = File.open(File.dirname(__FILE__) + "/../test_data/search_ticket.txt").readlines.join("\n")
88
+ connection = mock('connection', :get => test_data)
89
+ Roart::Ticket.should_receive(:connection).and_return(connection)
90
+ Roart::Ticket.send(:page_list_array, 'uri').should == [["id: ticket/3033", "Queue: Canada Express", "Subject: Canada Express", "Status: new"], ["id: ticket/2354", "Queue: Canada Express", "Subject: Canada Express", "Status: open"]]
91
+ end
85
92
 
86
93
  end
87
94
 
@@ -330,7 +337,7 @@ describe "Ticket" do
330
337
  describe 'creating tickets' do
331
338
 
332
339
  before do
333
- post_data = @payload = {:subject => 'A New Ticket', :queue => 'My Queue'}
340
+ post_data = @payload = {:queue => 'My Queue', :subject => 'A New Ticket'}
334
341
  post_data.update(:id => 'ticket/new')
335
342
  post_data = to_content_format(post_data)
336
343
  mock_connection = mock('connection')
@@ -362,8 +369,8 @@ describe "Ticket" do
362
369
  describe 'updating tickets' do
363
370
 
364
371
  before do
365
- @payload = {:queue => 'My Queue', :subject => 'An Old Ticket'}
366
- @post_data = {:queue => 'My Queue', :subject => 'An Old Ticket'}
372
+ @payload = {:queue => 'My Queue', :subject => 'An Old Ticket'}.with_indifferent_access
373
+ @post_data = {:queue => 'My Queue', :subject => 'An Old Ticket'}.with_indifferent_access
367
374
  @payload[:subject] = 'A New Ticket'
368
375
  @post_data = to_content_format(@post_data)
369
376
  @mock_connection = mock('connection')
@@ -10,7 +10,7 @@ end
10
10
 
11
11
  def to_content_format(data)
12
12
  fields = data.map { |key,value| "#{key.to_s.camelize}: #{value}" unless value.nil? }
13
- fields.compact.join("\n")
13
+ fields.compact.sort.join("\n")
14
14
  end
15
15
 
16
16
  Spec::Runner.configure do |config|
@@ -0,0 +1,13 @@
1
+ RT/3.6.6 200 Ok
2
+
3
+ id: ticket/3033
4
+ Queue: Canada Express
5
+ Subject: Canada Express
6
+ Status: new
7
+
8
+ --
9
+
10
+ id: ticket/2354
11
+ Queue: Canada Express
12
+ Subject: Canada Express
13
+ Status: open
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roart
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5.1
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - PJ Davis
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-20 00:00:00 -06:00
12
+ date: 2010-03-09 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,6 +42,7 @@ extra_rdoc_files:
42
42
  - History.txt
43
43
  - README.rdoc
44
44
  - spec/test_data/full_history.txt
45
+ - spec/test_data/search_ticket.txt
45
46
  - spec/test_data/single_history.txt
46
47
  - spec/test_data/ticket.txt
47
48
  files:
@@ -55,6 +56,7 @@ files:
55
56
  - lib/roart/connection_adapters/mechanize_adapter.rb
56
57
  - lib/roart/core/array.rb
57
58
  - lib/roart/core/hash.rb
59
+ - lib/roart/core/hash/indifferent_access.rb
58
60
  - lib/roart/core/string.rb
59
61
  - lib/roart/errors.rb
60
62
  - lib/roart/history.rb
@@ -76,21 +78,9 @@ files:
76
78
  - spec/roart_spec.rb
77
79
  - spec/spec_helper.rb
78
80
  - spec/test_data/full_history.txt
81
+ - spec/test_data/search_ticket.txt
79
82
  - spec/test_data/single_history.txt
80
83
  - spec/test_data/ticket.txt
81
- - tasks/ann.rake
82
- - tasks/bones.rake
83
- - tasks/gem.rake
84
- - tasks/git.rake
85
- - tasks/notes.rake
86
- - tasks/post_load.rake
87
- - tasks/rdoc.rake
88
- - tasks/rubyforge.rake
89
- - tasks/setup.rb
90
- - tasks/spec.rake
91
- - tasks/svn.rake
92
- - tasks/test.rake
93
- - tasks/zentest.rake
94
84
  has_rdoc: true
95
85
  homepage: http://github.com/pjdavis/roart
96
86
  licenses: []
@@ -1,80 +0,0 @@
1
-
2
- begin
3
- require 'bones/smtp_tls'
4
- rescue LoadError
5
- require 'net/smtp'
6
- end
7
- require 'time'
8
-
9
- namespace :ann do
10
-
11
- # A prerequisites task that all other tasks depend upon
12
- task :prereqs
13
-
14
- file PROJ.ann.file do
15
- ann = PROJ.ann
16
- puts "Generating #{ann.file}"
17
- File.open(ann.file,'w') do |fd|
18
- fd.puts("#{PROJ.name} version #{PROJ.version}")
19
- fd.puts(" by #{Array(PROJ.authors).first}") if PROJ.authors
20
- fd.puts(" #{PROJ.url}") if PROJ.url.valid?
21
- fd.puts(" (the \"#{PROJ.release_name}\" release)") if PROJ.release_name
22
- fd.puts
23
- fd.puts("== DESCRIPTION")
24
- fd.puts
25
- fd.puts(PROJ.description)
26
- fd.puts
27
- fd.puts(PROJ.changes.sub(%r/^.*$/, '== CHANGES'))
28
- fd.puts
29
- ann.paragraphs.each do |p|
30
- fd.puts "== #{p.upcase}"
31
- fd.puts
32
- fd.puts paragraphs_of(PROJ.readme_file, p).join("\n\n")
33
- fd.puts
34
- end
35
- fd.puts ann.text if ann.text
36
- end
37
- end
38
-
39
- desc "Create an announcement file"
40
- task :announcement => ['ann:prereqs', PROJ.ann.file]
41
-
42
- desc "Send an email announcement"
43
- task :email => ['ann:prereqs', PROJ.ann.file] do
44
- ann = PROJ.ann
45
- from = ann.email[:from] || Array(PROJ.authors).first || PROJ.email
46
- to = Array(ann.email[:to])
47
-
48
- ### build a mail header for RFC 822
49
- rfc822msg = "From: #{from}\n"
50
- rfc822msg << "To: #{to.join(',')}\n"
51
- rfc822msg << "Subject: [ANN] #{PROJ.name} #{PROJ.version}"
52
- rfc822msg << " (#{PROJ.release_name})" if PROJ.release_name
53
- rfc822msg << "\n"
54
- rfc822msg << "Date: #{Time.new.rfc822}\n"
55
- rfc822msg << "Message-Id: "
56
- rfc822msg << "<#{"%.8f" % Time.now.to_f}@#{ann.email[:domain]}>\n\n"
57
- rfc822msg << File.read(ann.file)
58
-
59
- params = [:server, :port, :domain, :acct, :passwd, :authtype].map do |key|
60
- ann.email[key]
61
- end
62
-
63
- params[3] = PROJ.email if params[3].nil?
64
-
65
- if params[4].nil?
66
- STDOUT.write "Please enter your e-mail password (#{params[3]}): "
67
- params[4] = STDIN.gets.chomp
68
- end
69
-
70
- ### send email
71
- Net::SMTP.start(*params) {|smtp| smtp.sendmail(rfc822msg, from, to)}
72
- end
73
- end # namespace :ann
74
-
75
- desc 'Alias to ann:announcement'
76
- task :ann => 'ann:announcement'
77
-
78
- CLOBBER << PROJ.ann.file
79
-
80
- # EOF
@@ -1,20 +0,0 @@
1
-
2
- if HAVE_BONES
3
-
4
- namespace :bones do
5
-
6
- desc 'Show the PROJ open struct'
7
- task :debug do |t|
8
- atr = if t.application.top_level_tasks.length == 2
9
- t.application.top_level_tasks.pop
10
- end
11
-
12
- if atr then Bones::Debug.show_attr(PROJ, atr)
13
- else Bones::Debug.show PROJ end
14
- end
15
-
16
- end # namespace :bones
17
-
18
- end # HAVE_BONES
19
-
20
- # EOF
@@ -1,201 +0,0 @@
1
-
2
- require 'find'
3
- require 'rake/packagetask'
4
- require 'rubygems/user_interaction'
5
- require 'rubygems/builder'
6
-
7
- module Bones
8
- class GemPackageTask < Rake::PackageTask
9
- # Ruby GEM spec containing the metadata for this package. The
10
- # name, version and package_files are automatically determined
11
- # from the GEM spec and don't need to be explicitly provided.
12
- #
13
- attr_accessor :gem_spec
14
-
15
- # Tasks from the Bones gem directory
16
- attr_reader :bones_files
17
-
18
- # Create a GEM Package task library. Automatically define the gem
19
- # if a block is given. If no block is supplied, then +define+
20
- # needs to be called to define the task.
21
- #
22
- def initialize(gem_spec)
23
- init(gem_spec)
24
- yield self if block_given?
25
- define if block_given?
26
- end
27
-
28
- # Initialization tasks without the "yield self" or define
29
- # operations.
30
- #
31
- def init(gem)
32
- super(gem.name, gem.version)
33
- @gem_spec = gem
34
- @package_files += gem_spec.files if gem_spec.files
35
- @bones_files = []
36
-
37
- local_setup = File.join(Dir.pwd, %w[tasks setup.rb])
38
- if !test(?e, local_setup)
39
- Dir.glob(::Bones.path(%w[lib bones tasks *])).each {|fn| bones_files << fn}
40
- end
41
- end
42
-
43
- # Create the Rake tasks and actions specified by this
44
- # GemPackageTask. (+define+ is automatically called if a block is
45
- # given to +new+).
46
- #
47
- def define
48
- super
49
- task :prereqs
50
- task :package => ['gem:prereqs', "#{package_dir_path}/#{gem_file}"]
51
- file "#{package_dir_path}/#{gem_file}" => [package_dir_path] + package_files + bones_files do
52
- when_writing("Creating GEM") {
53
- chdir(package_dir_path) do
54
- Gem::Builder.new(gem_spec).build
55
- verbose(true) {
56
- mv gem_file, "../#{gem_file}"
57
- }
58
- end
59
- }
60
- end
61
-
62
- file package_dir_path => bones_files do
63
- mkdir_p package_dir rescue nil
64
-
65
- gem_spec.files = (gem_spec.files +
66
- bones_files.map {|fn| File.join('tasks', File.basename(fn))}).sort
67
-
68
- bones_files.each do |fn|
69
- base_fn = File.join('tasks', File.basename(fn))
70
- f = File.join(package_dir_path, base_fn)
71
- fdir = File.dirname(f)
72
- mkdir_p(fdir) if !File.exist?(fdir)
73
- if File.directory?(fn)
74
- mkdir_p(f)
75
- else
76
- raise "file name conflict for '#{base_fn}' (conflicts with '#{fn}')" if test(?e, f)
77
- safe_ln(fn, f)
78
- end
79
- end
80
- end
81
- end
82
-
83
- def gem_file
84
- if @gem_spec.platform == Gem::Platform::RUBY
85
- "#{package_name}.gem"
86
- else
87
- "#{package_name}-#{@gem_spec.platform}.gem"
88
- end
89
- end
90
- end # class GemPackageTask
91
- end # module Bones
92
-
93
- namespace :gem do
94
-
95
- PROJ.gem._spec = Gem::Specification.new do |s|
96
- s.name = PROJ.name
97
- s.version = PROJ.version
98
- s.summary = PROJ.summary
99
- s.authors = Array(PROJ.authors)
100
- s.email = PROJ.email
101
- s.homepage = Array(PROJ.url).first
102
- s.rubyforge_project = PROJ.rubyforge.name
103
-
104
- s.description = PROJ.description
105
-
106
- PROJ.gem.dependencies.each do |dep|
107
- s.add_dependency(*dep)
108
- end
109
-
110
- PROJ.gem.development_dependencies.each do |dep|
111
- s.add_development_dependency(*dep)
112
- end
113
-
114
- s.files = PROJ.gem.files
115
- s.executables = PROJ.gem.executables.map {|fn| File.basename(fn)}
116
- s.extensions = PROJ.gem.files.grep %r/extconf\.rb$/
117
-
118
- s.bindir = 'bin'
119
- dirs = Dir["{#{PROJ.libs.join(',')}}"]
120
- s.require_paths = dirs unless dirs.empty?
121
-
122
- incl = Regexp.new(PROJ.rdoc.include.join('|'))
123
- excl = PROJ.rdoc.exclude.dup.concat %w[\.rb$ ^(\.\/|\/)?ext]
124
- excl = Regexp.new(excl.join('|'))
125
- rdoc_files = PROJ.gem.files.find_all do |fn|
126
- case fn
127
- when excl; false
128
- when incl; true
129
- else false end
130
- end
131
- s.rdoc_options = PROJ.rdoc.opts + ['--main', PROJ.rdoc.main]
132
- s.extra_rdoc_files = rdoc_files
133
- s.has_rdoc = true
134
-
135
- if test ?f, PROJ.test.file
136
- s.test_file = PROJ.test.file
137
- else
138
- s.test_files = PROJ.test.files.to_a
139
- end
140
-
141
- # Do any extra stuff the user wants
142
- PROJ.gem.extras.each do |msg, val|
143
- case val
144
- when Proc
145
- val.call(s.send(msg))
146
- else
147
- s.send "#{msg}=", val
148
- end
149
- end
150
- end # Gem::Specification.new
151
-
152
- Bones::GemPackageTask.new(PROJ.gem._spec) do |pkg|
153
- pkg.need_tar = PROJ.gem.need_tar
154
- pkg.need_zip = PROJ.gem.need_zip
155
- end
156
-
157
- desc 'Show information about the gem'
158
- task :debug => 'gem:prereqs' do
159
- puts PROJ.gem._spec.to_ruby
160
- end
161
-
162
- desc 'Write the gemspec '
163
- task :spec => 'gem:prereqs' do
164
- File.open("#{PROJ.name}.gemspec", 'w') do |f|
165
- f.write PROJ.gem._spec.to_ruby
166
- end
167
- end
168
-
169
- desc 'Install the gem'
170
- task :install => [:clobber, 'gem:package'] do
171
- sh "#{SUDO} #{GEM} install --local pkg/#{PROJ.gem._spec.full_name}"
172
-
173
- # use this version of the command for rubygems > 1.0.0
174
- #sh "#{SUDO} #{GEM} install --no-update-sources pkg/#{PROJ.gem._spec.full_name}"
175
- end
176
-
177
- desc 'Uninstall the gem'
178
- task :uninstall do
179
- installed_list = Gem.source_index.find_name(PROJ.name)
180
- if installed_list and installed_list.collect { |s| s.version.to_s}.include?(PROJ.version) then
181
- sh "#{SUDO} #{GEM} uninstall --version '#{PROJ.version}' --ignore-dependencies --executables #{PROJ.name}"
182
- end
183
- end
184
-
185
- desc 'Reinstall the gem'
186
- task :reinstall => [:uninstall, :install]
187
-
188
- desc 'Cleanup the gem'
189
- task :cleanup do
190
- sh "#{SUDO} #{GEM} cleanup #{PROJ.gem._spec.name}"
191
- end
192
- end # namespace :gem
193
-
194
-
195
- desc 'Alias to gem:package'
196
- task :gem => 'gem:package'
197
-
198
- task :clobber => 'gem:clobber_package'
199
- remove_desc_for_task 'gem:clobber_package'
200
-
201
- # EOF