jirarest2 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -35,23 +35,16 @@ module Jirarest2
35
35
 
36
36
 
37
37
  # Show the result in a more usable form
38
- # @param [Net::HTTPResponse]
38
+ # @param [Net::HTTPResponse] httpResponse
39
39
  def initialize(httpResponse)
40
- # pp httpResponse
41
- # pp httpResponse.class
42
- # pp httpResponse.body
43
40
  @code = httpResponse.code
44
41
  @header = httpResponse.to_hash
45
42
  @body = httpResponse.body
46
- #pp @body
47
43
  if httpResponse.instance_of?(Net::HTTPNoContent) or httpResponse.body == "" or httpResponse.body.nil? then # If there is nothing in the body it would be hard to parse it.
48
44
  @result = @body
49
45
  else
50
46
  @result = JSON.parse(@body)
51
47
  end
52
- #pp @code
53
- #pp @header
54
-
55
48
  end # initialize
56
49
 
57
50
  end # class
@@ -20,7 +20,7 @@ require_relative "connect"
20
20
  # Trying to keep the services together in one class so I don't have to write so much
21
21
  class Services
22
22
 
23
- # @param [Connection]
23
+ # @param [Connection] connection A connection Object
24
24
  def initialize(connection)
25
25
  @connection = connection
26
26
  # to be set in each subclass;
@@ -53,6 +53,7 @@ class CommentElement
53
53
  end
54
54
  end
55
55
 
56
+ # Work with all the comments that an issue might have
56
57
  class Comment < Services
57
58
  #TODO See to documentation for "DELETE" as we use the superclass here and it will not be shown
58
59
 
@@ -58,6 +58,7 @@ class IssueLink < Services
58
58
  # @param [String, Issue] remoteIssue Issue to connect to
59
59
  # @param [String] type Link type
60
60
  # @param [String] comment If a comment should be set while linking
61
+ # @raise [Jirarest2::ValueNotAllowedException.new] Raised if the name give for the linktype is not valid
61
62
  # @return [Jirarest2::Result] The result of the linking
62
63
  def link_issue(thisIssue,remoteIssue,type,comment = nil)
63
64
  inwardIssue = key(thisIssue)
@@ -23,7 +23,7 @@ require "ostruct"
23
23
  require "jirarest2/madbitconfig"
24
24
  require "uri"
25
25
 
26
-
26
+ # Module to keep some methods most executable scripts need
27
27
  module Jirarest2Bin
28
28
  # Checks for the minimum jira version (1.9.1)
29
29
  def self.check_ruby_version
@@ -156,7 +156,7 @@ module Jirarest2Bin
156
156
  # @param [Array] scriptopts Command line options from the calling script
157
157
  # @param [Connection,Nil] connection a connection we er to use
158
158
  # @param [Symbol] command to execute
159
- # @param [Array] *args Arguments for the commands to call
159
+ # @param [Array] args Arguments for the commands to call
160
160
  # @return [Connection] The connection we used
161
161
  # @return [Object] The object that was called in the command
162
162
  # @example get a Connection object
