jirarest2 0.0.12 → 0.0.13

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,395 @@
1
+ require "minitest/autorun"
2
+ require "jirarest2/field"
3
+ require "deb"
4
+
5
+ module Jirarest2Field
6
+ class TestField < MiniTest::Unit::TestCase
7
+ def setup
8
+ @fieldid ||= nil # Set to nil if not already set (avoid warnings)
9
+ @fieldid = "FieldID" if @fieldid.nil?
10
+ @fieldname ||= nil # Set to nil if not already set
11
+ @fieldname = "Fieldname" if @fieldname.nil?
12
+ @fieldargs ||= nil # Set to nil if not already set (avoid warnings)
13
+ @fieldargs = Hash.new if @fieldargs.nil?
14
+ @fieldrequired ||= nil # Set to nil if not already set (avoid warnings)
15
+ if @fieldrequired.nil? then
16
+ @fieldrequired = false
17
+ end
18
+ @fieldargs[:required] = @fieldrequired
19
+ @fieldtype ||= nil # Set to nil if not already set (avoid warnings)
20
+ @fieldtype = "Field" if @fieldtype.nil?
21
+ @field = eval(@fieldtype).new(@fieldid,@fieldname,@fieldargs)
22
+ end
23
+
24
+ def test_required
25
+ assert_equal @fieldrequired,@field.required
26
+ end
27
+
28
+ def test_id
29
+ assert_equal @fieldid,@field.id
30
+ end
31
+
32
+ def test_name
33
+ assert_equal @fieldname,@field.name
34
+ end
35
+
36
+ def test_allowed
37
+ @field.allowed_values = ["one","two","three","four","mad cow","42"]
38
+ @field.value = "one"
39
+ @field.value = "mad cow"
40
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = 42 }
41
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = "five" }
42
+ end
43
+ end # class TestField
44
+
45
+ class TestTextField < TestField
46
+ def setup
47
+ @fieldid = "customfield_10101"
48
+ @fieldname = "issuetype"
49
+ @fieldtype = "TextField"
50
+ @fieldargs = Hash.new
51
+ @fieldrequired = true
52
+ super
53
+ end
54
+
55
+ # This could be put to the top class but here it is anchored
56
+ def test_fieldtype
57
+ assert_instance_of Jirarest2Field::TextField, @field
58
+ end
59
+
60
+ def test_to_j
61
+ # ret = {"customfield_10101" => nil}
62
+ ret = nil
63
+ assert_equal ret,@field.to_j
64
+ @field.value = "Lorem ipsumus"
65
+ ret = {"customfield_10101"=>"Lorem ipsumus"}
66
+ assert_equal ret,@field.to_j
67
+ end
68
+
69
+ def test_set_get_value
70
+ @field.value = "Lorem ipsum"
71
+ assert_equal "Lorem ipsum",@field.value
72
+ end
73
+
74
+ end # class TestTextField
75
+
76
+ class TestDateTimeField < TestField
77
+ def setup
78
+ @fieldid = "customfield_10001"
79
+ @fieldname = "Date Time Field"
80
+ @fieldtype = "DateTimeField"
81
+ @fieldargs = Hash.new
82
+ @fieldrequired = true
83
+ super
84
+ end
85
+
86
+ # This could be put to the top class but here it is anchored
87
+ def test_fieldtype
88
+ assert_instance_of Jirarest2Field::DateTimeField, @field
89
+ end
90
+
91
+ def test_set_get_value
92
+ field_string = "2012-07-31 14:32:26.134"
93
+ fieldiso8601 = "2012-07-31T14:32:26+00:00"
94
+ @field.value = field_string
95
+ assert_equal fieldiso8601,@field.value
96
+ assert_equal DateTime.parse("2012-07-31T14:32:26.134+00:00"),@field.value(true)
97
+ @field.value = "12-07-31 14:32:26.134"
98
+ assert_equal fieldiso8601,@field.value
99
+ @field.value = "31.7.2012 14:32:26.134"
100
+ assert_equal fieldiso8601,@field.value
101
+ @field.value = "12-7-31 14:32:26.134"
102
+ assert_equal fieldiso8601,@field.value
103
+ @field.value = "14:32:26.134 31.07.2012"
104
+ assert_equal fieldiso8601,@field.value
105
+ assert_raises(ArgumentError) { @field.value = "7.31.2012 21:24:31" }
106
+ end
107
+
108
+ def test_allowed
109
+ end
110
+
111
+ def test_to_j
112
+ ret = nil
113
+ assert_equal ret,@field.to_j
114
+ @field.value = "2011-01-31 15:25:34"
115
+ ret = {"customfield_10001" => "2011-01-31T15:25:34.000+0000"}
116
+ assert_equal ret,@field.to_j
117
+ end
118
+ end # class TestDateTimeField
119
+
120
+ class TestNumberField < TestField
121
+ def setup
122
+ @fieldid = "timespent"
123
+ @fieldname = "Time Spent"
124
+ @fieldtype = "NumberField"
125
+ @fieldargs = Hash.new
126
+ @fieldrequired = false
127
+ super
128
+ end
129
+
130
+ # This could be put to the top class but here it is anchored
131
+ def test_fieldtype
132
+ assert_instance_of Jirarest2Field::NumberField, @field
133
+ end
134
+
135
+ def test_allowed
136
+ @field.allowed_values = ["one","two","three","four","mad cow","42",13,23,99]
137
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = "one" }
138
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = "mad cow"}
139
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = 42 }
140
+ @field.value = "13"
141
+ assert_equal 13,@field.value
142
+ @field.value = 13
143
+ assert_equal 13,@field.value
144
+ end
145
+
146
+ def test_set_get_value
147
+ @field.value = 12
148
+ assert_equal 12,@field.value
149
+ @field.value = 12.5
150
+ assert_equal 12.5,@field.value
151
+ @field.value = "12"
152
+ assert_equal 12,@field.value
153
+ @field.value = "12.5"
154
+ assert_equal 12.5,@field.value
155
+ end
156
+
157
+ def test_to_j
158
+ assert_equal nil,@field.to_j
159
+ @field.value = "12.54"
160
+ ret = {"timespent" => 12.54}
161
+ assert_equal ret,@field.to_j
162
+
163
+ end
164
+
165
+ end # class TestNumberField
166
+
167
+ class TestHashField < TestField
168
+ def setup
169
+ @fieldid = "customfield_10006"
170
+ @fieldname = "List select"
171
+ @fieldtype = "HashField"
172
+ @fieldargs = Hash.new
173
+ @fieldrequired = true
174
+ @key = "value"
175
+ @field = HashField.new(@fieldid,@fieldname,{:key => @key, :required => @fieldrequired})
176
+ end
177
+
178
+ # This could be put to the top class but here it is anchored
179
+ def test_fieldtype
180
+ assert_instance_of Jirarest2Field::HashField, @field
181
+ end
182
+
183
+ def test_set_get_value
184
+ @field.value = "Lorem ipsum"
185
+ assert_equal "Lorem ipsum",@field.value
186
+ end
187
+
188
+ def test_to_j
189
+ ret = nil
190
+ assert_equal ret, @field.to_j
191
+ field = Jirarest2Field::HashField.new("blah","mumbatz",{:key => "name"})
192
+ field.value = "test"
193
+ ret = {"blah"=>{"name" => "test"}}
194
+ assert_equal ret, field.to_j
195
+ field = Jirarest2Field::HashField.new("badfield","mineme",{:key => "key", :required => true})
196
+ field.value = "MFTP"
197
+ ret = {"badfield"=>{"key" => "MFTP"}}
198
+ assert_equal ret, field.to_j
199
+ field = Jirarest2Field::HashField.new("idfield","minime",{:key => "id", :required => false})
200
+ field.value = "SP"
201
+ ret = {"idfield"=>{"id" => "SP"}}
202
+ assert_equal ret, field.to_j
203
+ end
204
+
205
+ end # class TestHashField
206
+
207
+ class TestMultiField < TestField
208
+ def setup
209
+ @fieldid = "customfield_10006"
210
+ @fieldname = "List select"
211
+ @fieldtype = "MultiField"
212
+ @fieldargs = Hash.new
213
+ @fieldrequired = false
214
+ super
215
+ end
216
+
217
+ # This could be put to the top class but here it is anchored
218
+ def test_fieldtype
219
+ assert_instance_of Jirarest2Field::MultiField, @field
220
+ end
221
+
222
+ def test_allowed_set
223
+ @field.allowed_values = ["one","two","three","four","mad cow","42"]
224
+ @field.value = "one"
225
+ assert_equal ["one"],@field.value
226
+ @field.value = "mad cow"
227
+ assert_equal ["mad cow"],@field.value
228
+ @field.value = ["one","three","42"]
229
+ assert_equal ["one","three","42"],@field.value
230
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = ["one","five","42"] }
231
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = ["one","two",42] }
232
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = 42 }
233
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = "five" }
234
+ end
235
+
236
+ def test_allowed_push
237
+ @field.allowed_values = ["one","two","three","four","mad cow","42",55,42,35,88,67]
238
+ @field.value = [55,42,35,88]
239
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field[1] = "42" }
240
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field[1] = 23 }
241
+ @field[1] = 67
242
+ assert_equal [55, 67, 35, 88],@field.value
243
+ end
244
+
245
+ def test_set_get_value
246
+ @field.value = "Lorem ipsum"
247
+ assert_equal ["Lorem ipsum"],@field.value
248
+ test = ["number1","number2"]
249
+ @field.value = test
250
+ assert_equal test,@field.value
251
+ test = [HashField.new("bugger","Big Bugger",{:key => "name"}),HashField.new("snigger","Snigger",{:key => "name"})]
252
+ @field.value = test
253
+ assert_equal test,@field.value
254
+ end
255
+
256
+ def test_delete
257
+ @field.value = ["ene","mine","mo","minki","pinki","poo"]
258
+ @field.delete("mo")
259
+ assert_equal ["ene","mine","minki","pinki","poo"],@field.value
260
+ @field.delete(@field)
261
+ assert_equal [],@field.value
262
+ end
263
+ def setup_an_array
264
+ h1 = HashField.new("custom42","Big Bugger",{:key => "name"})
265
+ h2 = HashField.new("custom44","Snigger",{:key => "name"})
266
+ h3 = HashField.new("custom10056","Bloop",{:key => "id"})
267
+ h4 = HashField.new("custom66","snoop",{:key => "id"})
268
+ h1.value = "me"
269
+ h2.value = "minime"
270
+ h3.value = "me"
271
+ h4.value = "moooo"
272
+ @test = [h1,h2,h3,h4]
273
+ @field.value = [h1,h2,h3,h4]
274
+ end
275
+
276
+ def test_delete_by_value
277
+ setup_an_array
278
+ h1 = @test[0]
279
+ h3 = @test[2]
280
+ h4 = @test[3]
281
+ assert_equal [h1,h3,h4],@field.delete_by_value("minime")
282
+ assert_equal [h1,h3,h4],@field.value
283
+ assert_equal [h4],@field.delete_by_value("me")
284
+ assert_equal [h4],@field.value
285
+ end
286
+
287
+ def test_index_get
288
+ setup_an_array
289
+ val = @test[2]
290
+ assert_equal val,@field[2]
291
+ end
292
+
293
+ def test_index_set
294
+ setup_an_array
295
+ val = HashField.new("snigger","Snigger",{:key => "name"})
296
+ @field[3] = val
297
+ assert_equal val,@field.value[3]
298
+ val1 = "a String"
299
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field[6] = val1 } # No field mixing allowed
300
+ end
301
+
302
+ def test_push
303
+ @field << "Mikey"
304
+ @field << "Minney"
305
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field << 42 }
306
+ assert_equal ["Mikey", "Minney"],@field.value
307
+ end
308
+
309
+ def test_to_j
310
+ ret = nil
311
+ assert_equal ret, @field.to_j
312
+ setup_an_array
313
+ ret = {"customfield_10006"=>[{"name"=>"me"}, {"name"=>"minime"}, {"id"=>"me"}, {"id"=>"moooo"}]}
314
+ assert_equal ret, @field.to_j
315
+ @field.value = ["number1","number2","number3"]
316
+ ret = {"customfield_10006"=>["number1", "number2", "number3"]}
317
+ assert_equal ret, @field.to_j
318
+
319
+ end
320
+ end # class TestMultiField
321
+
322
+ class TestCascadingField < TestField
323
+ def setup
324
+ @fieldid = "customfield_10000"
325
+ @fieldname = "Cascading Select Test"
326
+ @fieldtype = "CascadingField"
327
+ @fieldargs = Hash.new
328
+ @fieldrequired = true
329
+ super
330
+ end
331
+
332
+ # This could be put to the top class but here it is anchored
333
+ def test_fieldtype
334
+ assert_instance_of Jirarest2Field::CascadingField, @field
335
+ end
336
+
337
+ def test_to_j
338
+ ret = nil
339
+ assert_equal ret,@field.to_j
340
+ end
341
+
342
+ def test_set_get_value
343
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = "Lorem ipsum" }
344
+ @field.value = ["Lorem","ipsum"]
345
+ assert_equal ["Lorem", "ipsum"],@field.value
346
+ end
347
+
348
+ def test_allowed
349
+ @field.allowed_values= [{ "color" => ["red","green","yellow"],"car" => ["bmw","mini","mg","vw"], "lang" => ["ruby","Java","C","C#"]}]
350
+ @field.value = ["color","red"]
351
+ @field.value = ["car","mg"]
352
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = ["color","lang"] }
353
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = ["color"] }
354
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = ["music"] }
355
+ assert_raises(Jirarest2::ValueNotAllowedException) { @field.value = ["music","Cello"] }
356
+ end
357
+
358
+ end # class TestCascadingField
359
+
360
+ end # module
361
+
362
+ =begin
363
+ Shouldn't be used again. Is kept here just in case
364
+ def get_createmeta
365
+ require "json"
366
+ j = JSON.parse( IO.read("data/createmeta"))
367
+ string = "# -*- coding: utf-8 -*-\n"
368
+ string << "require \"minitest/autorun\"\n"
369
+ string << "require \"jirarest2/field\"\n"
370
+ string << "require \"json\"\n"
371
+ string << "require \"deb\"\n\n"
372
+ string << "# Extraclass to get all the different cases\n"
373
+ string << "class TestFieldCreatemeta < MiniTest::Unit::TestCase\n\n"
374
+ string << "=begin\n"
375
+ j["projects"][0]["issuetypes"][0]["fields"].each{ |id,cont|
376
+ string << " def test_#{id}\n"
377
+ string << " fstruct = \{\"#{id}\" => #{cont}\}\n"
378
+ string << " ppp fstruct\n"
379
+ string << " field = Jirarest2Field::TODO.new(\"#{id}\",\"#{cont["name"]}\",{:required => false, :createmeta => fstruct[\"#{id}\"]})\n"
380
+ string << " ppp field\n"
381
+ string << " allowed_v = [] # TODO \n"
382
+ string << " assert_equal \"#{id}\", field.id\n"
383
+ string << " assert_equal \"#{cont["name"]}\", field.name\n"
384
+ string << " assert_equal false, field.readonly\n"
385
+ string << " assert_equal \"value\", field.key\n"
386
+ string << " assert_raises(NoMethodError) { field.key }\n"
387
+ string << " assert_equal allowed_v, field.allowed_values\n"
388
+ string << " end\n\n"
389
+ }
390
+ string << "=end\n"
391
+ string << "end"
392
+ File.open("test_fieldcreatemeta.rb", 'w') {|f| f.write(string) }
393
+ end
394
+ =end
395
+
@@ -19,9 +19,10 @@ class TestIssue < MiniTest::Unit::TestCase
19
19
 
