geera 1.2.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.
@@ -0,0 +1,74 @@
1
+ require "test/unit"
2
+ require "geera"
3
+ require 'flexmock/test_unit'
4
+
5
+ module Geera
6
+ module Commands
7
+ class TestFix < Test::Unit::TestCase
8
+ def test_handle?
9
+ assert Fix.handle?('fix')
10
+ end
11
+
12
+ def test_execute_startable
13
+ recorder = Object.new
14
+ flexmock(recorder) do |thing|
15
+ thing.should_receive(:startable?).once.and_return(true)
16
+ thing.should_receive(:start!).once
17
+ thing.should_receive(:fixable?).once.and_return(true)
18
+ thing.should_receive(:fix!).once
19
+ thing.should_receive(:assign_to).once.with('foo')
20
+ end
21
+
22
+ fake_command.new(recorder, {'qa' => 'foo'}).execute!
23
+ end
24
+
25
+ def test_execute_not_startable
26
+ recorder = Object.new
27
+ flexmock(recorder) do |thing|
28
+ thing.should_receive(:startable?).once.and_return(false)
29
+ thing.should_receive(:start!).never
30
+ thing.should_receive(:fixable?).once.and_return(true)
31
+ thing.should_receive(:fix!).once
32
+ thing.should_receive(:assign_to).once.with('foo')
33
+ end
34
+
35
+ fake_command.new(recorder, {'qa' => 'foo'}).execute!
36
+ end
37
+
38
+ def test_execute_not_fixable
39
+ recorder = Object.new
40
+ flexmock(recorder) do |thing|
41
+ thing.should_receive(:startable?).once.and_return(false)
42
+ thing.should_receive(:start!).never
43
+ thing.should_receive(:fixable?).once.and_return(false)
44
+ thing.should_receive(:fix!).never
45
+ thing.should_receive(:assign_to).once.with('foo')
46
+ end
47
+
48
+ fake_command.new(recorder, {'qa' => 'foo'}).execute!
49
+ end
50
+
51
+ def test_execute_no_qa
52
+ recorder = Object.new
53
+ flexmock(recorder) do |thing|
54
+ thing.should_receive(:startable?).once.and_return(false)
55
+ thing.should_receive(:start!).never
56
+ thing.should_receive(:fixable?).once.and_return(false)
57
+ thing.should_receive(:fix!).never
58
+ thing.should_receive(:assign_to).never
59
+ end
60
+
61
+ fake_command.new(recorder, {'qa' => nil}).execute!
62
+ end
63
+
64
+ def fake_command
65
+ Class.new(Geera::Commands::Fix) {
66
+ def initialize ticket, config
67
+ super(config, nil, nil, nil)
68
+ @ticket = ticket
69
+ end
70
+ }
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,90 @@
1
+ require "test/unit"
2
+ require "geera"
3
+ require 'flexmock/test_unit'
4
+
5
+ module Geera
6
+ module Commands
7
+ class TestList < Test::Unit::TestCase
8
+ FakeTicket = Struct.new(:key, :summary)
9
+
10
+ def test_handle?
11
+ assert List.handle?('list')
12
+ end
13
+
14
+ def test_number_with_name
15
+ recorder = Object.new
16
+ flexmock(recorder) do |thing|
17
+ thing.should_receive(:filters).once.and_return(
18
+ [Struct.new(:name, :id).new('foo', 10)]
19
+ )
20
+ end
21
+
22
+ cmd = List.new(nil, 'foo', recorder, [])
23
+ assert_equal 10, cmd.number
24
+ end
25
+
26
+ def test_number
27
+ recorder = Object.new
28
+ flexmock(recorder) do |thing|
29
+ thing.should_receive(:filters).never
30
+ end
31
+
32
+ cmd = List.new(nil, 10, recorder, [])
33
+ assert_equal 10, cmd.number
34
+ end
35
+
36
+ def test_execute!
37
+ number = 10
38
+
39
+ recorder = Object.new
40
+ flexmock(recorder) do |thing|
41
+ thing.should_receive(:list).with(number).once.and_return([
42
+ FakeTicket.new('BZ-123', 'hello'),
43
+ FakeTicket.new('BZ-124', 'world'),
44
+ ])
45
+ end
46
+
47
+ cmd = Class.new(List) {
48
+ attr_reader :putses
49
+ def initialize *args
50
+ super
51
+ @putses = []
52
+ end
53
+
54
+ def puts string
55
+ @putses << string
56
+ end
57
+ }.new(nil, number, recorder, [])
58
+
59
+ cmd.execute!
60
+ assert_match(/BZ-123/, cmd.putses.first)
61
+ assert_match(/hello/, cmd.putses.first)
62
+ assert_match(/BZ-124/, cmd.putses[1])
63
+ assert_match(/world/, cmd.putses[1])
64
+ end
65
+
66
+ def test_empty_execute
67
+ recorder = Object.new
68
+ flexmock(recorder) do |thing|
69
+ thing.should_receive(:list).with(10).once.and_return([])
70
+ end
71
+
72
+ cmd = Class.new(List) {
73
+ attr_reader :putses
74
+ def initialize *args
75
+ super
76
+ @putses = []
77
+ end
78
+
79
+ def puts string
80
+ @putses << string
81
+ end
82
+ }.new(nil, 10, recorder, [])
83
+ cmd.execute!
84
+
85
+ assert_equal ["No Tickets found"], cmd.putses
86
+ end
87
+ end
88
+ end
89
+ end
90
+
@@ -0,0 +1,34 @@
1
+ require "test/unit"
2
+ require "geera"
3
+ require 'flexmock/test_unit'
4
+
5
+ module Geera
6
+ module Commands
7
+ class TestShow < Test::Unit::TestCase
8
+ def test_handle?
9
+ assert Show.handle?('show')
10
+ end
11
+
12
+ def test_execute!
13
+ recorder = Object.new
14
+ flexmock(recorder) do |thing|
15
+ thing.should_receive(:inspect).once.and_return('foo')
16
+ end
17
+
18
+ cmd = fake_command.new recorder
19
+
20
+ flexmock(cmd).should_receive(:puts).with('foo')
21
+ cmd.execute!
22
+ end
23
+
24
+ def fake_command
25
+ Class.new(Geera::Commands::Show) {
26
+ def initialize ticket
27
+ super(nil, nil, nil, nil)
28
+ @ticket = ticket
29
+ end
30
+ }
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,28 @@
1
+ require "test/unit"
2
+ require "geera"
3
+ require 'flexmock/test_unit'
4
+
5
+ module Geera
6
+ module Commands
7
+ class TestStart < Test::Unit::TestCase
8
+ def test_handle?
9
+ assert Start.handle?('start')
10
+ end
11
+
12
+ def test_execute!
13
+ recorder = Object.new
14
+ flexmock(recorder) do |thing|
15
+ thing.should_receive(:startable?).once.and_return(true)
16
+ thing.should_receive(:start!).once
17
+ end
18
+
19
+ Class.new(Geera::Commands::Start) {
20
+ def initialize ticket
21
+ super(nil, nil, nil, nil)
22
+ @ticket = ticket
23
+ end
24
+ }.new(recorder).execute!
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,31 @@
1
+ require "test/unit"
2
+ require "geera"
3
+ require 'flexmock/test_unit'
4
+
5
+ module Geera
6
+ module Commands
7
+ class TestTake < Test::Unit::TestCase
8
+ def test_handle?
9
+ assert Take.handle?('take')
10
+ end
11
+
12
+ def test_execute!
13
+ recorder = Object.new
14
+ flexmock(recorder) do |thing|
15
+ thing.should_receive(:assign_to).with('foo').once
16
+ end
17
+
18
+ fake_command.new(recorder, 'username' => 'foo').execute!
19
+ end
20
+
21
+ def fake_command
22
+ Class.new(Geera::Commands::Take) {
23
+ def initialize ticket, config
24
+ super(config, nil, nil, nil)
25
+ @ticket = ticket
26
+ end
27
+ }
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,214 @@
1
+ require "test/unit"
2
+ require "geera"
3
+ require 'flexmock/test_unit'
4
+
5
+ ###
6
+ # This is our fake jira object
7
+ class FakeJiraTool
8
+ attr_accessor :call_stack, :returns
9
+
10
+ def initialize
11
+ @call_stack = []
12
+ @returns = {}
13
+ end
14
+
15
+ def method_missing *args
16
+ @call_stack << args
17
+ @returns.delete(args.first) if @returns.key?(args.first)
18
+ end
19
+ end
20
+
21
+ class TestClient < Test::Unit::TestCase
22
+ FakeIssue = Struct.new(:description, :key, :priority)
23
+
24
+ def setup
25
+ @url = 'some_url'
26
+ @fj = FakeJiraTool.new
27
+ flexmock(Jira4R::JiraTool).should_receive(:new).with(2, @url).
28
+ and_return(@fj)
29
+
30
+ @number = 'BZ-123'
31
+ @client = Geera::Client.new(@url)
32
+ @username = 'foo'
33
+ @client.login(@username, 'bar')
34
+ @ticket = @client.ticket @number
35
+ end
36
+
37
+ def test_login
38
+ client = Geera::Client.new(@url)
39
+ client.login('foo', 'bar')
40
+
41
+ assert_equal([:login, "foo", "bar"], @fj.call_stack.pop)
42
+ end
43
+
44
+ def test_comment
45
+ number = 'BZ-123'
46
+ comment = 'hello world'
47
+
48
+ client = Geera::Client.new(@url)
49
+ client.login('foo', 'bar')
50
+
51
+ ticket = client.ticket number
52
+ ticket.comment comment
53
+
54
+ last_call = @fj.call_stack.pop
55
+ assert_equal :addComment, last_call.first
56
+ assert_equal number, last_call[1]
57
+ assert_instance_of(Jira4R::V2::RemoteComment, last_call.last)
58
+ assert_equal(comment, last_call.last.body)
59
+ end
60
+
61
+ def test_available_actions
62
+ actions = [
63
+ Jira4R::V2::RemoteNamedObject.new("1", "Fix"),
64
+ Jira4R::V2::RemoteNamedObject.new("2", "Update Progress"),
65
+ ]
66
+
67
+ @fj.returns[:getAvailableActions] = actions
68
+
69
+ assert_equal(actions, @ticket.available_actions)
70
+ end
71
+
72
+ def test_startable?
73
+ actions = [
74
+ Jira4R::V2::RemoteNamedObject.new("1", "Fix"),
75
+ Jira4R::V2::RemoteNamedObject.new("2", "Update Progress"),
76
+ ]
77
+ @fj.returns[:getAvailableActions] = actions
78
+
79
+ assert !@ticket.startable?
80
+
81
+ actions = [
82
+ Jira4R::V2::RemoteNamedObject.new("1", "Fix"),
83
+ Jira4R::V2::RemoteNamedObject.new("2", "Start"),
84
+ ]
85
+
86
+ @fj.returns[:getAvailableActions] = actions
87
+ assert @ticket.startable?
88
+ end
89
+
90
+ def test_start!
91
+ startid = '1'
92
+
93
+ actions = [
94
+ Jira4R::V2::RemoteNamedObject.new(startid, "Start"),
95
+ Jira4R::V2::RemoteNamedObject.new("2", "Update Progress"),
96
+ ]
97
+
98
+ @fj.returns[:getAvailableActions] = actions
99
+ @fj.returns[:getIssue] = FakeIssue.new('desc', nil, '5')
100
+ @ticket.start!
101
+
102
+ last_call = @fj.call_stack.pop
103
+ assert_equal :progressWorkflowAction, last_call.first
104
+ assert_equal @number, last_call[1]
105
+ assert_equal startid, last_call[2]
106
+
107
+ assert_instance_of(Array, last_call.last)
108
+
109
+ params = last_call.last
110
+ assert_equal 'assignee', params.first.id
111
+ assert_equal @username, params.first.values
112
+
113
+ assert_equal 'description', params[1].id
114
+ assert_equal 'desc', params[1].values
115
+
116
+ assert_equal 'priority', params[2].id
117
+ assert_equal '5', params[2].values
118
+ end
119
+
120
+ def test_fixable?
121
+ actions = [
122
+ Jira4R::V2::RemoteNamedObject.new('1', "Start"),
123
+ Jira4R::V2::RemoteNamedObject.new("2", "Update Progress"),
124
+ ]
125
+
126
+ @fj.returns[:getAvailableActions] = actions
127
+ assert !@ticket.fixable?
128
+
129
+ actions = [
130
+ Jira4R::V2::RemoteNamedObject.new('1', "Fix"),
131
+ Jira4R::V2::RemoteNamedObject.new("2", "Update Progress"),
132
+ ]
133
+
134
+ @fj.returns[:getAvailableActions] = actions
135
+ assert @ticket.fixable?
136
+ end
137
+
138
+ def test_fix!
139
+ startid = '1'
140
+
141
+ actions = [
142
+ Jira4R::V2::RemoteNamedObject.new(startid, "Fix"),
143
+ Jira4R::V2::RemoteNamedObject.new("2", "Update Progress"),
144
+ ]
145
+
146
+ @fj.returns[:getAvailableActions] = actions
147
+ @fj.returns[:getIssue] = FakeIssue.new('desc', nil, '5')
148
+ @ticket.fix!
149
+
150
+ last_call = @fj.call_stack.pop
151
+ assert_equal :progressWorkflowAction, last_call.first
152
+ assert_equal @number, last_call[1]
153
+ assert_equal startid, last_call[2]
154
+
155
+ assert_instance_of(Array, last_call.last)
156
+
157
+ params = last_call.last
158
+ assert_equal 'assignee', params.first.id
159
+ assert_equal @username, params.first.values
160
+
161
+ assert_equal 'description', params[1].id
162
+ assert_equal 'desc', params[1].values
163
+
164
+ assert_equal 'priority', params[2].id
165
+ assert_equal '5', params[2].values
166
+ end
167
+
168
+ def test_assign_to
169
+ @ticket.assign_to 'aaron'
170
+ last_call = @fj.call_stack.pop
171
+ assert_equal :updateIssue, last_call.first
172
+ assert_instance_of Array, last_call.last
173
+
174
+ rfv = last_call.last.first
175
+ assert_equal 'assignee', rfv.id
176
+ assert_equal 'aaron', rfv.values
177
+ end
178
+
179
+ def test_create_ticket
180
+ params = { :project => 'BZ',
181
+ :summary => 'hello world',
182
+ :description => 'testing' }
183
+
184
+ @fj.returns[:createIssue] = FakeIssue.new(params[:description], 'foo')
185
+
186
+ @client.create_ticket params
187
+
188
+ last_call = @fj.call_stack.pop
189
+ assert_equal :createIssue, last_call.first
190
+ assert_instance_of Jira4R::V2::RemoteIssue, last_call.last
191
+
192
+ ri = last_call.last
193
+ assert_equal params[:project], ri.project
194
+ assert_equal '1', ri.type
195
+ assert_equal @username, ri.assignee
196
+ assert_equal params[:summary], ri.summary
197
+ assert_equal params[:description], ri.description
198
+ end
199
+
200
+ def test_create_bad_args
201
+ assert_raises(ArgumentError) do
202
+ @client.create_ticket {}
203
+ end
204
+
205
+ assert_raises(ArgumentError) do
206
+ @client.create_ticket :project => 'ab'
207
+ end
208
+
209
+ assert_raises(ArgumentError) do
210
+ @client.create_ticket :project => 'ab', :description => 'foo'
211
+ end
212
+ end
213
+ end
214
+