@@ -0,0 +1 @@
1
+ {"expand":"projects","projects":[{"expand":"issuetypes","self":"http://localhost:2990/jira/rest/api/2/project/MFTP","id":"10000","key":"MFTP","name":"My first Test Project","avatarUrls":{"16x16":"http://localhost:2990/jira/secure/projectavatar?size=small&pid=10000&avatarId=10011","48x48":"http://localhost:2990/jira/secure/projectavatar?pid=10000&avatarId=10011"},"issuetypes":[{"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"]},"timetracking":{"required":false,"schema":{"type":"timetracking","system":"timetracking"},"name":"Time Tracking","operations":["set","edit"]},"customfield_10306":{"required":false,"schema":{"type":"version","custom":"com.atlassian.jira.plugin.system.customfieldtypes:version","customId":10306},"name":"Single Version Picker Field","operations":["set"],"allowedValues":[[{"self":"http://localhost:2990/jira/rest/api/2/version/10000","id":"10000","description":"Version 0.1 dooh","name":"0.1","archived":false,"released":false,"releaseDate":"2012-07-01"},{"self":"http://localhost:2990/jira/rest/api/2/version/10001","id":"10001","description":"And now v0.2","name":"0.2","archived":false,"released":false,"releaseDate":"2012-08-01"},{"self":"http://localhost:2990/jira/rest/api/2/version/10002","id":"10002","description":"Version 0.3","name":"0.3","archived":false,"released":false,"releaseDate":"2012-08-31"}]]},"customfield_10309":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jirafisheyeplugin:hiddenjobswitch","customId":10309},"name":"Job Switch (Hidden)","operations":["set"]},"customfield_10308":{"required":false,"schema":{"type":"array","items":"version","custom":"com.atlassian.jira.plugin.system.customfieldtypes:multiversion","customId":10308},"name":"Multi Version Picker","operations":["set","add","remove"],"allowedValues":[[{"self":"http://localhost:2990/jira/rest/api/2/version/10000","id":"10000","description":"Version 0.1 dooh","name":"0.1","archived":false,"released":false,"releaseDate":"2012-07-01"},{"self":"http://localhost:2990/jira/rest/api/2/version/10001","id":"10001","description":"And now v0.2","name":"0.2","archived":false,"released":false,"releaseDate":"2012-08-01"},{"self":"http://localhost:2990/jira/rest/api/2/version/10002","id":"10002","description":"Version 0.3","name":"0.3","archived":false,"released":false,"releaseDate":"2012-08-31"}]]},"issuetype":{"required":true,"schema":{"type":"issuetype","system":"issuetype"},"name":"Issue Type","operations":[],"allowedValues":[{"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}]},"customfield_10303":{"required":false,"schema":{"type":"array","items":"group","custom":"com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker","customId":10303},"name":"Multi Group","operations":["add","set","remove"]},"customfield_10302":{"required":false,"schema":{"type":"number","custom":"com.atlassian.jira.plugin.system.customfieldtypes:importid","customId":10302},"name":"Import ID Field range search","operations":["set"]},"customfield_10305":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:readonlyfield","customId":10305},"name":"RO Text Field","operations":["set"]},"customfield_10304":{"required":false,"schema":{"type":"project","custom":"com.atlassian.jira.plugin.system.customfieldtypes:project","customId":10304},"name":"Project Picket Field","operations":["set"],"allowedValues":[[{"self":"http://localhost:2990/jira/rest/api/2/project/MFTP","id":"10000","key":"MFTP","name":"My first Test Project","avatarUrls":{"16x16":"http://localhost:2990/jira/secure/projectavatar?size=small&pid=10000&avatarId=10011","48x48":"http://localhost:2990/jira/secure/projectavatar?pid=10000&avatarId=10011"}},{"self":"http://localhost:2990/jira/rest/api/2/project/SP","id":"10100","key":"SP","name":"Second Project","avatarUrls":{"16x16":"http://localhost:2990/jira/secure/projectavatar?size=small&pid=10100&avatarId=10011","48x48":"http://localhost:2990/jira/secure/projectavatar?pid=10100&avatarId=10011"}}]]},"resolution":{"required":false,"schema":{"type":"resolution","system":"resolution"},"name":"Resolution","operations":["set"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/resolution/1","name":"Fixed","id":"1"},{"self":"http://localhost:2990/jira/rest/api/2/resolution/2","name":"Won't Fix","id":"2"},{"self":"http://localhost:2990/jira/rest/api/2/resolution/3","name":"Duplicate","id":"3"},{"self":"http://localhost:2990/jira/rest/api/2/resolution/4","name":"Incomplete","id":"4"},{"self":"http://localhost:2990/jira/rest/api/2/resolution/5","name":"Cannot Reproduce","id":"5"}]},"fixVersions":{"required":false,"schema":{"type":"array","items":"version","system":"fixVersions"},"name":"Fix Version/s","operations":["set","add","remove"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/version/10000","id":"10000","description":"Version 0.1 dooh","name":"0.1","archived":false,"released":false,"releaseDate":"2012-07-01","overdue":true,"userReleaseDate":"01/Jul/12"},{"self":"http://localhost:2990/jira/rest/api/2/version/10001","id":"10001","description":"And now v0.2","name":"0.2","archived":false,"released":false,"releaseDate":"2012-08-01","overdue":true,"userReleaseDate":"01/Aug/12"},{"self":"http://localhost:2990/jira/rest/api/2/version/10002","id":"10002","description":"Version 0.3","name":"0.3","archived":false,"released":false,"releaseDate":"2012-08-31","overdue":false,"userReleaseDate":"31/Aug/12"}]},"reporter":{"required":true,"schema":{"type":"user","system":"reporter"},"name":"Reporter","autoCompleteUrl":"http://localhost:2990/jira/rest/api/latest/user/search?username=","operations":["set"]},"description":{"required":false,"schema":{"type":"string","system":"description"},"name":"Description","operations":["set"]},"priority":{"required":false,"schema":{"type":"priority","system":"priority"},"name":"Priority","operations":["set"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/priority/1","iconUrl":"http://localhost:2990/jira/images/icons/priority_blocker.gif","name":"Blocker","id":"1"},{"self":"http://localhost:2990/jira/rest/api/2/priority/2","iconUrl":"http://localhost:2990/jira/images/icons/priority_critical.gif","name":"Critical","id":"2"},{"self":"http://localhost:2990/jira/rest/api/2/priority/3","iconUrl":"http://localhost:2990/jira/images/icons/priority_major.gif","name":"Major","id":"3"},{"self":"http://localhost:2990/jira/rest/api/2/priority/4","iconUrl":"http://localhost:2990/jira/images/icons/priority_minor.gif","name":"Minor","id":"4"},{"self":"http://localhost:2990/jira/rest/api/2/priority/5","iconUrl":"http://localhost:2990/jira/images/icons/priority_trivial.gif","name":"Trivial","id":"5"}]},"customfield_10001":{"required":false,"schema":{"type":"datetime","custom":"com.atlassian.jira.plugin.system.customfieldtypes:datetime","customId":10001},"name":"Date Time Field","operations":["set"]},"duedate":{"required":false,"schema":{"type":"date","system":"duedate"},"name":"Due Date","operations":["set"]},"customfield_10002":{"required":false,"schema":{"type":"date","custom":"com.atlassian.jira.plugin.system.customfieldtypes:datepicker","customId":10002},"name":"Date Picker","operations":["set"]},"customfield_10310":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jirafisheyeplugin:jobcheckbox","customId":10310},"name":"Job Checkbox","operations":["set"]},"customfield_10003":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:textarea","customId":10003},"name":"Großes Text","operations":["set"]},"customfield_10311":{"required":false,"schema":{"type":"number","custom":"com.atlassian.jira.plugin.system.customfieldtypes:float","customId":10311},"name":"Numbers no","operations":["set"]},"customfield_10004":{"required":false,"schema":{"type":"array","items":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes","customId":10004},"name":"Multi Checkboxes","operations":["add","set","remove"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10019","value":"Göthe","id":"10019"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10020","value":"Schiller","id":"10020"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10021","value":"Heine","id":"10021"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10022","value":"Kafka","id":"10022"}]},"customfield_10312":{"required":false,"schema":{"type":"number","custom":"com.atlassian.jira.plugin.system.customfieldtypes:float","customId":10312},"name":"Numbers range","operations":["set"]},"customfield_10000":{"required":false,"schema":{"type":"array","items":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect","customId":10000},"name":"Cascading Select Test","operations":["set"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10000","value":"English","id":"10000","children":[{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10003","value":"One","id":"10003"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10004","value":"Two","id":"10004"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10005","value":"Three","id":"10005"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10006","value":"Four","id":"10006"}]},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10001","value":"German","id":"10001","children":[{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10007","value":"Eins","id":"10007"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10008","value":"zwei","id":"10008"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10009","value":"drEi","id":"10009"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10010","value":"vier","id":"10010"}]},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10002","value":"ISO","id":"10002","children":[{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10011","value":"Unaone","id":"10011"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10012","value":"Bissotwo","id":"10012"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10013","value":"Terrathree","id":"10013"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10014","value":"Kartefour","id":"10014"}]}]},"customfield_10102":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:textfield","customId":10102},"name":"projects","operations":["set"]},"customfield_10101":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:textfield","customId":10101},"name":"Issue Type","operations":["set"]},"customfield_10100":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:textfield","customId":10100},"name":"issuetype","operations":["set"]},"customfield_10006":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:select","customId":10006},"name":"List select","operations":["set"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10015","value":"Räuber","id":"10015"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10016","value":"Kabale und Liebe","id":"10016"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10017","value":"Faust","id":"10017"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10018","value":"Landleben","id":"10018"}]},"customfield_10005":{"required":false,"schema":{"type":"array","items":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:multiselect","customId":10005},"name":"Multi Select","operations":["add","set","remove"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10023","value":"Glocke","id":"10023"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10024","value":"Kabale und Liebe","id":"10024"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10025","value":"Schiller","id":"10025"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10026","value":"Göthe","id":"10026"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10027","value":"Faust","id":"10027"}]},"labels":{"required":false,"schema":{"type":"array","items":"string","system":"labels"},"name":"Labels","autoCompleteUrl":"http://localhost:2990/jira/rest/api/1.0/labels/suggest?query=","operations":["add","set","remove"]},"customfield_10315":{"required":false,"schema":{"type":"user","custom":"com.atlassian.jira.plugin.system.customfieldtypes:userpicker","customId":10315},"name":"User Picker User","autoCompleteUrl":"http://localhost:2990/jira/rest/api/1.0/users/picker?fieldName=customfield_10315&query=","operations":["set"]},"assignee":{"required":false,"schema":{"type":"user","system":"assignee"},"name":"Assignee","autoCompleteUrl":"http://localhost:2990/jira/rest/api/latest/user/assignable/search?issueKey=null&username=","operations":["set"]},"customfield_10316":{"required":false,"schema":{"type":"user","custom":"com.atlassian.jira.plugin.system.customfieldtypes:userpicker","customId":10316},"name":"User Picker U+G","autoCompleteUrl":"http://localhost:2990/jira/rest/api/1.0/users/picker?fieldName=customfield_10316&query=","operations":["set"]},"customfield_10313":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons","customId":10313},"name":"Radios","operations":["set"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10100","value":"Books","id":"10100"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10101","value":"EBooks","id":"10101"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10102","value":"Newspaper","id":"10102"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10103","value":"Websites","id":"10103"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10104","value":"Magazines","id":"10104"}]},"customfield_10314":{"required":false,"schema":{"type":"string","custom":"com.atlassian.jira.plugin.system.customfieldtypes:select","customId":10314},"name":"Select List Multi","operations":["set"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10105","value":"Car","id":"10105"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10106","value":"Train","id":"10106"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10107","value":"Subway","id":"10107"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10108","value":"Underground","id":"10108"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10109","value":"Plane","id":"10109"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10110","value":"Ship","id":"10110"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10111","value":"Hovercraft","id":"10111"},{"self":"http://localhost:2990/jira/rest/api/2/customFieldOption/10112","value":"Foot","id":"10112"}]},"attachment":{"required":false,"schema":{"type":"array","items":"attachment","system":"attachment"},"name":"Attachment","operations":[]},"customfield_10200":{"required":false,"schema":{"type":"array","items":"user","custom":"com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker","customId":10200},"name":"Multi User","autoCompleteUrl":"http://localhost:2990/jira/rest/api/1.0/users/picker?fieldName=customfield_10200&query=","operations":["add","set","remove"]},"project":{"required":true,"schema":{"type":"project","system":"project"},"autoCompleteUrl":"Project","operations":["set"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/project/MFTP","id":"10000","key":"MFTP","name":"My first Test Project","avatarUrls":{"16x16":"http://localhost:2990/jira/secure/projectavatar?size=small&pid=10000&avatarId=10011","48x48":"http://localhost:2990/jira/secure/projectavatar?pid=10000&avatarId=10011"}}]},"versions":{"required":false,"schema":{"type":"array","items":"version","system":"versions"},"name":"Affects Version/s","operations":["set","add","remove"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/version/10000","id":"10000","description":"Version 0.1 dooh","name":"0.1","archived":false,"released":false,"releaseDate":"2012-07-01","overdue":true,"userReleaseDate":"01/Jul/12"},{"self":"http://localhost:2990/jira/rest/api/2/version/10001","id":"10001","description":"And now v0.2","name":"0.2","archived":false,"released":false,"releaseDate":"2012-08-01","overdue":true,"userReleaseDate":"01/Aug/12"},{"self":"http://localhost:2990/jira/rest/api/2/version/10002","id":"10002","description":"Version 0.3","name":"0.3","archived":false,"released":false,"releaseDate":"2012-08-31","overdue":false,"userReleaseDate":"31/Aug/12"}]},"environment":{"required":false,"schema":{"type":"string","system":"environment"},"name":"Environment","operations":["set"]},"customfield_10300":{"required":false,"schema":{"type":"group","custom":"com.atlassian.jira.plugin.system.customfieldtypes:grouppicker","customId":10300},"name":"Pick Group","operations":["set"]},"customfield_10301":{"required":false,"schema":{"type":"number","custom":"com.atlassian.jira.plugin.system.customfieldtypes:importid","customId":10301},"name":"Import ID Field no search","operations":["set"]},"components":{"required":false,"schema":{"type":"array","items":"component","system":"components"},"name":"Component/s","operations":["add","set","remove"],"allowedValues":[{"self":"http://localhost:2990/jira/rest/api/2/component/10000","id":"10000","name":"Signal1","description":"A component "},{"self":"http://localhost:2990/jira/rest/api/2/component/10001","id":"10001","name":"Sissi","description":"Another Component"}]}}}]}]}
@@ -0,0 +1,820 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "minitest/autorun"
3
+ require "jirarest2/field"
4
+ require "json"
5
+ require "deb"
6
+
7
+ # Extraclass to get all the different cases
8
+ class TestFieldCreatemeta < MiniTest::Unit::TestCase
9
+
10
+ def test_summary
11
+ fstruct = {"summary" => {"required"=>true, "schema"=>{"type"=>"string", "system"=>"summary"}, "name"=>"Summary", "operations"=>["set"]}}
12
+ field = Jirarest2Field::TextField.new("summary","Summary",{:required => false, :createmeta => fstruct["summary"]})
13
+ allowed_v = []
14
+ assert_equal "summary", field.id
15
+ assert_equal "Summary", field.name
16
+ assert_equal false, field.readonly
17
+ assert_raises(NoMethodError) { field.key }
18
+ assert_equal allowed_v, field.allowed_values
19
+ end
20
+ def test_parse_value_summary
21
+ field = Jirarest2Field::TextField.new("summary","Summary",{:required => false})
22
+ field.parse_value("All Fields Bujaa")
23
+ assert_equal "All Fields Bujaa",field.value
24
+ toj = {"summary" => "All Fields Bujaa"}
25
+ assert_equal toj, field.to_j
26
+ end
27
+
28
+ def test_customfield_10307 # URL -> TextField
29
+ fstruct = {"customfield_10307" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:url", "customId"=>10307}, "name"=>"URL", "operations"=>["set"]}}
30
+ field = Jirarest2Field::TextField.new("customfield_10307","URL",{:required => false, :createmeta => fstruct["customfield_10307"]})
31
+ allowed_v = [] # TODO
32
+ assert_equal "customfield_10307", field.id
33
+ assert_equal "URL", field.name
34
+ assert_equal false, field.readonly
35
+ assert_raises(NoMethodError) { field.key }
36
+ assert_equal allowed_v, field.allowed_values
37
+ end
38
+ def test_parse_value_customfield_10307
39
+ field = Jirarest2Field::TextField.new("customfield_10307","URL",{:required => false})
40
+ field.parse_value("https://localhost:8080/test/test")
41
+ assert_equal "https://localhost:8080/test/test",field.value
42
+ toj = {"customfield_10307" => "https://localhost:8080/test/test"}
43
+ assert_equal toj, field.to_j
44
+ end
45
+
46
+
47
+ def test_timetracking # timetracking -> TimetrackingField
48
+ fstruct = {"timetracking" => {"required"=>false, "schema"=>{"type"=>"timetracking", "system"=>"timetracking"}, "name"=>"Time Tracking", "operations"=>["set", "edit"]}}
49
+ field = Jirarest2Field::TimetrackingField.new("timetracking","Time Tracking",{:required => false, :createmeta => fstruct["timetracking"]})
50
+ allowed_v = []
51
+ assert_equal "timetracking", field.id
52
+ assert_equal "Time Tracking", field.name
53
+ assert_equal false, field.readonly
54
+ assert_raises(NoMethodError) { field.key }
55
+ assert_equal allowed_v, field.allowed_values
56
+ end
57
+ def test_parse_value_timetracking
58
+ field = Jirarest2Field::TimetrackingField.new("timetracking","Time Tracking",{:required => false})
59
+ field.parse_value({"originalEstimate"=>"46w 3d 6h", "remainingEstimate"=>"1w 3m", "originalEstimateSeconds"=>6732000, "remainingEstimateSeconds"=>144180})
60
+ ret = {"originalEstimate" => "46w 3d 6h", "remainingEstimate" => "1w 3m", "originalEstimateSeconds" => 6732000, "remainingEstimateSeconds" => 144180}
61
+ assert_equal ret,field.value
62
+ # @todo check for to_j
63
+ end
64
+
65
+
66
+ def test_customfield_10306 # Version Picker -> VersionField
67
+ fstruct = {"customfield_10306" => {"required"=>false, "schema"=>{"type"=>"version", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:version", "customId"=>10306}, "name"=>"Single Version Picker Field", "operations"=>["set"], "allowedValues"=>[[{"self"=>"http://localhost:2990/jira/rest/api/2/version/10000", "id"=>"10000", "description"=>"Version 0.1 dooh", "name"=>"0.1", "archived"=>false, "released"=>false, "releaseDate"=>"2012-07-01"}, {"self"=>"http://localhost:2990/jira/rest/api/2/version/10001", "id"=>"10001", "description"=>"And now v0.2", "name"=>"0.2", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-01"}, {"self"=>"http://localhost:2990/jira/rest/api/2/version/10002", "id"=>"10002", "description"=>"Version 0.3", "name"=>"0.3", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-31"}]]}}
68
+ field = Jirarest2Field::VersionField.new("customfield_10306","Single Version Picker Field",{:required => false, :createmeta => fstruct["customfield_10306"]})
69
+ allowed_v = ["0.1", "0.2", "0.3"]
70
+ assert_equal "customfield_10306", field.id
71
+ assert_equal "Single Version Picker Field", field.name
72
+ assert_equal false, field.readonly
73
+ assert_equal "name", field.key
74
+ assert_equal allowed_v, field.allowed_values
75
+ end
76
+ def test_parse_value_customfield_10306
77
+ assert_raises(Jirarest2::HashKeyMissingException){ Jirarest2Field::VersionField.new("customfield_10306","Single Version Picker Field",{:required => false})}
78
+ field = Jirarest2Field::VersionField.new("customfield_10306","Single Version Picker Field",{:required => false, :key => "name"})
79
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/version/10001", "id"=>"10001", "description"=>"And now v0.2", "name"=>"0.2", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-01"})
80
+ assert_equal "0.2",field.value
81
+ toj = {"customfield_10306"=>{"name"=>"0.2"}}
82
+ assert_equal toj, field.to_j
83
+ end
84
+
85
+
86
+ def test_customfield_10309 # hiddenjobswitch -> TextField
87
+ fstruct = {"customfield_10309" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jirafisheyeplugin:hiddenjobswitch", "customId"=>10309}, "name"=>"Job Switch (Hidden)", "operations"=>["set"]}}
88
+ field = Jirarest2Field::TextField.new("customfield_10309","Job Switch (Hidden)",{:required => false, :createmeta => fstruct["customfield_10309"]})
89
+ allowed_v = []
90
+ assert_equal "customfield_10309", field.id
91
+ assert_equal "Job Switch (Hidden)", field.name
92
+ assert_equal false, field.readonly
93
+ assert_raises(NoMethodError) { field.key }
94
+ assert_equal allowed_v, field.allowed_values
95
+ end
96
+ def test_parse_value_customfield_10309
97
+ field = Jirarest2Field::TextField.new("customfield_10309","Job Switch (Hidden)",{:required => false})
98
+ field.parse_value("false")
99
+ assert_equal "false",field.value
100
+ toj = {"customfield_10309"=>"false"}
101
+ assert_equal toj, field.to_j
102
+ end
103
+
104
+ def test_customfield_10308 # Multi Version Picker -> MultiVersionField
105
+ fstruct = {"customfield_10308" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"version", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:multiversion", "customId"=>10308}, "name"=>"Multi Version Picker", "operations"=>["set", "add", "remove"], "allowedValues"=>[[{"self"=>"http://localhost:2990/jira/rest/api/2/version/10000", "id"=>"10000", "description"=>"Version 0.1 dooh", "name"=>"0.1", "archived"=>false, "released"=>false, "releaseDate"=>"2012-07-01"}, {"self"=>"http://localhost:2990/jira/rest/api/2/version/10001", "id"=>"10001", "description"=>"And now v0.2", "name"=>"0.2", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-01"}, {"self"=>"http://localhost:2990/jira/rest/api/2/version/10002", "id"=>"10002", "description"=>"Version 0.3", "name"=>"0.3", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-31"}]]}}
106
+ field = Jirarest2Field::MultiVersionField.new("customfield_10308","Multi Version Picker",{:required => false, :createmeta => fstruct["customfield_10308"]})
107
+ allowed_v = ["0.1","0.2","0.3"]
108
+ assert_equal "customfield_10308", field.id
109
+ assert_equal "Multi Version Picker", field.name
110
+ assert_equal false, field.readonly
111
+ assert_equal "name", field.key
112
+ assert_equal allowed_v, field.allowed_values
113
+ end
114
+ def test_parse_value_customfield_10308
115
+ field = Jirarest2Field::MultiVersionField.new("customfield_10308","Multi Version Picker",{:required => false, :key => "name"})
116
+ field.parse_value([{"self"=>"http://localhost:2990/jira/rest/api/2/version/10001", "id"=>"10001", "description"=>"And now v0.2", "name"=>"0.2", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-01"}, {"self"=>"http://localhost:2990/jira/rest/api/2/version/10002", "id"=>"10002", "description"=>"Version 0.3", "name"=>"0.3", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-31"}])
117
+ assert_equal ["0.2","0.3"],field.value
118
+ toj = {"customfield_10308" => [{"name" => "0.2"},{"name" => "0.3"}]}
119
+ assert_equal toj, field.to_j
120
+ end
121
+
122
+ def test_issuetype # issuetype -> HashField
123
+ fstruct = {"issuetype" => {"required"=>true, "schema"=>{"type"=>"issuetype", "system"=>"issuetype"}, "name"=>"Issue Type", "operations"=>[], "allowedValues"=>[{"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}]}}
124
+ field = Jirarest2Field::HashField.new("issuetype","Issue Type",{:required => false, :createmeta => fstruct["issuetype"]})
125
+ allowed_v = ["My issue type"]
126
+ assert_equal "issuetype", field.id
127
+ assert_equal "Issue Type", field.name
128
+ assert_equal true, field.readonly
129
+ assert_equal "name", field.key
130
+ assert_equal "My issue type", field.value
131
+ assert_equal allowed_v, field.allowed_values
132
+ end
133
+ def test_parse_value_issuetype
134
+ assert_raises(Jirarest2::HashKeyMissingException) { Jirarest2Field::HashField.new("issuetype","Issue Type",{:required => false})}
135
+ field = Jirarest2Field::HashField.new("issuetype","Issue Type",{:required => false, :key => "name"})
136
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/issuetype/1", "id"=>"1", "description"=>"A problem which impairs or prevents the functions of the product.", "iconUrl"=>"http://localhost:2990/jira/images/icons/bug.gif", "name"=>"Bug", "subtask"=>false})
137
+ assert_equal "Bug",field.value
138
+ toj = {"issuetype" => {"name" => "Bug"} }
139
+ assert_equal toj, field.to_j
140
+ end
141
+
142
+ def test_customfield_10303 # multigroupPicker -> MultiUserField
143
+ fstruct = {"customfield_10303" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"group", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker", "customId"=>10303}, "name"=>"Multi Group", "operations"=>["add", "set", "remove"]}}
144
+ field = Jirarest2Field::MultiUserField.new("customfield_10303","Multi Group",{:required => false, :createmeta => fstruct["customfield_10303"]})
145
+ allowed_v = []
146
+ assert_equal "customfield_10303", field.id
147
+ assert_equal "Multi Group", field.name
148
+ assert_equal false, field.readonly
149
+ assert_equal "name", field.key
150
+ assert_equal allowed_v, field.allowed_values
151
+ end
152
+ def test_parse_value_customfield_10303
153
+ field = Jirarest2Field::MultiUserField.new("customfield_10303","Multi Group",{:required => false, :key => "name"})
154
+ field.parse_value( [{"name"=>"jira-administrators"}, {"name"=>"jira-users"}])
155
+ assert_equal ["jira-administrators","jira-users"],field.value
156
+ toj = { "customfield_10303" => [{"name" => "jira-administrators"},{"name" => "jira-users" }]}
157
+ assert_equal toj, field.to_j
158
+ end
159
+
160
+ def test_customfield_10302 # importid -> NumberField
161
+ fstruct = {"customfield_10302" => {"required"=>false, "schema"=>{"type"=>"number", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:importid", "customId"=>10302}, "name"=>"Import ID Field range search", "operations"=>["set"]}}
162
+ field = Jirarest2Field::NumberField.new("customfield_10302","Import ID Field range search",{:required => false, :createmeta => fstruct["customfield_10302"]})
163
+ allowed_v = []
164
+ assert_equal "customfield_10302", field.id
165
+ assert_equal "Import ID Field range search", field.name
166
+ assert_equal false, field.readonly
167
+ assert_raises(NoMethodError) { field.key }
168
+ assert_equal allowed_v, field.allowed_values
169
+ end
170
+ def test_parse_value_customfield_10302
171
+ field = Jirarest2Field::NumberField.new("customfield_10302","Import ID Field range search",{:required => false})
172
+ field.parse_value(nil)
173
+ assert_equal nil,field.value
174
+ toj = nil
175
+ assert_equal toj, field.to_j
176
+ end
177
+
178
+ def test_customfield_10305 # readonlyfield -> TextField
179
+ fstruct = {"customfield_10305" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:readonlyfield", "customId"=>10305}, "name"=>"RO Text Field", "operations"=>["set"]}}
180
+ field = Jirarest2Field::TextField.new("customfield_10305","RO Text Field",{:required => false, :createmeta => fstruct["customfield_10305"]})
181
+ allowed_v = []
182
+ assert_equal "customfield_10305", field.id
183
+ assert_equal "RO Text Field", field.name
184
+ assert_equal false, field.readonly
185
+ assert_raises(NoMethodError) { field.key }
186
+ assert_equal allowed_v, field.allowed_values
187
+ end
188
+ def test_parse_value_customfield_10305
189
+ field = Jirarest2Field::TextField.new("customfield_10305","RO Text Field",{:required => false})
190
+ field.parse_value(nil)
191
+ assert_equal nil,field.value
192
+ toj = nil
193
+ assert_equal toj, field.to_j
194
+ end
195
+
196
+ def test_customfield_10304 # project -> ProjectField
197
+ fstruct = {"customfield_10304" => {"required"=>false, "schema"=>{"type"=>"project", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:project", "customId"=>10304}, "name"=>"Project Picket Field", "operations"=>["set"], "allowedValues"=>[[{"self"=>"http://localhost:2990/jira/rest/api/2/project/MFTP", "id"=>"10000", "key"=>"MFTP", "name"=>"My first Test Project", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/projectavatar?size=small&pid=10000&avatarId=10011", "48x48"=>"http://localhost:2990/jira/secure/projectavatar?pid=10000&avatarId=10011"}}, {"self"=>"http://localhost:2990/jira/rest/api/2/project/SP", "id"=>"10100", "key"=>"SP", "name"=>"Second Project", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/projectavatar?size=small&pid=10100&avatarId=10011", "48x48"=>"http://localhost:2990/jira/secure/projectavatar?pid=10100&avatarId=10011"}}]]}}
198
+ field = Jirarest2Field::ProjectField.new("customfield_10304","Project Picket Field",{:required => false, :createmeta => fstruct["customfield_10304"]})
199
+ # allowed_v = ["My first Test Project", "Second Project"]
200
+ allowed_v = ["MFTP", "SP"]
201
+ assert_equal "customfield_10304", field.id
202
+ assert_equal "Project Picket Field", field.name
203
+ assert_equal false, field.readonly
204
+ assert_equal "key", field.key
205
+ assert_equal allowed_v, field.allowed_values
206
+ end
207
+ def test_parse_value_customfield_10304
208
+ field = Jirarest2Field::ProjectField.new("customfield_10304","Project Picket Field",{:required => false, :key => "key"})
209
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/project/MFTP", "id"=>"10000", "key"=>"MFTP", "name"=>"My first Test Project", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/projectavatar?size=small&pid=10000&avatarId=10011", "48x48"=>"http://localhost:2990/jira/secure/projectavatar?pid=10000&avatarId=10011"}})
210
+ assert_equal "MFTP",field.value
211
+ toj = {"customfield_10304" => {"key" => "MFTP"}}
212
+ assert_equal toj, field.to_j
213
+ end
214
+
215
+ def test_resolution # resolution -> HashField
216
+ fstruct = {"resolution" => {"required"=>false, "schema"=>{"type"=>"resolution", "system"=>"resolution"}, "name"=>"Resolution", "operations"=>["set"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/resolution/1", "name"=>"Fixed", "id"=>"1"}, {"self"=>"http://localhost:2990/jira/rest/api/2/resolution/2", "name"=>"Won't Fix", "id"=>"2"}, {"self"=>"http://localhost:2990/jira/rest/api/2/resolution/3", "name"=>"Duplicate", "id"=>"3"}, {"self"=>"http://localhost:2990/jira/rest/api/2/resolution/4", "name"=>"Incomplete", "id"=>"4"}, {"self"=>"http://localhost:2990/jira/rest/api/2/resolution/5", "name"=>"Cannot Reproduce", "id"=>"5"}]}}
217
+ field = Jirarest2Field::HashField.new("resolution","Resolution",{:required => false, :createmeta => fstruct["resolution"]})
218
+ allowed_v = ["Fixed", "Won't Fix", "Duplicate", "Incomplete", "Cannot Reproduce"]
219
+ assert_equal "resolution", field.id
220
+ assert_equal "Resolution", field.name
221
+ assert_equal false, field.readonly
222
+ assert_equal "name", field.key
223
+ assert_equal allowed_v, field.allowed_values
224
+ end
225
+ def test_parse_value_resolution
226
+ field = Jirarest2Field::HashField.new("resolution","Resolution",{:required => false, :key => "name"})
227
+ field.parse_value(nil)
228
+ assert_equal nil,field.value
229
+ # @todo see if there is not a better test here
230
+ toj = nil
231
+ assert_equal toj, field.to_j
232
+ end
233
+
234
+ def test_fixVersions # version -> MultiVersionField
235
+ fstruct = {"fixVersions" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"version", "system"=>"fixVersions"}, "name"=>"Fix Version/s", "operations"=>["set", "add", "remove"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/version/10000", "id"=>"10000", "description"=>"Version 0.1 dooh", "name"=>"0.1", "archived"=>false, "released"=>false, "releaseDate"=>"2012-07-01", "overdue"=>true, "userReleaseDate"=>"01/Jul/12"}, {"self"=>"http://localhost:2990/jira/rest/api/2/version/10001", "id"=>"10001", "description"=>"And now v0.2", "name"=>"0.2", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-01", "overdue"=>true, "userReleaseDate"=>"01/Aug/12"}, {"self"=>"http://localhost:2990/jira/rest/api/2/version/10002", "id"=>"10002", "description"=>"Version 0.3", "name"=>"0.3", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-31", "overdue"=>false, "userReleaseDate"=>"31/Aug/12"}]}}
236
+ field = Jirarest2Field::MultiVersionField.new("fixVersions","Fix Version/s",{:required => false, :createmeta => fstruct["fixVersions"]})
237
+ allowed_v = ["0.1","0.2","0.3"]
238
+ assert_equal "fixVersions", field.id
239
+ assert_equal "Fix Version/s", field.name
240
+ assert_equal false, field.readonly
241
+ assert_equal "name", field.key
242
+ assert_equal allowed_v, field.allowed_values
243
+ end
244
+ def test_parse_value_fixVersions
245
+ field = Jirarest2Field::MultiVersionField.new("fixVersions","Fix Version/s",{:required => false, :key => "name"})
246
+ field.parse_value([{"self"=>"http://localhost:2990/jira/rest/api/2/version/10002", "id"=>"10002", "description"=>"Version 0.3", "name"=>"0.3", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-31"}])
247
+ assert_equal ["0.3"],field.value
248
+ toj = { "fixVersions" => [{"name" => "0.3"}]}
249
+ assert_equal toj, field.to_j
250
+ end
251
+
252
+ def test_reporter # user -> UserField
253
+ fstruct = {"reporter" => {"required"=>true, "schema"=>{"type"=>"user", "system"=>"reporter"}, "name"=>"Reporter", "autoCompleteUrl"=>"http://localhost:2990/jira/rest/api/latest/user/search?username=", "operations"=>["set"]}}
254
+ field = Jirarest2Field::UserField.new("reporter","Reporter",{:required => false, :createmeta => fstruct["reporter"]})
255
+ allowed_v = []
256
+ assert_equal "reporter", field.id
257
+ assert_equal "Reporter", field.name
258
+ assert_equal false, field.readonly
259
+ assert_equal "name", field.key
260
+ assert_equal allowed_v, field.allowed_values
261
+ end
262
+ def test_parse_value_reporter
263
+ field = Jirarest2Field::UserField.new("reporter","Reporter",{:required => false, :key => "name"})
264
+ field.parse_value( {"self"=>"http://localhost:2990/jira/rest/api/2/user?username=admin", "name"=>"admin", "emailAddress"=>"admin@example.com", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122", "48x48"=>"http://localhost:2990/jira/secure/useravatar?avatarId=10122"}, "displayName"=>"admin", "active"=>true})
265
+ assert_equal "admin",field.value
266
+ toj = {"reporter" => {"name" => "admin"}}
267
+ assert_equal toj, field.to_j
268
+ end
269
+
270
+ def test_description # description -> TextField
271
+ fstruct = {"description" => {"required"=>false, "schema"=>{"type"=>"string", "system"=>"description"}, "name"=>"Description", "operations"=>["set"]}}
272
+ field = Jirarest2Field::TextField.new("description","Description",{:required => false, :createmeta => fstruct["description"]})
273
+ allowed_v = []
274
+ assert_equal "description", field.id
275
+ assert_equal "Description", field.name
276
+ assert_equal false, field.readonly
277
+ assert_raises(NoMethodError) { field.key }
278
+ assert_equal allowed_v, field.allowed_values
279
+ end
280
+ def test_parse_value_description
281
+ field = Jirarest2Field::TextField.new("description","Description",{:required => false})
282
+ field.parse_value("What do you want me to describe?")
283
+ assert_equal "What do you want me to describe?",field.value
284
+ toj = {"description" => "What do you want me to describe?"}
285
+ assert_equal toj, field.to_j
286
+ end
287
+
288
+ def test_priority # priority -> HashField
289
+ fstruct = {"priority" => {"required"=>false, "schema"=>{"type"=>"priority", "system"=>"priority"}, "name"=>"Priority", "operations"=>["set"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/priority/1", "iconUrl"=>"http://localhost:2990/jira/images/icons/priority_blocker.gif", "name"=>"Blocker", "id"=>"1"}, {"self"=>"http://localhost:2990/jira/rest/api/2/priority/2", "iconUrl"=>"http://localhost:2990/jira/images/icons/priority_critical.gif", "name"=>"Critical", "id"=>"2"}, {"self"=>"http://localhost:2990/jira/rest/api/2/priority/3", "iconUrl"=>"http://localhost:2990/jira/images/icons/priority_major.gif", "name"=>"Major", "id"=>"3"}, {"self"=>"http://localhost:2990/jira/rest/api/2/priority/4", "iconUrl"=>"http://localhost:2990/jira/images/icons/priority_minor.gif", "name"=>"Minor", "id"=>"4"}, {"self"=>"http://localhost:2990/jira/rest/api/2/priority/5", "iconUrl"=>"http://localhost:2990/jira/images/icons/priority_trivial.gif", "name"=>"Trivial", "id"=>"5"}]}}
290
+ field = Jirarest2Field::HashField.new("priority","Priority",{:required => false, :createmeta => fstruct["priority"]})
291
+ allowed_v = ["Blocker", "Critical", "Major", "Minor", "Trivial"]
292
+ assert_equal "priority", field.id
293
+ assert_equal "Priority", field.name
294
+ assert_equal false, field.readonly
295
+ assert_equal "name", field.key
296
+ assert_equal allowed_v, field.allowed_values
297
+ end
298
+ def test_parse_value_priority
299
+ field = Jirarest2Field::HashField.new("priority","Priority",{:required => false, :key => "name"})
300
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/priority/4", "iconUrl"=>"http://localhost:2990/jira/images/icons/priority_minor.gif", "name"=>"Minor", "id"=>"4"})
301
+ assert_equal "Minor",field.value
302
+ toj = {"priority"=>{"name"=>"Minor"}}
303
+ assert_equal toj, field.to_j
304
+ end
305
+
306
+ def test_customfield_10001 # datetime -> DateTimeField
307
+ fstruct = {"customfield_10001" => {"required"=>false, "schema"=>{"type"=>"datetime", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:datetime", "customId"=>10001}, "name"=>"Date Time Field", "operations"=>["set"]}}
308
+ field = Jirarest2Field::DateTimeField.new("customfield_10001","Date Time Field",{:required => false, :createmeta => fstruct["customfield_10001"]})
309
+ allowed_v = []
310
+ assert_equal "customfield_10001", field.id
311
+ assert_equal "Date Time Field", field.name
312
+ assert_equal false, field.readonly
313
+ assert_raises(NoMethodError) { field.key }
314
+ assert_equal allowed_v, field.allowed_values
315
+ end
316
+ def test_parse_value_customfield_10001
317
+ field = Jirarest2Field::DateTimeField.new("customfield_10001","Date Time Field",{:required => false})
318
+ field.parse_value("2012-08-22T19:08:00.000+0200")
319
+ assert_equal DateTime.parse("2012-08-22T19:08:00.000+0200"),field.value(true)
320
+ toj = {"customfield_10001"=>"2012-08-22T19:08:00.000+0200"}
321
+ assert_equal toj, field.to_j
322
+ end
323
+
324
+ def test_duedate # date -> DateField
325
+ fstruct = {"duedate" => {"required"=>false, "schema"=>{"type"=>"date", "system"=>"duedate"}, "name"=>"Due Date", "operations"=>["set"]}}
326
+ field = Jirarest2Field::DateField.new("duedate","Due Date",{:required => false, :createmeta => fstruct["duedate"]})
327
+ allowed_v = []
328
+ assert_equal "duedate", field.id
329
+ assert_equal "Due Date", field.name
330
+ assert_equal false, field.readonly
331
+ assert_raises(NoMethodError) { field.key }
332
+ assert_equal allowed_v, field.allowed_values
333
+ end
334
+ def test_parse_value_duedate
335
+ field = Jirarest2Field::DateField.new("duedate","Due Date",{:required => false})
336
+ field.parse_value("2012-08-29")
337
+ assert_equal Date.parse("2012-08-29"),field.value(true)
338
+ toj = {"duedate"=>"2012-08-29"}
339
+ assert_equal toj, field.to_j
340
+ end
341
+
342
+ def test_customfield_10002 # datepicker -> DateField
343
+ fstruct = {"customfield_10002" => {"required"=>false, "schema"=>{"type"=>"date", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:datepicker", "customId"=>10002}, "name"=>"Date Picker", "operations"=>["set"]}}
344
+ field = Jirarest2Field::DateField.new("customfield_10002","Date Picker",{:required => false, :createmeta => fstruct["customfield_10002"]})
345
+ allowed_v = []
346
+ assert_equal "customfield_10002", field.id
347
+ assert_equal "Date Picker", field.name
348
+ assert_equal false, field.readonly
349
+ assert_raises(NoMethodError) { field.key }
350
+ assert_equal allowed_v, field.allowed_values
351
+ end
352
+ def test_parse_value_customfield_10002
353
+ field = Jirarest2Field::DateField.new("customfield_10002","Date Picker",{:required => false})
354
+ field.parse_value("2012-08-14")
355
+ assert_equal Date.parse("2012-08-14"),field.value(true)
356
+ toj = {"customfield_10002"=>"2012-08-14"}
357
+ assert_equal toj, field.to_j
358
+ end
359
+
360
+ def test_customfield_10310 # jobcheckbox -> TextField
361
+ fstruct = {"customfield_10310" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jirafisheyeplugin:jobcheckbox", "customId"=>10310}, "name"=>"Job Checkbox", "operations"=>["set"]}}
362
+ field = Jirarest2Field::TextField.new("customfield_10310","Job Checkbox",{:required => false, :createmeta => fstruct["customfield_10310"]})
363
+ allowed_v = []
364
+ assert_equal "customfield_10310", field.id
365
+ assert_equal "Job Checkbox", field.name
366
+ assert_equal false, field.readonly
367
+ assert_raises(NoMethodError) { field.key }
368
+ assert_equal allowed_v, field.allowed_values
369
+ end
370
+ def test_parse_value_customfield_10310
371
+ field = Jirarest2Field::TextField.new("customfield_10310","Job Checkbox",{:required => false})
372
+ field.parse_value("false")
373
+ assert_equal "false",field.value
374
+ toj = {"customfield_10310"=>"false"}
375
+ assert_equal toj, field.to_j
376
+ end
377
+
378
+ def test_customfield_10003 # textarea -> TextField
379
+ fstruct = {"customfield_10003" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:textarea", "customId"=>10003}, "name"=>"Großes Text", "operations"=>["set"]}}
380
+ field = Jirarest2Field::TextField.new("customfield_10003","Großes Text",{:required => false, :createmeta => fstruct["customfield_10003"]})
381
+ allowed_v = []
382
+ assert_equal "customfield_10003", field.id
383
+ assert_equal "Großes Text", field.name
384
+ assert_equal false, field.readonly
385
+ assert_raises(NoMethodError) { field.key }
386
+ assert_equal allowed_v, field.allowed_values
387
+ end
388
+ def test_parse_value_customfield_10003
389
+ field = Jirarest2Field::TextField.new("customfield_10003","Großes Text",{:required => false})
390
+ field.parse_value("Big Text?")
391
+ assert_equal "Big Text?",field.value
392
+ toj = {"customfield_10003"=>"Big Text?"}
393
+ assert_equal toj, field.to_j
394
+ end
395
+
396
+ def test_customfield_10311 # float -> NumberField
397
+ fstruct = {"customfield_10311" => {"required"=>false, "schema"=>{"type"=>"number", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:float", "customId"=>10311}, "name"=>"Numbers no", "operations"=>["set"]}}
398
+ field = Jirarest2Field::NumberField.new("customfield_10311","Numbers no",{:required => false, :createmeta => fstruct["customfield_10311"]})
399
+ allowed_v = []
400
+ assert_equal "customfield_10311", field.id
401
+ assert_equal "Numbers no", field.name
402
+ assert_equal false, field.readonly
403
+ assert_raises(NoMethodError) { field.key }
404
+ assert_equal allowed_v, field.allowed_values
405
+ end
406
+ def test_parse_value_customfield_10311
407
+ field = Jirarest2Field::NumberField.new("customfield_10311","Numbers no",{:required => false})
408
+ field.parse_value(14.0)
409
+ assert_equal 14.0,field.value
410
+ toj = {"customfield_10311"=>14.0}
411
+ assert_equal toj, field.to_j
412
+ end
413
+
414
+ def test_customfield_10004 # multicheckboxes -> MultiHashField
415
+ fstruct = {"customfield_10004" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "customId"=>10004}, "name"=>"Multi Checkboxes", "operations"=>["add", "set", "remove"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10019", "value"=>"Göthe", "id"=>"10019"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10020", "value"=>"Schiller", "id"=>"10020"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10021", "value"=>"Heine", "id"=>"10021"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10022", "value"=>"Kafka", "id"=>"10022"}]}}
416
+ field = Jirarest2Field::MultiHashField.new("customfield_10004","Multi Checkboxes",{:required => false, :createmeta => fstruct["customfield_10004"]})
417
+ allowed_v = ["Göthe", "Schiller", "Heine", "Kafka"]
418
+ assert_equal "customfield_10004", field.id
419
+ assert_equal "Multi Checkboxes", field.name
420
+ assert_equal false, field.readonly
421
+ assert_equal "value", field.key
422
+ assert_equal allowed_v, field.allowed_values
423
+ end
424
+ def test_parse_value_customfield_10004
425
+ assert_raises(Jirarest2::HashKeyMissingException){Jirarest2Field::MultiHashField.new("customfield_10004","Multi Checkboxes",{:required => false})}
426
+ field = Jirarest2Field::MultiHashField.new("customfield_10004","Multi Checkboxes",{:required => false, :key => "value"})
427
+ field.parse_value([{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10021", "value"=>"Heine", "id"=>"10021"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10019", "value"=>"Göthe", "id"=>"10019"}])
428
+ assert_equal ["Heine","Göthe"],field.value
429
+ toj = {"customfield_10004" => [{"value" => "Heine"},{"value" => "Göthe"}]}
430
+ assert_equal toj, field.to_j
431
+ end
432
+
433
+ def test_customfield_10312 # float -> NumberField
434
+ fstruct = {"customfield_10312" => {"required"=>false, "schema"=>{"type"=>"number", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:float", "customId"=>10312}, "name"=>"Numbers range", "operations"=>["set"]}}
435
+ field = Jirarest2Field::NumberField.new("customfield_10312","Numbers range",{:required => false, :createmeta => fstruct["customfield_10312"]})
436
+ allowed_v = []
437
+ assert_equal "customfield_10312", field.id
438
+ assert_equal "Numbers range", field.name
439
+ assert_equal false, field.readonly
440
+ assert_raises(NoMethodError) { field.key }
441
+ assert_equal allowed_v, field.allowed_values
442
+ end
443
+ def test_parse_value_customfield_10312
444
+ field = Jirarest2Field::NumberField.new("customfield_10312","Numbers range",{:required => false})
445
+ field.parse_value(23.0)
446
+ assert_equal 23.0,field.value
447
+ toj = {"customfield_10312"=>23.0}
448
+ assert_equal toj, field.to_j
449
+ end
450
+
451
+ def test_customfield_10000 # cascadingselect -> CascadingField
452
+ fstruct = {"customfield_10000" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect", "customId"=>10000}, "name"=>"Cascading Select Test", "operations"=>["set"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10000", "value"=>"English", "id"=>"10000", "children"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10003", "value"=>"One", "id"=>"10003"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10004", "value"=>"Two", "id"=>"10004"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10005", "value"=>"Three", "id"=>"10005"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10006", "value"=>"Four", "id"=>"10006"}]}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10001", "value"=>"German", "id"=>"10001", "children"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10007", "value"=>"Eins", "id"=>"10007"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10008", "value"=>"zwei", "id"=>"10008"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10009", "value"=>"drEi", "id"=>"10009"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10010", "value"=>"vier", "id"=>"10010"}]}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10002", "value"=>"ISO", "id"=>"10002", "children"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10011", "value"=>"Unaone", "id"=>"10011"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10012", "value"=>"Bissotwo", "id"=>"10012"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10013", "value"=>"Terrathree", "id"=>"10013"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10014", "value"=>"Kartefour", "id"=>"10014"}]}]}}
453
+ field = Jirarest2Field::CascadingField.new("customfield_10000","Cascading Select Test",{:required => false, :createmeta => fstruct["customfield_10000"]})
454
+ allowed_v = [{"English"=>["One", "Two", "Three", "Four"]}, {"German"=>["Eins", "zwei", "drEi", "vier"]}, {"ISO"=>["Unaone", "Bissotwo", "Terrathree", "Kartefour"]}]
455
+ assert_equal "customfield_10000", field.id
456
+ assert_equal "Cascading Select Test", field.name
457
+ assert_equal false, field.readonly
458
+ assert_equal "value", field.key
459
+ assert_equal allowed_v, field.allowed_values
460
+ end
461
+ def test_parse_value_customfield_10000
462
+ field = Jirarest2Field::CascadingField.new("customfield_10000","Cascading Select Test",{:required => false})
463
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10000", "value"=>"English", "id"=>"10000", "child"=>{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10003", "value"=>"One", "id"=>"10003"}})
464
+ assert_equal ["English","One"],field.value
465
+ toj = {"customfield_10000"=>{"value"=>"English", "child"=>{"value"=>"One"}}}
466
+ assert_equal toj, field.to_j
467
+ end
468
+
469
+ def test_customfield_10102 # textfield -> TextField
470
+ fstruct = {"customfield_10102" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:textfield", "customId"=>10102}, "name"=>"projects", "operations"=>["set"]}}
471
+ field = Jirarest2Field::TextField.new("customfield_10102","projects",{:required => false, :createmeta => fstruct["customfield_10102"]})
472
+ allowed_v = []
473
+ assert_equal "customfield_10102", field.id
474
+ assert_equal "projects", field.name
475
+ assert_equal false, field.readonly
476
+ assert_raises(NoMethodError) { field.key }
477
+ assert_equal allowed_v, field.allowed_values
478
+ end
479
+ def test_parse_value_customfield_10102
480
+ field = Jirarest2Field::TextField.new("customfield_10102","projects",{:required => false})
481
+ field.parse_value("Muhahahaha")
482
+ assert_equal "Muhahahaha",field.value
483
+ toj = {"customfield_10102"=>"Muhahahaha"}
484
+ assert_equal toj, field.to_j
485
+ end
486
+
487
+ def test_customfield_10101 # textfield -> TextField
488
+ fstruct = {"customfield_10101" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:textfield", "customId"=>10101}, "name"=>"Issue Type", "operations"=>["set"]}}
489
+ field = Jirarest2Field::TextField.new("customfield_10101","Issue Type",{:required => false, :createmeta => fstruct["customfield_10101"]})
490
+ allowed_v = []
491
+ assert_equal "customfield_10101", field.id
492
+ assert_equal "Issue Type", field.name
493
+ assert_equal false, field.readonly
494
+ assert_raises(NoMethodError) { field.key }
495
+ assert_equal allowed_v, field.allowed_values
496
+ end
497
+ def test_parse_value_customfield_10101
498
+ field = Jirarest2Field::TextField.new("customfield_10101","Issue Type",{:required => false})
499
+ field.parse_value("Works")
500
+ assert_equal "Works",field.value
501
+ toj = {"customfield_10101"=>"Works"}
502
+ assert_equal toj, field.to_j
503
+ end
504
+
505
+ def test_customfield_10100 # textfield -> TextField
506
+ fstruct = {"customfield_10100" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:textfield", "customId"=>10100}, "name"=>"issuetype", "operations"=>["set"]}}
507
+ field = Jirarest2Field::TextField.new("customfield_10100","issuetype",{:required => false, :createmeta => fstruct["customfield_10100"]})
508
+ allowed_v = []
509
+ assert_equal "customfield_10100", field.id
510
+ assert_equal "issuetype", field.name
511
+ assert_equal false, field.readonly
512
+ assert_raises(NoMethodError) { field.key }
513
+ assert_equal allowed_v, field.allowed_values
514
+ end
515
+ def test_parse_value_customfield_10100
516
+ field = Jirarest2Field::TextField.new("customfield_10100","issuetype",{:required => false})
517
+ field.parse_value("Works again")
518
+ assert_equal "Works again",field.value
519
+ toj = {"customfield_10100"=>"Works again"}
520
+ assert_equal toj, field.to_j
521
+ end
522
+
523
+ def test_customfield_10006 # select -> HashField
524
+ fstruct = {"customfield_10006" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:select", "customId"=>10006}, "name"=>"List select", "operations"=>["set"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10015", "value"=>"Räuber", "id"=>"10015"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10016", "value"=>"Kabale und Liebe", "id"=>"10016"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10017", "value"=>"Faust", "id"=>"10017"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10018", "value"=>"Landleben", "id"=>"10018"}]}}
525
+ field = Jirarest2Field::HashField.new("customfield_10006","List select",{:required => false, :createmeta => fstruct["customfield_10006"]})
526
+ allowed_v = ["Räuber", "Kabale und Liebe", "Faust", "Landleben"]
527
+ assert_equal "customfield_10006", field.id
528
+ assert_equal "List select", field.name
529
+ assert_equal false, field.readonly
530
+ assert_equal "value", field.key
531
+ assert_equal allowed_v, field.allowed_values
532
+ end
533
+ def test_parse_value_customfield_10006
534
+ field = Jirarest2Field::HashField.new("customfield_10006","List select",{:required => false, :key => "value"})
535
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10017", "value"=>"Faust", "id"=>"10017"})
536
+ assert_equal "Faust",field.value
537
+ toj = {"customfield_10006" => {"value" => "Faust"}}
538
+ assert_equal toj, field.to_j
539
+ end
540
+
541
+ def test_customfield_10005 # multiselect -> MultiHashField
542
+ fstruct = {"customfield_10005" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "customId"=>10005}, "name"=>"Multi Select", "operations"=>["add", "set", "remove"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10023", "value"=>"Glocke", "id"=>"10023"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10024", "value"=>"Kabale und Liebe", "id"=>"10024"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10025", "value"=>"Schiller", "id"=>"10025"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10026", "value"=>"Göthe", "id"=>"10026"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10027", "value"=>"Faust", "id"=>"10027"}]}}
543
+ field = Jirarest2Field::MultiHashField.new("customfield_10005","Multi Select",{:required => false, :createmeta => fstruct["customfield_10005"]})
544
+ allowed_v = ["Glocke", "Kabale und Liebe", "Schiller", "Göthe", "Faust"]
545
+ assert_equal "customfield_10005", field.id
546
+ assert_equal "Multi Select", field.name
547
+ assert_equal false, field.readonly
548
+ assert_equal "value", field.key
549
+ assert_equal allowed_v, field.allowed_values
550
+ end
551
+ def test_parse_value_customfield_10005
552
+ field = Jirarest2Field::MultiHashField.new("customfield_10005","Multi Select",{:required => false, :key => "value"})
553
+ field.parse_value([{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10025", "value"=>"Schiller", "id"=>"10025"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10026", "value"=>"Göthe", "id"=>"10026"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10024", "value"=>"Kabale und Liebe", "id"=>"10024"}])
554
+ assert_equal ["Schiller","Göthe","Kabale und Liebe"],field.value
555
+ toj = {"customfield_10005" => [{"value" => "Schiller"},{"value" => "Göthe"},{"value" => "Kabale und Liebe"}]}
556
+ assert_equal toj, field.to_j
557
+ end
558
+
559
+ def test_labels # labels -> MultiStringField
560
+ fstruct = {"labels" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"string", "system"=>"labels"}, "name"=>"Labels", "autoCompleteUrl"=>"http://localhost:2990/jira/rest/api/1.0/labels/suggest?query=", "operations"=>["add", "set", "remove"]}}
561
+ field = Jirarest2Field::MultiStringField.new("labels","Labels",{:required => false, :createmeta => fstruct["labels"]})
562
+ allowed_v = []
563
+ assert_equal "labels", field.id
564
+ assert_equal "Labels", field.name
565
+ assert_equal false, field.readonly
566
+ assert_raises(NoMethodError) { field.key }
567
+ assert_equal allowed_v, field.allowed_values
568
+ end
569
+ def test_parse_value_labels
570
+ field = Jirarest2Field::MultiStringField.new("labels","Labels",{:required => false})
571
+ field.parse_value(["We", "do", "don't", "labels", "love", "we?"])
572
+ assert_equal ["We", "do", "don't", "labels", "love", "we?"],field.value
573
+ toj = {"labels"=>["We", "do", "don't", "labels", "love", "we?"]}
574
+ assert_equal toj, field.to_j
575
+ end
576
+
577
+ def test_customfield_10315 # userPicker -> UserField
578
+ fstruct = {"customfield_10315" => {"required"=>false, "schema"=>{"type"=>"user", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "customId"=>10315}, "name"=>"User Picker User", "autoCompleteUrl"=>"http://localhost:2990/jira/rest/api/1.0/users/picker?fieldName=customfield_10315&query=", "operations"=>["set"]}}
579
+ field = Jirarest2Field::UserField.new("customfield_10315","User Picker User",{:required => false, :createmeta => fstruct["customfield_10315"]})
580
+ allowed_v = []
581
+ assert_equal "customfield_10315", field.id
582
+ assert_equal "User Picker User", field.name
583
+ assert_equal false, field.readonly
584
+ assert_equal "name", field.key
585
+ assert_equal allowed_v, field.allowed_values
586
+ end
587
+ def test_parse_value_customfield_10315
588
+ field = Jirarest2Field::UserField.new("customfield_10315","User Picker User",{:required => false, :key => "name"})
589
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/user?username=test", "name"=>"test", "emailAddress"=>"jira-test@madbit.de", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122", "48x48"=>"http://localhost:2990/jira/secure/useravatar?avatarId=10122"}, "displayName"=>"Test User", "active"=>true})
590
+ assert_equal "test",field.value
591
+ toj = {"customfield_10315" => {"name" => "test"}}
592
+ assert_equal toj, field.to_j
593
+ end
594
+
595
+ def test_assignee # assignee -> UserField
596
+ fstruct = {"assignee" => {"required"=>false, "schema"=>{"type"=>"user", "system"=>"assignee"}, "name"=>"Assignee", "autoCompleteUrl"=>"http://localhost:2990/jira/rest/api/latest/user/assignable/search?issueKey=null&username=", "operations"=>["set"]}}
597
+ field = Jirarest2Field::UserField.new("assignee","Assignee",{:required => false, :createmeta => fstruct["assignee"]})
598
+ allowed_v = []
599
+ assert_equal "assignee", field.id
600
+ assert_equal "Assignee", field.name
601
+ assert_equal false, field.readonly
602
+ assert_equal "name", field.key
603
+ assert_equal allowed_v, field.allowed_values
604
+ end
605
+ def test_parse_value_assignee
606
+ field = Jirarest2Field::UserField.new("assignee","Assignee",{:required => false, :key => "name"})
607
+ field.parse_value(nil)
608
+ assert_equal nil,field.value
609
+ toj = nil
610
+ assert_equal toj, field.to_j
611
+ # @todo See if there should not be a check with a value as well
612
+ end
613
+
614
+ def test_customfield_10316 # userpicker -> UserField
615
+ fstruct = {"customfield_10316" => {"required"=>false, "schema"=>{"type"=>"user", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "customId"=>10316}, "name"=>"User Picker U+G", "autoCompleteUrl"=>"http://localhost:2990/jira/rest/api/1.0/users/picker?fieldName=customfield_10316&query=", "operations"=>["set"]}}
616
+ field = Jirarest2Field::UserField.new("customfield_10316","User Picker U+G",{:required => false, :createmeta => fstruct["customfield_10316"]})
617
+ allowed_v = []
618
+ assert_equal "customfield_10316", field.id
619
+ assert_equal "User Picker U+G", field.name
620
+ assert_equal false, field.readonly
621
+ assert_equal "name", field.key
622
+ assert_equal allowed_v, field.allowed_values
623
+ end
624
+ def test_parse_value_customfield_10316
625
+ field = Jirarest2Field::UserField.new("customfield_10316","User Picker U+G",{:required => false, :key => "name"})
626
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/user?username=test", "name"=>"test", "emailAddress"=>"jira-test@madbit.de", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122", "48x48"=>"http://localhost:2990/jira/secure/useravatar?avatarId=10122"}, "displayName"=>"Test User", "active"=>true})
627
+ assert_equal "test",field.value
628
+ toj = {"customfield_10316" => {"name" => "test"}}
629
+ assert_equal toj, field.to_j
630
+ end
631
+
632
+ def test_customfield_10313 # radiobuttons -> HashField
633
+ fstruct = {"customfield_10313" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "customId"=>10313}, "name"=>"Radios", "operations"=>["set"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10100", "value"=>"Books", "id"=>"10100"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10101", "value"=>"EBooks", "id"=>"10101"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10102", "value"=>"Newspaper", "id"=>"10102"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10103", "value"=>"Websites", "id"=>"10103"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10104", "value"=>"Magazines", "id"=>"10104"}]}}
634
+ field = Jirarest2Field::HashField.new("customfield_10313","Radios",{:required => false, :createmeta => fstruct["customfield_10313"]})
635
+ allowed_v = ["Books", "EBooks", "Newspaper", "Websites", "Magazines"]
636
+ assert_equal "customfield_10313", field.id
637
+ assert_equal "Radios", field.name
638
+ assert_equal false, field.readonly
639
+ assert_equal "value", field.key
640
+ assert_equal allowed_v, field.allowed_values
641
+ end
642
+ def test_parse_value_customfield_10313
643
+ field = Jirarest2Field::HashField.new("customfield_10313","Radios",{:required => false, :key => "value"})
644
+ field.parse_value( {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10102", "value"=>"Newspaper", "id"=>"10102"})
645
+ assert_equal "Newspaper",field.value
646
+ toj = {"customfield_10313"=>{"value"=>"Newspaper"}}
647
+ assert_equal toj, field.to_j
648
+ end
649
+
650
+ def test_customfield_10314 # select -> HashField
651
+ fstruct = {"customfield_10314" => {"required"=>false, "schema"=>{"type"=>"string", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:select", "customId"=>10314}, "name"=>"Select List Multi", "operations"=>["set"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10105", "value"=>"Car", "id"=>"10105"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10106", "value"=>"Train", "id"=>"10106"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10107", "value"=>"Subway", "id"=>"10107"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10108", "value"=>"Underground", "id"=>"10108"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10109", "value"=>"Plane", "id"=>"10109"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10110", "value"=>"Ship", "id"=>"10110"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10111", "value"=>"Hovercraft", "id"=>"10111"}, {"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10112", "value"=>"Foot", "id"=>"10112"}]}}
652
+ field = Jirarest2Field::HashField.new("customfield_10314","Select List Multi",{:required => false, :createmeta => fstruct["customfield_10314"]})
653
+ allowed_v = ["Car", "Train", "Subway", "Underground", "Plane", "Ship", "Hovercraft", "Foot"]
654
+ assert_equal "customfield_10314", field.id
655
+ assert_equal "Select List Multi", field.name
656
+ assert_equal false, field.readonly
657
+ assert_equal "value", field.key
658
+ assert_equal allowed_v, field.allowed_values
659
+ end
660
+ def test_parse_value_customfield_10314
661
+ field = Jirarest2Field::HashField.new("customfield_10314","Select List Multi",{:required => false, :key => "value"})
662
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/customFieldOption/10108", "value"=>"Underground", "id"=>"10108"})
663
+ assert_equal "Underground",field.value
664
+ toj = {"customfield_10314"=>{"value"=>"Underground"}}
665
+ assert_equal toj, field.to_j
666
+ end
667
+
668
+ def test_attachment # attachment -> TextField
669
+ fstruct = {"attachment" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"attachment", "system"=>"attachment"}, "name"=>"Attachment", "operations"=>[]}}
670
+ field = Jirarest2Field::MultiStringField.new("attachment","Attachment",{:required => false, :createmeta => fstruct["attachment"]})
671
+ allowed_v = []
672
+ assert_equal "attachment", field.id
673
+ assert_equal "Attachment", field.name
674
+ assert_equal true, field.readonly
675
+ assert_raises(NoMethodError) { field.key }
676
+ assert_equal allowed_v, field.allowed_values
677
+ end
678
+ def test_parse_value_attachment
679
+ field = Jirarest2Field::MultiStringField.new("attachment","Attachment",{:required => false})
680
+ field.parse_value([])
681
+ assert_equal [],field.value
682
+ # @todo test to_j
683
+ end
684
+
685
+ def test_customfield_10200 #multiuserpicker -> MultiUserField
686
+ fstruct = {"customfield_10200" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"user", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "customId"=>10200}, "name"=>"Multi User", "autoCompleteUrl"=>"http://localhost:2990/jira/rest/api/1.0/users/picker?fieldName=customfield_10200&query=", "operations"=>["add", "set", "remove"]}}
687
+ field = Jirarest2Field::MultiUserField.new("customfield_10200","Multi User",{:required => false, :createmeta => fstruct["customfield_10200"]})
688
+ allowed_v = []
689
+ assert_equal "customfield_10200", field.id
690
+ assert_equal "Multi User", field.name
691
+ assert_equal false, field.readonly
692
+ assert_equal "name", field.key
693
+ assert_equal allowed_v, field.allowed_values
694
+ end
695
+ def test_parse_value_customfield_10200
696
+ field = Jirarest2Field::MultiUserField.new("customfield_10200","Multi User",{:required => false, :key => "name"})
697
+ field.parse_value( [{"self"=>"http://localhost:2990/jira/rest/api/2/user?username=admin", "name"=>"admin", "emailAddress"=>"admin@example.com", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122", "48x48"=>"http://localhost:2990/jira/secure/useravatar?avatarId=10122"}, "displayName"=>"admin", "active"=>true}, {"self"=>"http://localhost:2990/jira/rest/api/2/user?username=test", "name"=>"test", "emailAddress"=>"jira-test@madbit.de", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122", "48x48"=>"http://localhost:2990/jira/secure/useravatar?avatarId=10122"}, "displayName"=>"Test User", "active"=>true}])
698
+ assert_equal ["admin","test"],field.value
699
+ toj = {"customfield_10200" => [{"name" => "admin"},{"name" => "test"}]}
700
+ assert_equal toj, field.to_j
701
+ end
702
+
703
+ def test_project # project -> ProjectField
704
+ fstruct = {"project" => {"required"=>true, "schema"=>{"type"=>"project", "system"=>"project"}, "autoCompleteUrl"=>"Project", "operations"=>["set"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/project/MFTP", "id"=>"10000", "key"=>"MFTP", "name"=>"My first Test Project", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/projectavatar?size=small&pid=10000&avatarId=10011", "48x48"=>"http://localhost:2990/jira/secure/projectavatar?pid=10000&avatarId=10011"}}]}}
705
+ field = Jirarest2Field::ProjectField.new("project","",{:required => false, :createmeta => fstruct["project"]})
706
+ allowed_v = ["MFTP"] # TODO
707
+ assert_equal "project", field.id
708
+ assert_equal "", field.name
709
+ assert_equal false, field.readonly
710
+ assert_equal "key", field.key
711
+ assert_equal "MFTP", field.value
712
+ assert_equal allowed_v, field.allowed_values
713
+ end
714
+ def test_parse_value_project
715
+ field = Jirarest2Field::ProjectField.new("project","",{:required => false, :key => "key"})
716
+ field.parse_value({"self"=>"http://localhost:2990/jira/rest/api/2/project/MFTP", "id"=>"10000", "key"=>"MFTP", "name"=>"My first Test Project", "avatarUrls"=>{"16x16"=>"http://localhost:2990/jira/secure/projectavatar?size=small&pid=10000&avatarId=10011", "48x48"=>"http://localhost:2990/jira/secure/projectavatar?pid=10000&avatarId=10011"}})
717
+ assert_equal "MFTP",field.value
718
+ toj = {"project"=>{"key"=>"MFTP"}}
719
+ assert_equal toj, field.to_j
720
+ end
721
+
722
+ def test_versions # version -> MultiVersionField
723
+ fstruct = {"versions" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"version", "system"=>"versions"}, "name"=>"Affects Version/s", "operations"=>["set", "add", "remove"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/version/10000", "id"=>"10000", "description"=>"Version 0.1 dooh", "name"=>"0.1", "archived"=>false, "released"=>false, "releaseDate"=>"2012-07-01", "overdue"=>true, "userReleaseDate"=>"01/Jul/12"}, {"self"=>"http://localhost:2990/jira/rest/api/2/version/10001", "id"=>"10001", "description"=>"And now v0.2", "name"=>"0.2", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-01", "overdue"=>true, "userReleaseDate"=>"01/Aug/12"}, {"self"=>"http://localhost:2990/jira/rest/api/2/version/10002", "id"=>"10002", "description"=>"Version 0.3", "name"=>"0.3", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-31", "overdue"=>false, "userReleaseDate"=>"31/Aug/12"}]}}
724
+ field = Jirarest2Field::MultiVersionField.new("versions","Affects Version/s",{:required => false, :createmeta => fstruct["versions"]})
725
+ allowed_v = ["0.1","0.2","0.3"]
726
+ assert_equal "versions", field.id
727
+ assert_equal "Affects Version/s", field.name
728
+ assert_equal false, field.readonly
729
+ assert_equal "name", field.key
730
+ assert_equal allowed_v, field.allowed_values
731
+ end
732
+ def test_parse_value_versions
733
+ assert_raises(Jirarest2::HashKeyMissingException){Jirarest2Field::MultiVersionField.new("versions","Affects Version/s",{:required => false})}
734
+ field = Jirarest2Field::MultiVersionField.new("versions","Affects Version/s",{:required => false, :key => "name"})
735
+ field.parse_value([{"self"=>"http://localhost:2990/jira/rest/api/2/version/10001", "id"=>"10001", "description"=>"And now v0.2", "name"=>"0.2", "archived"=>false, "released"=>false, "releaseDate"=>"2012-08-01"}])
736
+ assert_equal ["0.2"],field.value
737
+ toj = { "versions" => [{"name" => "0.2"}]}
738
+ assert_equal toj, field.to_j
739
+ end
740
+
741
+ def test_environment #environment -> TextField
742
+ fstruct = {"environment" => {"required"=>false, "schema"=>{"type"=>"string", "system"=>"environment"}, "name"=>"Environment", "operations"=>["set"]}}
743
+ field = Jirarest2Field::TextField.new("environment","Environment",{:required => false, :createmeta => fstruct["environment"]})
744
+ allowed_v = []
745
+ assert_equal "environment", field.id
746
+ assert_equal "Environment", field.name
747
+ assert_equal false, field.readonly
748
+ assert_raises(NoMethodError) { field.key }
749
+ assert_equal allowed_v, field.allowed_values
750
+ end
751
+ def test_parse_value_environment
752
+ field = Jirarest2Field::TextField.new("environment","Environment",{:required => false})
753
+ field.parse_value("Environment? Doomed!")
754
+ assert_equal "Environment? Doomed!",field.value
755
+ toj = {"environment"=>"Environment? Doomed!"}
756
+ assert_equal toj, field.to_j
757
+ end
758
+
759
+ def test_customfield_10300 # grouppicker -> UserField
760
+ fstruct = {"customfield_10300" => {"required"=>false, "schema"=>{"type"=>"group", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:grouppicker", "customId"=>10300}, "name"=>"Pick Group", "operations"=>["set"]}}
761
+ field = Jirarest2Field::UserField.new("customfield_10300","Pick Group",{:required => false, :createmeta => fstruct["customfield_10300"]})
762
+ allowed_v = []
763
+ assert_equal "customfield_10300", field.id
764
+ assert_equal "Pick Group", field.name
765
+ assert_equal false, field.readonly
766
+ assert_equal "name", field.key
767
+ assert_equal allowed_v, field.allowed_values
768
+ end
769
+ def test_parse_value_customfield_10300
770
+ field = Jirarest2Field::UserField.new("customfield_10300","Pick Group",{:required => false, :key => "name"})
771
+ field.parse_value({"name"=>"jira-developers"})
772
+ assert_equal "jira-developers",field.value
773
+ toj = {"customfield_10300"=>{"name"=>"jira-developers"}}
774
+ assert_equal toj, field.to_j
775
+ end
776
+
777
+ def test_customfield_10301 # importid -> NumberField
778
+ fstruct = {"customfield_10301" => {"required"=>false, "schema"=>{"type"=>"number", "custom"=>"com.atlassian.jira.plugin.system.customfieldtypes:importid", "customId"=>10301}, "name"=>"Import ID Field no search", "operations"=>["set"]}}
779
+ field = Jirarest2Field::NumberField.new("customfield_10301","Import ID Field no search",{:required => false, :createmeta => fstruct["customfield_10301"]})
780
+ allowed_v = []
781
+ assert_equal "customfield_10301", field.id
782
+ assert_equal "Import ID Field no search", field.name
783
+ assert_equal false, field.readonly
784
+ assert_raises(NoMethodError) { field.key }
785
+ assert_equal allowed_v, field.allowed_values
786
+ end
787
+ def test_parse_value_customfield_10301
788
+ field = Jirarest2Field::NumberField.new("customfield_10301","Import ID Field no search",{:required => false})
789
+ field.parse_value(nil)
790
+ assert_equal nil,field.value
791
+ toj = nil
792
+ assert_equal toj, field.to_j
793
+ end
794
+
795
+ def test_components # components -> MultiHashField
796
+ fstruct = {"components" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"component", "system"=>"components"}, "name"=>"Component/s", "operations"=>["add", "set", "remove"], "allowedValues"=>[{"self"=>"http://localhost:2990/jira/rest/api/2/component/10000", "id"=>"10000", "name"=>"Signal1", "description"=>"A component "}, {"self"=>"http://localhost:2990/jira/rest/api/2/component/10001", "id"=>"10001", "name"=>"Sissi", "description"=>"Another Component"}]}}
797
+ field = Jirarest2Field::MultiHashField.new("components","Component/s",{:required => false, :createmeta => fstruct["components"]})
798
+ allowed_v = ["Signal1","Sissi"]
799
+ assert_equal "components", field.id
800
+ assert_equal "Component/s", field.name
801
+ assert_equal false, field.readonly
802
+ assert_equal "name", field.key
803
+ assert_equal allowed_v, field.allowed_values
804
+ end
805
+ def test_parse_value_components
806
+ field = Jirarest2Field::MultiHashField.new("components","Component/s",{:required => false, :key => "name"})
807
+ field.parse_value( [{"self"=>"http://localhost:2990/jira/rest/api/2/component/10001", "id"=>"10001", "name"=>"Sissi", "description"=>"Another Component"}])
808
+ assert_equal ["Sissi"],field.value
809
+ toj = {"components" => [{"name" => "Sissi"}]}
810
+ assert_equal toj, field.to_j
811
+ end
812
+
813
+ def test_allowedValues_empty
814
+ fstruct = {"allowed_empty" => {"required"=>false, "schema"=>{"type"=>"array", "items"=>"version", "system"=>"versions"}, "name"=>"Affects Version/s", "operations"=>["set", "add", "remove"], "allowedValues"=>[]}}
815
+ field = Jirarest2Field::MultiVersionField.new("allowed_empty","AllowedValues empty",{:required => false, :createmeta => fstruct["allowed_empty"]})
816
+ allowed_v = []
817
+ assert_equal allowed_v, field.allowed_values
818
+ end
819
+
820
+ end