redcuine 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -1,8 +1,10 @@
1
+ require "tempfile"
2
+
1
3
  module Redcuine
2
4
  class Issue < Base
3
5
  @@default_param = {}
4
6
  @@issue_attribute_keys = [:subject, :description, :tracker_id, :status_id,
5
- :category_id, :assigned_to_id, :priority, :fixed_version,
7
+ :category_id, :assigned_to_id, :priority_id, :fixed_version,
6
8
  :start_date, :due_date, :estimate_date, :done_ratio]
7
9
 
8
10
  def self.run
@@ -25,10 +27,13 @@ module Redcuine
25
27
  def self.post
26
28
  keys = [:project_id] + @@issue_attribute_keys
27
29
  opts = rest_options(keys, @@default_param)
30
+ opts[:description] = description_by_editor if CONFIG["editor"]
28
31
  issue = Resource::Issue.new(opts)
29
- res = issue.save
30
- puts res ? "Created issue!" : "Fail to create issue."
31
- return res
32
+ issue.save!
33
+ puts "Created issue!"
34
+ CONFIG["id"] = issue.id
35
+ get
36
+ return true
32
37
  rescue
33
38
  puts $!.to_s
34
39
  puts $!.backtrace if CONFIG["debug"]
@@ -37,13 +42,17 @@ module Redcuine
37
42
  end
38
43
 
39
44
  def self.put
40
- keys = @@issue_attribute_keys
41
- opts = rest_options(keys, @@default_param)
45
+ opts = rest_options(@@issue_attribute_keys, @@default_param)
42
46
  issue = Resource::Issue.find(CONFIG["id"])
47
+ if CONFIG["editor"]
48
+ opts[:description] = description_by_editor(issue.description)
49
+ end
43
50
  issue.load(opts)
44
- res = issue.save
45
- puts res ? "Updated issue!" : "Fail to update issue."
46
- return res
51
+ issue.save!
52
+ puts "Updated issue!"
53
+ CONFIG["id"] = issue.id
54
+ get
55
+ return true
47
56
  rescue
48
57
  puts $!.to_s
49
58
  puts $!.backtrace if CONFIG["debug"]
@@ -113,6 +122,16 @@ module Redcuine
113
122
  puts " - #{cf.name}, id:#{cf.id}, value:#{cf.value}"
114
123
  end
115
124
  end
125
+ puts ""
126
+ end
127
+
128
+ def self.description_by_editor(description="")
129
+ description = CONFIG['description'] if CONFIG['description']
130
+ t = Tempfile.new("redissue")
131
+ t << description
132
+ t.close
133
+ system(CONFIG['editor'], t.path)
134
+ return File.read(t.path)
116
135
  end
117
136
  end
118
137
  end
@@ -22,6 +22,22 @@ module Redcuine
22
22
  CONFIG["rest_type"] = :delete
23
23
  end
24
24
 
25
+ opt.on('-s val', '--subject val', 'Set subject') do |val|
26
+ CONFIG["subject"] = val
27
+ end
28
+
29
+ opt.on('-m val', '--description val', 'Set description') do |val|
30
+ CONFIG["description"] = val
31
+ end
32
+
33
+ opt.on('-e [editor]', 'Edit description by editor (default $EDITOR || vi)') do |val|
34
+ if val
35
+ CONFIG["editor"] = val
36
+ else
37
+ CONFIG["editor"] = ENV['EDITOR'] || "vi"
38
+ end
39
+ end
40
+
25
41
  opt.on('--debug', 'for debug') do |val|
26
42
  CONFIG["debug"] = true
27
43
  end
@@ -31,8 +47,8 @@ module Redcuine
31
47
  opt.program_name = 'redissue'
32
48
 
33
49
  default_opts(opt)