20
20
  def test_receive
21
21
  issue = Issue.new("SP-2")
22
- WebMock.disable!
23
- # pp issue.receive(@con)
24
- WebMock.enable!
22
+ # @todo write tests
23
+ # WebMock.disable!
24
+ # ppp issue.receive(@con)
25
+ # WebMock.enable!
25
26
  end
26
27
 
27
28
  def test_set_assignee_no_rights
@@ -0,0 +1,74 @@
1
+ require "minitest/autorun"
2
+ require "jirarest2/issuetype"
3
+ require "json"
4
+ require "deb"
5
+
6
+ class TestIssuetype < MiniTest::Unit::TestCase
7
+
8
+ def setup
9
+ @createmeta = JSON.parse(IO.read(File.dirname(__FILE__) + "/data/createmeta"))
10
+ @issue = Issuetype.new
11
+ end
12
+
13
+ def test_createmeta
14
+ #ppp @createmeta
15
+ # ppp @createmeta["projects"][0]["issuetypes"][0]
16
+ @issue.createmeta(@createmeta["projects"][0]["issuetypes"][0])
17
+ assert_equal "My issue type", @issue.name
18
+ assert_equal "An own issue type",@issue.description
19
+ assert_equal "summary",@issue.required_fields[0].id
20
+ assert_equal "issuetype",@issue.required_fields[1].id
21
+ assert_equal "reporter",@issue.required_fields[2].id
22
+ assert_equal "project",@issue.required_fields[3].id
23
+ assert_equal 4, @issue.required_fields.size
24
+ assert_equal 44, @issue.fields.size
25
+ # Some order as in test_fieldcreatemeta.rb
26
+ fieldtypes = ["TextField", "TextField", "TimetrackingField", "VersionField", "TextField", "MultiVersionField", "HashField", "MultiUserField", "NumberField", "TextField", "ProjectField", "HashField", "MultiVersionField", "UserField", "TextField", "HashField", "DateTimeField", "DateField", "DateField", "TextField", "TextField", "NumberField", "MultiHashField", "NumberField", "CascadingField", "TextField", "TextField", "TextField", "HashField", "MultiHashField", "MultiStringField", "UserField", "UserField", "UserField", "HashField", "HashField", "MultiStringField", "MultiUserField", "ProjectField", "MultiVersionField", "TextField", "UserField", "NumberField", "MultiHashField"]
27
+ (0..@issue.fields.size-1).each{ |i|
28
+ assert_equal "Jirarest2Field::"+fieldtypes[i], @issue.fields.values[i].class.to_s
29
+ }
30
+ end
31
+
32
+ def test_set_value
33
+ @issue.createmeta(@createmeta["projects"][0]["issuetypes"][0])
34
+ @issue.set_value("summary","blablabla")
35
+ assert_equal "blablabla", @issue.fields["summary"].value
36
+ @issue.set_value("Summary","blablabla1")
37
+ assert_equal "blablabla1", @issue.fields["summary"].value
38
+ @issue.set_value("summary","blablabla2",:id)
39
+ assert_equal "blablabla2", @issue.fields["summary"].value
40
+ @issue.set_value("Summary","blablabla3",:name)
41
+ assert_equal "blablabla3", @issue.fields["summary"].value
42
+ assert_raises(Jirarest2::WrongFieldnameException) { @issue.set_value("summary-wrong","blablabla") }
43
+ end
44
+
45
+ def test_get_value
46
+ @issue.createmeta(@createmeta["projects"][0]["issuetypes"][0])
47
+ @issue.fields["summary"].value = "blues"
48
+ assert_equal "blues", @issue.get_value("Summary")
49
+ assert_equal "blues", @issue.get_value("summary")
50
+ assert_equal "blues", @issue.get_value("Summary",:name)
51
+ assert_equal "blues", @issue.get_value("summary",:id)
52
+ assert_raises(Jirarest2::WrongFieldnameException) { @issue.get_value("summary-wrong") }
53
+ end
54
+
55
+ def test_required_by_name
56
+ @issue.createmeta(@createmeta["projects"][0]["issuetypes"][0])
57
+ assert_equal ["Summary"], @issue.required_by_name(true)
58
+ @issue.fields["summary"].value = "Let us fill it with something usefull"
59
+ assert_equal ["Summary"], @issue.required_by_name
60
+ assert_equal [], @issue.required_by_name(true)
61
+ end
62
+
63
+ def test_new_ticket_hash
64
+ start = {"self"=>"http://localhost:2990/jira/rest/api/2/issuetype/6", "id" => "6", "description" => "An own issue type", "iconUrl" => "http://localhost:2990/jira/images/icons/ico_epic.png", "name" => "My issue type", "subtask" => false, "expand" => "fields", "fields" => {"summary" => {"required"=>true, "schema"=>{"type" => "string", "system" => "summary"}, "name" => "Summary", "operations" => ["set"]}, "customfield_10307" => {"required" => false, "schema" => {"type" => "string", "custom" => "com.atlassian.jira.plugin.system.customfieldtypes:url", "customId" => 10307}, "name" => "URL", "operations" => ["set"]}}}
65
+ @issue.createmeta(start)
66
+ @issue.createmeta(@createmeta["projects"][0]["issuetypes"][0])
67
+ @issue.fields["summary"].value = "Let us fill it with something usefull"
68
+ val = {"fields" => {"summary" => "Let us fill it with something usefull", "issuetype" => {"name" => "My issue type"}, "project" => {"key" => "MFTP"}}}
69
+ assert_equal val, @issue.new_ticket_hash
70
+
71
+ end
72
+
73
+ end # class TestIssuetype
74
+