34
- %w(id subject description tracker-id status-id category-id assigned-to-id
35
- priority fixed-version start-date due-date estimate-date
50
+ %w(id tracker-id status-id category-id assigned-to-id
51
+ priority-id fixed-version start-date due-date estimate-date
36
52
  done-ratio site project-id).each do |k|
37
53
  src = <<-SRC
38
54
  opt.on('--#{k} val', 'Set #{k.gsub("-", " ")}') do |val|
@@ -58,19 +58,22 @@ class IssueTest < Test::Unit::TestCase
58
58
  stub(Redcuine::Resource::Issue).new do |opt|
59
59
  @opt = opt
60
60
  o = Object.new
61
- o.instance_eval("def save; true; end")
61
+ stub(o).save!{ true }
62
+ stub(o).id{ "1" }
62
63
  o
63
64
  end
65
+ mock(Redcuine::Issue).get.once
64
66
  Redcuine::CONFIG["rest_type"] = :post
65
67
  Redcuine::CONFIG["project_id"] = "1"
66
68
  keys = [:subject, :description, :tracker_id, :status_id,
67
- :category_id, :assigned_to_id, :priority, :fixed_version,
69
+ :category_id, :assigned_to_id, :priority_id, :fixed_version,
68
70
  :start_date, :due_date, :estimate_date, :done_ratio]
69
71
  keys.each do |k|
70
72
  Redcuine::CONFIG[k.to_s] = true
71
73
  end
72
74
  assert_equal true, Redcuine::Issue.run
73
75
  assert_equal([], keys - @opt.keys)
76
+ assert_equal "1", Redcuine::CONFIG["id"]
74
77
  end
75
78
 
76
79
  def test_post_fail
@@ -81,22 +84,25 @@ class IssueTest < Test::Unit::TestCase
81
84
  def test_put
82
85
  stub(Redcuine::Resource::Issue).find do |id|
83
86
  @id = id
84
- @obj = Object.new
85
- @obj.instance_eval("def save; true; end")
86
- @obj.instance_eval("def load(args); @opt = args; end")
87
- @obj
87
+ o = Object.new
88
+ stub(o).save!{ true }
89
+ stub(o).load{|args| @opt = args }
90
+ stub(o).id{|args| @id }
91
+ o
88
92
  end
93
+ mock(Redcuine::Issue).get.once
89
94
  Redcuine::CONFIG["rest_type"] = :put
90
95
  Redcuine::CONFIG["id"] = "1"
91
96
  keys = [:subject, :description, :tracker_id, :status_id,
92
- :category_id, :assigned_to_id, :priority, :fixed_version,
97
+ :category_id, :assigned_to_id, :priority_id, :fixed_version,
93
98
  :start_date, :due_date, :estimate_date, :done_ratio]
94
99
  keys.each do |k|
95
100
  Redcuine::CONFIG[k.to_s] = true
96
101
  end
97
102
  assert_equal true, Redcuine::Issue.run
98
103
  assert_equal("1", @id)
99
- assert_equal([], keys - @obj.instance_variable_get("@opt").keys)
104
+ assert_equal([], keys - @opt.keys)
105
+ assert_equal "1", Redcuine::CONFIG["id"]
100
106
  end
101
107
 
102
108
  def test_put_fail
@@ -22,11 +22,20 @@ class OptParserTest < Test::Unit::TestCase
22
22
 
23
23
  Redcuine::OptParser.issue_parse!(%w(--debug))
24
24
  assert_equal true, Redcuine::CONFIG["debug"]
25
+
26
+ Redcuine::OptParser.issue_parse!(%w(-s subject))
27
+ assert_equal "subject", Redcuine::CONFIG["subject"]
28
+
29
+ Redcuine::OptParser.issue_parse!(%w(-m description))
30
+ assert_equal "description", Redcuine::CONFIG["description"]
31
+
32
+ Redcuine::OptParser.issue_parse!(%w(-e emacs))
33
+ assert_equal "emacs", Redcuine::CONFIG["editor"]
25
34
  end
26
35
 
27
36
  def test_issue_parse
28
37
  opts = %w(id subject description tracker-id status-id
29
- category-id assigned-to-id priority fixed-version
38
+ category-id assigned-to-id priority-id fixed-version
30
39
  start-date due-date estimate-date done-ratio site project-id)
31
40
  args = opts.map{|k| ["--#{k}", k]}.flatten
32
41
  Redcuine::OptParser.issue_parse!(args)
@@ -12,6 +12,7 @@ class Test::Unit::TestCase
12
12
  def setup
13
13
  super
14
14
  setup_with_clear_config
15
+ Redcuine::CONFIG["debug"] = true
15
16
  end
16
17
 
17
18
  def teardown
@@ -23,5 +24,5 @@ class Test::Unit::TestCase
23
24
  Redcuine::CONFIG.clear
24
25
  end
25
26
 
26
- include RR::Adapters::RRMethods
27
+ include RR::Adapters::TestUnit
27
28
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 2
9
- version: 0.1.2
8
+ - 3
9
+ version: 0.1.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Narihiro Nakmaura
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-31 00:00:00 +09:00
17
+ date: 2011-02-22 00:00:00 +09:00
18
18
  default_executable: redissue
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency