jira-ruby 1.2.0 → 2.3.0
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.
- checksums.yaml +5 -5
 - data/.gitignore +3 -0
 - data/.travis.yml +5 -3
 - data/Gemfile +7 -1
 - data/Guardfile +1 -1
 - data/README.md +452 -0
 - data/Rakefile +6 -7
 - data/example.rb +23 -1
 - data/http-basic-example.rb +13 -12
 - data/jira-ruby.gemspec +13 -13
 - data/lib/jira/base.rb +53 -52
 - data/lib/jira/base_factory.rb +3 -6
 - data/lib/jira/client.rb +127 -30
 - data/lib/jira/has_many_proxy.rb +0 -1
 - data/lib/jira/http_client.rb +54 -16
 - data/lib/jira/http_error.rb +3 -5
 - data/lib/jira/jwt_client.rb +67 -0
 - data/lib/jira/oauth_client.rb +47 -17
 - data/lib/jira/request_client.rb +16 -5
 - data/lib/jira/resource/agile.rb +34 -9
 - data/lib/jira/resource/applinks.rb +5 -8
 - data/lib/jira/resource/attachment.rb +41 -3
 - data/lib/jira/resource/board.rb +91 -0
 - data/lib/jira/resource/board_configuration.rb +9 -0
 - data/lib/jira/resource/comment.rb +0 -2
 - data/lib/jira/resource/component.rb +1 -3
 - data/lib/jira/resource/createmeta.rb +12 -14
 - data/lib/jira/resource/field.rb +22 -22
 - data/lib/jira/resource/filter.rb +2 -2
 - data/lib/jira/resource/issue.rb +69 -38
 - data/lib/jira/resource/issue_picker_suggestions.rb +24 -0
 - data/lib/jira/resource/issue_picker_suggestions_issue.rb +10 -0
 - data/lib/jira/resource/issuelink.rb +3 -5
 - data/lib/jira/resource/issuelinktype.rb +0 -1
 - data/lib/jira/resource/issuetype.rb +1 -3
 - data/lib/jira/resource/priority.rb +1 -3
 - data/lib/jira/resource/project.rb +5 -7
 - data/lib/jira/resource/rapidview.rb +28 -7
 - data/lib/jira/resource/remotelink.rb +1 -4
 - data/lib/jira/resource/resolution.rb +2 -4
 - data/lib/jira/resource/serverinfo.rb +1 -2
 - data/lib/jira/resource/sprint.rb +86 -17
 - data/lib/jira/resource/sprint_report.rb +8 -0
 - data/lib/jira/resource/status.rb +1 -3
 - data/lib/jira/resource/suggested_issue.rb +9 -0
 - data/lib/jira/resource/transition.rb +2 -6
 - data/lib/jira/resource/user.rb +12 -2
 - data/lib/jira/resource/version.rb +1 -3
 - data/lib/jira/resource/watcher.rb +35 -0
 - data/lib/jira/resource/webhook.rb +3 -6
 - data/lib/jira/resource/worklog.rb +3 -5
 - data/lib/jira/version.rb +1 -1
 - data/lib/jira-ruby.rb +12 -2
 - data/lib/tasks/generate.rake +4 -4
 - data/spec/integration/attachment_spec.rb +17 -8
 - data/spec/integration/comment_spec.rb +31 -34
 - data/spec/integration/component_spec.rb +21 -24
 - data/spec/integration/field_spec.rb +15 -18
 - data/spec/integration/issue_spec.rb +45 -46
 - data/spec/integration/issuelinktype_spec.rb +8 -11
 - data/spec/integration/issuetype_spec.rb +5 -7
 - data/spec/integration/priority_spec.rb +5 -8
 - data/spec/integration/project_spec.rb +13 -20
 - data/spec/integration/rapidview_spec.rb +17 -10
 - data/spec/integration/resolution_spec.rb +7 -10
 - data/spec/integration/status_spec.rb +5 -8
 - data/spec/integration/transition_spec.rb +17 -20
 - data/spec/integration/user_spec.rb +24 -8
 - data/spec/integration/version_spec.rb +21 -25
 - data/spec/integration/watcher_spec.rb +62 -0
 - data/spec/integration/webhook.rb +8 -17
 - data/spec/integration/worklog_spec.rb +30 -34
 - data/spec/jira/base_factory_spec.rb +11 -12
 - data/spec/jira/base_spec.rb +216 -229
 - data/spec/jira/client_spec.rb +227 -159
 - data/spec/jira/has_many_proxy_spec.rb +11 -12
 - data/spec/jira/http_client_spec.rb +254 -31
 - data/spec/jira/http_error_spec.rb +7 -9
 - data/spec/jira/jwt_uri_builder_spec.rb +59 -0
 - data/spec/jira/oauth_client_spec.rb +110 -39
 - data/spec/jira/request_client_spec.rb +36 -9
 - data/spec/jira/resource/agile_spec.rb +135 -0
 - data/spec/jira/resource/attachment_spec.rb +127 -9
 - data/spec/jira/resource/board_spec.rb +224 -0
 - data/spec/jira/resource/createmeta_spec.rb +29 -32
 - data/spec/jira/resource/field_spec.rb +42 -48
 - data/spec/jira/resource/filter_spec.rb +40 -40
 - data/spec/jira/resource/issue_picker_suggestions_spec.rb +79 -0
 - data/spec/jira/resource/issue_spec.rb +88 -85
 - data/spec/jira/resource/issuelink_spec.rb +1 -1
 - data/spec/jira/resource/jira_picker_suggestions_issue_spec.rb +18 -0
 - data/spec/jira/resource/project_factory_spec.rb +2 -4
 - data/spec/jira/resource/project_spec.rb +33 -33
 - data/spec/jira/resource/sprint_spec.rb +90 -0
 - data/spec/jira/resource/user_factory_spec.rb +6 -8
 - data/spec/jira/resource/worklog_spec.rb +9 -11
 - data/spec/mock_responses/board/1.json +33 -0
 - data/spec/mock_responses/board/1_issues.json +62 -0
 - data/spec/mock_responses/empty_issues.json +8 -0
 - data/spec/mock_responses/issue/10002/watchers.json +13 -0
 - data/spec/mock_responses/issue.json +1 -1
 - data/spec/mock_responses/sprint/1_issues.json +125 -0
 - data/spec/spec_helper.rb +8 -9
 - data/spec/support/clients_helper.rb +4 -4
 - data/spec/support/shared_examples/integration.rb +60 -77
 - metadata +115 -55
 - data/.ruby-version +0 -1
 - data/README.rdoc +0 -333
 - /data/spec/mock_responses/{attachment → issue/10002/attachments}/10000.json +0 -0
 
| 
         @@ -1,21 +1,21 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe JIRA::Resource::Createmeta do
         
     | 
| 
       4 
     | 
    
         
            -
              let(:client)  
     | 
| 
      
 4 
     | 
    
         
            +
              let(:client) do
         
     | 
| 
       5 
5 
     | 
    
         
             
                double(
         
     | 
| 
       6 
6 
     | 
    
         
             
                  'client',
         
     | 
| 
       7 
     | 
    
         
            -
                  : 
     | 
| 
       8 
     | 
    
         
            -
                    : 
     | 
| 
      
 7 
     | 
    
         
            +
                  options: {
         
     | 
| 
      
 8 
     | 
    
         
            +
                    rest_base_path: '/jira/rest/api/2'
         
     | 
| 
       9 
9 
     | 
    
         
             
                  }
         
     | 
| 
       10 
10 
     | 
    
         
             
                )
         
     | 
| 
       11 
     | 
    
         
            -
               
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
              let(:response)  
     | 
| 
      
 13 
     | 
    
         
            +
              let(:response) do
         
     | 
| 
       14 
14 
     | 
    
         
             
                double(
         
     | 
| 
       15 
15 
     | 
    
         
             
                  'response',
         
     | 
| 
       16 
     | 
    
         
            -
                  : 
     | 
| 
      
 16 
     | 
    
         
            +
                  body: '{"expand":"projects","projects":[{"self":"http://localhost:2029/rest/api/2/project/TST","id":"10200","key":"test_key","name":"Test Name"}]}'
         
     | 
| 
       17 
17 
     | 
    
         
             
                )
         
     | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
              describe 'general' do
         
     | 
| 
       21 
21 
     | 
    
         
             
                it 'should query correct url without parameters' do
         
     | 
| 
         @@ -25,12 +25,12 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                it 'should query correct url with `expand` parameter' do
         
     | 
| 
       27 
27 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?expand=projects.issuetypes.fields').and_return(response)
         
     | 
| 
       28 
     | 
    
         
            -
                  JIRA::Resource::Createmeta.all(client, : 
     | 
| 
      
 28 
     | 
    
         
            +
                  JIRA::Resource::Createmeta.all(client, expand: 'projects.issuetypes.fields')
         
     | 
| 
       29 
29 
     | 
    
         
             
                end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
                it 'should query correct url with `foo` parameter' do
         
     | 
| 
       32 
32 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?foo=bar').and_return(response)
         
     | 
| 
       33 
     | 
    
         
            -
                  JIRA::Resource::Createmeta.all(client, : 
     | 
| 
      
 33 
     | 
    
         
            +
                  JIRA::Resource::Createmeta.all(client, foo: 'bar')
         
     | 
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                it 'should return an array of createmeta objects' do
         
     | 
| 
         @@ -49,7 +49,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       49 
49 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectKeys=PROJECT_1').and_return(response)
         
     | 
| 
       50 
50 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       51 
51 
     | 
    
         
             
                    client,
         
     | 
| 
       52 
     | 
    
         
            -
                    : 
     | 
| 
      
 52 
     | 
    
         
            +
                    projectKeys: 'PROJECT_1'
         
     | 
| 
       53 
53 
     | 
    
         
             
                  )
         
     | 
| 
       54 
54 
     | 
    
         
             
                end
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
         @@ -57,7 +57,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       57 
57 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectKeys=PROJECT_1%2CPROJECT_2').and_return(response)
         
     | 
| 
       58 
58 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       59 
59 
     | 
    
         
             
                    client,
         
     | 
| 
       60 
     | 
    
         
            -
                    : 
     | 
| 
      
 60 
     | 
    
         
            +
                    projectKeys: %w[PROJECT_1 PROJECT_2]
         
     | 
| 
       61 
61 
     | 
    
         
             
                  )
         
     | 
| 
       62 
62 
     | 
    
         
             
                end
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
         @@ -68,7 +68,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       68 
68 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectKeys=PRJ').and_return(response)
         
     | 
| 
       69 
69 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       70 
70 
     | 
    
         
             
                    client,
         
     | 
| 
       71 
     | 
    
         
            -
                    : 
     | 
| 
      
 71 
     | 
    
         
            +
                    projectKeys: prj
         
     | 
| 
       72 
72 
     | 
    
         
             
                  )
         
     | 
| 
       73 
73 
     | 
    
         
             
                end
         
     | 
| 
       74 
74 
     | 
    
         | 
| 
         @@ -81,7 +81,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       81 
81 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectKeys=PRJ_2%2CPRJ_1').and_return(response)
         
     | 
| 
       82 
82 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       83 
83 
     | 
    
         
             
                    client,
         
     | 
| 
       84 
     | 
    
         
            -
                    : 
     | 
| 
      
 84 
     | 
    
         
            +
                    projectKeys: [prj_2, prj_1]
         
     | 
| 
       85 
85 
     | 
    
         
             
                  )
         
     | 
| 
       86 
86 
     | 
    
         
             
                end
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
         @@ -92,18 +92,17 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       92 
92 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectKeys=PROJECT_1%2CPRJ_5').and_return(response)
         
     | 
| 
       93 
93 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       94 
94 
     | 
    
         
             
                    client,
         
     | 
| 
       95 
     | 
    
         
            -
                    : 
     | 
| 
      
 95 
     | 
    
         
            +
                    projectKeys: ['PROJECT_1', prj_5]
         
     | 
| 
       96 
96 
     | 
    
         
             
                  )
         
     | 
| 
       97 
97 
     | 
    
         
             
                end
         
     | 
| 
       98 
98 
     | 
    
         
             
              end
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
100 
     | 
    
         
             
              describe 'projectIds' do
         
     | 
| 
       102 
101 
     | 
    
         
             
                it 'should query correct url when only one `projectIds` given as string' do
         
     | 
| 
       103 
102 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectIds=10101').and_return(response)
         
     | 
| 
       104 
103 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       105 
104 
     | 
    
         
             
                    client,
         
     | 
| 
       106 
     | 
    
         
            -
                    : 
     | 
| 
      
 105 
     | 
    
         
            +
                    projectIds: '10101'
         
     | 
| 
       107 
106 
     | 
    
         
             
                  )
         
     | 
| 
       108 
107 
     | 
    
         
             
                end
         
     | 
| 
       109 
108 
     | 
    
         | 
| 
         @@ -111,7 +110,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       111 
110 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectIds=10101%2C20202').and_return(response)
         
     | 
| 
       112 
111 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       113 
112 
     | 
    
         
             
                    client,
         
     | 
| 
       114 
     | 
    
         
            -
                    : 
     | 
| 
      
 113 
     | 
    
         
            +
                    projectIds: %w[10101 20202]
         
     | 
| 
       115 
114 
     | 
    
         
             
                  )
         
     | 
| 
       116 
115 
     | 
    
         
             
                end
         
     | 
| 
       117 
116 
     | 
    
         | 
| 
         @@ -122,7 +121,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       122 
121 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectIds=30303').and_return(response)
         
     | 
| 
       123 
122 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       124 
123 
     | 
    
         
             
                    client,
         
     | 
| 
       125 
     | 
    
         
            -
                    : 
     | 
| 
      
 124 
     | 
    
         
            +
                    projectIds: prj
         
     | 
| 
       126 
125 
     | 
    
         
             
                  )
         
     | 
| 
       127 
126 
     | 
    
         
             
                end
         
     | 
| 
       128 
127 
     | 
    
         | 
| 
         @@ -135,7 +134,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       135 
134 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectIds=50505%2C30303').and_return(response)
         
     | 
| 
       136 
135 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       137 
136 
     | 
    
         
             
                    client,
         
     | 
| 
       138 
     | 
    
         
            -
                    : 
     | 
| 
      
 137 
     | 
    
         
            +
                    projectIds: [prj_2, prj_1]
         
     | 
| 
       139 
138 
     | 
    
         
             
                  )
         
     | 
| 
       140 
139 
     | 
    
         
             
                end
         
     | 
| 
       141 
140 
     | 
    
         | 
| 
         @@ -146,18 +145,17 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       146 
145 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?projectIds=10101%2C60606').and_return(response)
         
     | 
| 
       147 
146 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       148 
147 
     | 
    
         
             
                    client,
         
     | 
| 
       149 
     | 
    
         
            -
                    : 
     | 
| 
      
 148 
     | 
    
         
            +
                    projectIds: ['10101', prj_5]
         
     | 
| 
       150 
149 
     | 
    
         
             
                  )
         
     | 
| 
       151 
150 
     | 
    
         
             
                end
         
     | 
| 
       152 
151 
     | 
    
         
             
              end
         
     | 
| 
       153 
152 
     | 
    
         | 
| 
       154 
     | 
    
         
            -
             
     | 
| 
       155 
153 
     | 
    
         
             
              describe 'issuetypeNames' do
         
     | 
| 
       156 
154 
     | 
    
         
             
                it 'should query correct url when only one `issuetypeNames` given as string' do
         
     | 
| 
       157 
155 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeNames=Feature').and_return(response)
         
     | 
| 
       158 
156 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       159 
157 
     | 
    
         
             
                    client,
         
     | 
| 
       160 
     | 
    
         
            -
                    : 
     | 
| 
      
 158 
     | 
    
         
            +
                    issuetypeNames: 'Feature'
         
     | 
| 
       161 
159 
     | 
    
         
             
                  )
         
     | 
| 
       162 
160 
     | 
    
         
             
                end
         
     | 
| 
       163 
161 
     | 
    
         | 
| 
         @@ -165,7 +163,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       165 
163 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeNames=Feature%2CBug').and_return(response)
         
     | 
| 
       166 
164 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       167 
165 
     | 
    
         
             
                    client,
         
     | 
| 
       168 
     | 
    
         
            -
                    : 
     | 
| 
      
 166 
     | 
    
         
            +
                    issuetypeNames: %w[Feature Bug]
         
     | 
| 
       169 
167 
     | 
    
         
             
                  )
         
     | 
| 
       170 
168 
     | 
    
         
             
                end
         
     | 
| 
       171 
169 
     | 
    
         | 
| 
         @@ -176,7 +174,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       176 
174 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeNames=Epic').and_return(response)
         
     | 
| 
       177 
175 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       178 
176 
     | 
    
         
             
                    client,
         
     | 
| 
       179 
     | 
    
         
            -
                    : 
     | 
| 
      
 177 
     | 
    
         
            +
                    issuetypeNames: issue_type
         
     | 
| 
       180 
178 
     | 
    
         
             
                  )
         
     | 
| 
       181 
179 
     | 
    
         
             
                end
         
     | 
| 
       182 
180 
     | 
    
         | 
| 
         @@ -189,7 +187,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       189 
187 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeNames=Sub-Task%2CEpic').and_return(response)
         
     | 
| 
       190 
188 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       191 
189 
     | 
    
         
             
                    client,
         
     | 
| 
       192 
     | 
    
         
            -
                    : 
     | 
| 
      
 190 
     | 
    
         
            +
                    issuetypeNames: [issue_type_2, issue_type_1]
         
     | 
| 
       193 
191 
     | 
    
         
             
                  )
         
     | 
| 
       194 
192 
     | 
    
         
             
                end
         
     | 
| 
       195 
193 
     | 
    
         | 
| 
         @@ -200,18 +198,17 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       200 
198 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeNames=Feature%2CEpic').and_return(response)
         
     | 
| 
       201 
199 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       202 
200 
     | 
    
         
             
                    client,
         
     | 
| 
       203 
     | 
    
         
            -
                    : 
     | 
| 
      
 201 
     | 
    
         
            +
                    issuetypeNames: ['Feature', issue_type]
         
     | 
| 
       204 
202 
     | 
    
         
             
                  )
         
     | 
| 
       205 
203 
     | 
    
         
             
                end
         
     | 
| 
       206 
204 
     | 
    
         
             
              end
         
     | 
| 
       207 
205 
     | 
    
         | 
| 
       208 
     | 
    
         
            -
             
     | 
| 
       209 
206 
     | 
    
         
             
              describe 'issuetypeIds' do
         
     | 
| 
       210 
207 
     | 
    
         
             
                it 'should query correct url when only one `issuetypeIds` given as string' do
         
     | 
| 
       211 
208 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeIds=10101').and_return(response)
         
     | 
| 
       212 
209 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       213 
210 
     | 
    
         
             
                    client,
         
     | 
| 
       214 
     | 
    
         
            -
                    : 
     | 
| 
      
 211 
     | 
    
         
            +
                    issuetypeIds: '10101'
         
     | 
| 
       215 
212 
     | 
    
         
             
                  )
         
     | 
| 
       216 
213 
     | 
    
         
             
                end
         
     | 
| 
       217 
214 
     | 
    
         | 
| 
         @@ -219,7 +216,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       219 
216 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeIds=10101%2C20202').and_return(response)
         
     | 
| 
       220 
217 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       221 
218 
     | 
    
         
             
                    client,
         
     | 
| 
       222 
     | 
    
         
            -
                    : 
     | 
| 
      
 219 
     | 
    
         
            +
                    issuetypeIds: %w[10101 20202]
         
     | 
| 
       223 
220 
     | 
    
         
             
                  )
         
     | 
| 
       224 
221 
     | 
    
         
             
                end
         
     | 
| 
       225 
222 
     | 
    
         | 
| 
         @@ -230,7 +227,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       230 
227 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeIds=30303').and_return(response)
         
     | 
| 
       231 
228 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       232 
229 
     | 
    
         
             
                    client,
         
     | 
| 
       233 
     | 
    
         
            -
                    : 
     | 
| 
      
 230 
     | 
    
         
            +
                    issuetypeIds: issue_type
         
     | 
| 
       234 
231 
     | 
    
         
             
                  )
         
     | 
| 
       235 
232 
     | 
    
         
             
                end
         
     | 
| 
       236 
233 
     | 
    
         | 
| 
         @@ -243,7 +240,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       243 
240 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeIds=50505%2C30303').and_return(response)
         
     | 
| 
       244 
241 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       245 
242 
     | 
    
         
             
                    client,
         
     | 
| 
       246 
     | 
    
         
            -
                    : 
     | 
| 
      
 243 
     | 
    
         
            +
                    issuetypeIds: [issue_type_2, issue_type_1]
         
     | 
| 
       247 
244 
     | 
    
         
             
                  )
         
     | 
| 
       248 
245 
     | 
    
         
             
                end
         
     | 
| 
       249 
246 
     | 
    
         | 
| 
         @@ -254,7 +251,7 @@ describe JIRA::Resource::Createmeta do 
     | 
|
| 
       254 
251 
     | 
    
         
             
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/createmeta?issuetypeIds=10101%2C30303').and_return(response)
         
     | 
| 
       255 
252 
     | 
    
         
             
                  JIRA::Resource::Createmeta.all(
         
     | 
| 
       256 
253 
     | 
    
         
             
                    client,
         
     | 
| 
       257 
     | 
    
         
            -
                    : 
     | 
| 
      
 254 
     | 
    
         
            +
                    issuetypeIds: ['10101', issue_type]
         
     | 
| 
       258 
255 
     | 
    
         
             
                  )
         
     | 
| 
       259 
256 
     | 
    
         
             
                end
         
     | 
| 
       260 
257 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,91 +1,85 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe JIRA::Resource::Field do
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
4 
     | 
    
         
             
              let(:cache) { OpenStruct.new }
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
              let(:client) do
         
     | 
| 
       8 
     | 
    
         
            -
                client = double(options: {rest_base_path: '/jira/rest/api/2'} 
     | 
| 
      
 7 
     | 
    
         
            +
                client = double(options: { rest_base_path: '/jira/rest/api/2' })
         
     | 
| 
       9 
8 
     | 
    
         
             
                field = JIRA::Resource::FieldFactory.new(client)
         
     | 
| 
       10 
9 
     | 
    
         
             
                allow(client).to receive(:Field).and_return(field)
         
     | 
| 
       11 
10 
     | 
    
         
             
                allow(client).to receive(:cache).and_return(cache)
         
     | 
| 
       12 
11 
     | 
    
         
             
                # info about all fields on the client
         
     | 
| 
       13 
12 
     | 
    
         
             
                allow(client.Field).to receive(:all).and_return([
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                                                                  JIRA::Resource::Field.new(client, attrs: { 'id' => 'customfield_10666', 'name' => 'Priority', 'custom' => true, 'orderable' => true, 'navigable' => true, 'searchable' => true, 'clauseNames' => ['cf[10666]', 'Priority'], 'schema' => { 'type' => 'string', 'custom' => 'com.atlassian.jira.plugin.system.customfieldtypes:select', 'customId' => 10_666 } }),
         
     | 
| 
      
 14 
     | 
    
         
            +
                                                                  JIRA::Resource::Field.new(client, attrs: { 'id' => 'issuekey',          'name' => 'Key',        'custom' => false, 'orderable' => false, 'navigable' => true, 'searchable' => false, 'clauseNames' => %w[id issue issuekey key] }),
         
     | 
| 
      
 15 
     | 
    
         
            +
                                                                  JIRA::Resource::Field.new(client, attrs: { 'id' => 'priority',          'name' => 'Priority',   'custom' => false, 'orderable' => true,  'navigable' => true, 'searchable' => true,  'clauseNames' => ['priority'],                     'schema' => { 'type' => 'priority',  'system' => 'priority' } }),
         
     | 
| 
      
 16 
     | 
    
         
            +
                                                                  JIRA::Resource::Field.new(client, attrs: { 'id' => 'summary',           'name' => 'Summary',    'custom' => false, 'orderable' => true,  'navigable' => true, 'searchable' => true,  'clauseNames' => ['summary'],                      'schema' => { 'type' => 'string',    'system' => 'summary' } }),
         
     | 
| 
      
 17 
     | 
    
         
            +
                                                                  JIRA::Resource::Field.new(client, attrs: { 'id' => 'issuetype',         'name' => 'Issue Type', 'custom' => false, 'orderable' => true,  'navigable' => true, 'searchable' => true,  'clauseNames' => %w[issuetype type], 'schema' => { 'type' => 'issuetype', 'system' => 'issuetype' } }),
         
     | 
| 
      
 18 
     | 
    
         
            +
                                                                  JIRA::Resource::Field.new(client, attrs: { 'id' => 'customfield_10111', 'name' => 'SingleWord', 'custom' => true,  'orderable' => true,  'navigable' => true, 'searchable' => true,  'clauseNames' => ['cf[10111]', 'SingleWord'],       'schema' => { 'type' => 'string',    'custom' => 'com.atlassian.jira.plugin.system.customfieldtypes:select', 'customId' => 10_111 } }),
         
     | 
| 
      
 19 
     | 
    
         
            +
                                                                  JIRA::Resource::Field.new(client, attrs: { 'id' => 'customfield_10222', 'name' => 'Multi Word', 'custom' => true,  'orderable' => true,  'navigable' => true, 'searchable' => true,  'clauseNames' => ['cf[10222]', 'Multi Word'],       'schema' => { 'type' => 'string',    'custom' => 'com.atlassian.jira.plugin.system.customfieldtypes:select', 'customId' => 10_222 } }),
         
     | 
| 
      
 20 
     | 
    
         
            +
                                                                  JIRA::Resource::Field.new(client, attrs: { 'id' => 'customfield_10333', 'name' => 'Why/N@t',    'custom' => true,  'orderable' => true,  'navigable' => true, 'searchable' => true,  'clauseNames' => ['cf[10333]', 'Why/N@t'],          'schema' => { 'type' => 'string',    'custom' => 'com.atlassian.jira.plugin.system.customfieldtypes:select', 'customId' => 10_333 } }),
         
     | 
| 
      
 21 
     | 
    
         
            +
                                                                  JIRA::Resource::Field.new(client, attrs: { 'id' => 'customfield_10444', 'name' => 'SingleWord', 'custom' => true,  'orderable' => true,  'navigable' => true, 'searchable' => true,  'clauseNames' => ['cf[10444]', 'SingleWord'],       'schema' => { 'type' => 'string',    'custom' => 'com.atlassian.jira.plugin.system.customfieldtypes:select', 'customId' => 10_444 } })
         
     | 
| 
      
 22 
     | 
    
         
            +
                                                                ])
         
     | 
| 
       24 
23 
     | 
    
         
             
                client
         
     | 
| 
       25 
24 
     | 
    
         
             
              end
         
     | 
| 
       26 
25 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
              describe  
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                    })
         
     | 
| 
       40 
     | 
    
         
            -
                  }
         
     | 
| 
      
 26 
     | 
    
         
            +
              describe 'field_mappings' do
         
     | 
| 
      
 27 
     | 
    
         
            +
                shared_context 'mapped or not' do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  subject do
         
     | 
| 
      
 29 
     | 
    
         
            +
                    JIRA::Resource::Field.new(client, attrs: {
         
     | 
| 
      
 30 
     | 
    
         
            +
                                                'priority' => 1,
         
     | 
| 
      
 31 
     | 
    
         
            +
                                                'customfield_10111' => 'data_in_custom_field',
         
     | 
| 
      
 32 
     | 
    
         
            +
                                                'customfield_10222' => 'multi word custom name',
         
     | 
| 
      
 33 
     | 
    
         
            +
                                                'customfield_10333' => 'complex custom name',
         
     | 
| 
      
 34 
     | 
    
         
            +
                                                'customfield_10444' => 'duplicated custom name',
         
     | 
| 
      
 35 
     | 
    
         
            +
                                                'customfield_10666' => 'duplicate of a system name'
         
     | 
| 
      
 36 
     | 
    
         
            +
                                              })
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
       41 
38 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
                  it  
     | 
| 
      
 39 
     | 
    
         
            +
                  it 'can find a standard field by id' do
         
     | 
| 
       43 
40 
     | 
    
         
             
                    expect(subject.priority).to eq(1)
         
     | 
| 
       44 
41 
     | 
    
         
             
                  end
         
     | 
| 
       45 
42 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
                  it  
     | 
| 
      
 43 
     | 
    
         
            +
                  it 'can find a custom field by customfield_##### name' do
         
     | 
| 
       47 
44 
     | 
    
         
             
                    expect(subject.customfield_10111).to eq('data_in_custom_field')
         
     | 
| 
       48 
45 
     | 
    
         
             
                  end
         
     | 
| 
       49 
46 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
                  it  
     | 
| 
       51 
     | 
    
         
            -
                    expect{subject.name}.to raise_error(NoMethodError)
         
     | 
| 
       52 
     | 
    
         
            -
                    expect{subject.custom}.to raise_error(NoMethodError)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  it 'is not confused by common attribute keys' do
         
     | 
| 
      
 48 
     | 
    
         
            +
                    expect { subject.name }.to raise_error(NoMethodError)
         
     | 
| 
      
 49 
     | 
    
         
            +
                    expect { subject.custom }.to raise_error(NoMethodError)
         
     | 
| 
       53 
50 
     | 
    
         
             
                    expect(subject.id).to eq(nil)   # picks up ID from the parent -
         
     | 
| 
       54 
51 
     | 
    
         
             
                  end
         
     | 
| 
       55 
52 
     | 
    
         
             
                end
         
     | 
| 
       56 
53 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
                context  
     | 
| 
      
 54 
     | 
    
         
            +
                context 'before fields are mapped' do
         
     | 
| 
      
 55 
     | 
    
         
            +
                  include_context 'mapped or not'
         
     | 
| 
       58 
56 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
                   
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                  it "can find a standard field by id" do
         
     | 
| 
      
 57 
     | 
    
         
            +
                  it 'can find a standard field by id' do
         
     | 
| 
       62 
58 
     | 
    
         
             
                    expect(subject.priority).to eq(1)
         
     | 
| 
       63 
59 
     | 
    
         
             
                  end
         
     | 
| 
       64 
60 
     | 
    
         | 
| 
       65 
     | 
    
         
            -
                  it  
     | 
| 
       66 
     | 
    
         
            -
                    expect{subject.Priority}.to raise_error(NoMethodError)
         
     | 
| 
      
 61 
     | 
    
         
            +
                  it 'cannot find a standard field by name before mapping' do
         
     | 
| 
      
 62 
     | 
    
         
            +
                    expect { subject.Priority }.to raise_error(NoMethodError)
         
     | 
| 
       67 
63 
     | 
    
         
             
                  end
         
     | 
| 
       68 
64 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                  it  
     | 
| 
      
 65 
     | 
    
         
            +
                  it 'can find a custom field by customfield_##### name' do
         
     | 
| 
       70 
66 
     | 
    
         
             
                    expect(subject.customfield_10111).to eq('data_in_custom_field')
         
     | 
| 
       71 
67 
     | 
    
         
             
                  end
         
     | 
| 
       72 
68 
     | 
    
         | 
| 
       73 
     | 
    
         
            -
                  it  
     | 
| 
       74 
     | 
    
         
            -
                    expect{subject.name}.to raise_error(NoMethodError)
         
     | 
| 
       75 
     | 
    
         
            -
                    expect{subject.custom}.to raise_error(NoMethodError)
         
     | 
| 
      
 69 
     | 
    
         
            +
                  it 'is not confused by common attribute keys and raises error' do
         
     | 
| 
      
 70 
     | 
    
         
            +
                    expect { subject.name }.to raise_error(NoMethodError)
         
     | 
| 
      
 71 
     | 
    
         
            +
                    expect { subject.custom }.to raise_error(NoMethodError)
         
     | 
| 
       76 
72 
     | 
    
         
             
                    expect(subject.id).to eq(nil)   # picks up ID from the parent -
         
     | 
| 
       77 
73 
     | 
    
         
             
                  end
         
     | 
| 
       78 
74 
     | 
    
         
             
                end
         
     | 
| 
       79 
75 
     | 
    
         | 
| 
       80 
     | 
    
         
            -
                context  
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
                  include_context "mapped or not"
         
     | 
| 
      
 76 
     | 
    
         
            +
                context 'after fields are mapped' do
         
     | 
| 
      
 77 
     | 
    
         
            +
                  include_context 'mapped or not'
         
     | 
| 
       83 
78 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
                  it  
     | 
| 
       85 
     | 
    
         
            -
                    expect{client.Field.map_fields}.to output(/renaming as Priority_10666/).to_stderr
         
     | 
| 
       86 
     | 
    
         
            -
                    expect{client.Field.map_fields}.to output(/renaming as SingleWord_10444/).to_stderr
         
     | 
| 
      
 79 
     | 
    
         
            +
                  it 'warns of duplicate fields' do
         
     | 
| 
      
 80 
     | 
    
         
            +
                    expect { client.Field.map_fields }.to output(/renaming as Priority_10666/).to_stderr
         
     | 
| 
      
 81 
     | 
    
         
            +
                    expect { client.Field.map_fields }.to output(/renaming as SingleWord_10444/).to_stderr
         
     | 
| 
       87 
82 
     | 
    
         
             
                  end
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
83 
     | 
    
         
             
                end
         
     | 
| 
       90 
84 
     | 
    
         
             
              end
         
     | 
| 
       91 
85 
     | 
    
         
             
            end
         
     | 
| 
         @@ -2,48 +2,48 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe JIRA::Resource::Filter do
         
     | 
| 
       4 
4 
     | 
    
         
             
              let(:client) do
         
     | 
| 
       5 
     | 
    
         
            -
                client = double 
     | 
| 
      
 5 
     | 
    
         
            +
                client = double
         
     | 
| 
       6 
6 
     | 
    
         
             
                allow(client).to receive(:Issue).and_return(JIRA::Resource::IssueFactory.new(self))
         
     | 
| 
       7 
7 
     | 
    
         
             
                client
         
     | 
| 
       8 
8 
     | 
    
         
             
              end
         
     | 
| 
       9 
9 
     | 
    
         
             
              let(:collection_path) { '/rest/api/2/filter' }
         
     | 
| 
       10 
10 
     | 
    
         
             
              let(:jira_user) do
         
     | 
| 
       11 
11 
     | 
    
         
             
                {
         
     | 
| 
       12 
     | 
    
         
            -
                  : 
     | 
| 
       13 
     | 
    
         
            -
                  : 
     | 
| 
       14 
     | 
    
         
            -
                  : 
     | 
| 
      
 12 
     | 
    
         
            +
                  self: 'https://localhost/rest/api/2/user?username=ljharb',
         
     | 
| 
      
 13 
     | 
    
         
            +
                  name: 'ljharb',
         
     | 
| 
      
 14 
     | 
    
         
            +
                  avatarUrls: {
         
     | 
| 
       15 
15 
     | 
    
         
             
                    '16x16' => 'https://localhost/secure/useravatar?size=small&ownerId=ljharb&avatarId=1',
         
     | 
| 
       16 
16 
     | 
    
         
             
                    '48x48' => 'https://localhost/secure/useravatar?ownerId=ljharb&avatarId=1'
         
     | 
| 
       17 
17 
     | 
    
         
             
                  },
         
     | 
| 
       18 
     | 
    
         
            -
                  : 
     | 
| 
       19 
     | 
    
         
            -
                  : 
     | 
| 
      
 18 
     | 
    
         
            +
                  displayName: 'Jordan Harband',
         
     | 
| 
      
 19 
     | 
    
         
            +
                  active: true
         
     | 
| 
       20 
20 
     | 
    
         
             
                }
         
     | 
| 
       21 
21 
     | 
    
         
             
              end
         
     | 
| 
       22 
22 
     | 
    
         
             
              let(:filter_attrs) do
         
     | 
| 
       23 
23 
     | 
    
         
             
                {
         
     | 
| 
       24 
     | 
    
         
            -
                  : 
     | 
| 
       25 
     | 
    
         
            -
                  : 
     | 
| 
       26 
     | 
    
         
            -
                  : 
     | 
| 
       27 
     | 
    
         
            -
                  : 
     | 
| 
       28 
     | 
    
         
            -
                  : 
     | 
| 
       29 
     | 
    
         
            -
                  : 
     | 
| 
       30 
     | 
    
         
            -
                  : 
     | 
| 
       31 
     | 
    
         
            -
                  : 
     | 
| 
       32 
     | 
    
         
            -
                  : 
     | 
| 
       33 
     | 
    
         
            -
                  : 
     | 
| 
      
 24 
     | 
    
         
            +
                  self: "https://localhost#{collection_path}/42",
         
     | 
| 
      
 25 
     | 
    
         
            +
                  id: 42,
         
     | 
| 
      
 26 
     | 
    
         
            +
                  name: 'Resolved Tickets',
         
     | 
| 
      
 27 
     | 
    
         
            +
                  description: '',
         
     | 
| 
      
 28 
     | 
    
         
            +
                  owner: jira_user,
         
     | 
| 
      
 29 
     | 
    
         
            +
                  jql: '"Git Repository" ~ jira-ruby AND status = Resolved',
         
     | 
| 
      
 30 
     | 
    
         
            +
                  viewUrl: 'https://localhost/secure/IssueNavigator.jspa?mode=hide&requestId=42',
         
     | 
| 
      
 31 
     | 
    
         
            +
                  searchUrl: 'https://localhost/rest/api/2/search?jql=%22Git+Repository%22+~+jira-ruby+AND+status+%3D+Resolved',
         
     | 
| 
      
 32 
     | 
    
         
            +
                  favourite: false,
         
     | 
| 
      
 33 
     | 
    
         
            +
                  sharePermissions: [
         
     | 
| 
       34 
34 
     | 
    
         
             
                    {
         
     | 
| 
       35 
     | 
    
         
            -
                      : 
     | 
| 
       36 
     | 
    
         
            -
                      : 
     | 
| 
      
 35 
     | 
    
         
            +
                      id: 123,
         
     | 
| 
      
 36 
     | 
    
         
            +
                      type: 'global'
         
     | 
| 
       37 
37 
     | 
    
         
             
                    }
         
     | 
| 
       38 
38 
     | 
    
         
             
                  ],
         
     | 
| 
       39 
     | 
    
         
            -
                  : 
     | 
| 
       40 
     | 
    
         
            -
                    : 
     | 
| 
       41 
     | 
    
         
            -
                    : 
     | 
| 
      
 39 
     | 
    
         
            +
                  subscriptions: {
         
     | 
| 
      
 40 
     | 
    
         
            +
                    size: 0,
         
     | 
| 
      
 41 
     | 
    
         
            +
                    items: []
         
     | 
| 
       42 
42 
     | 
    
         
             
                  }
         
     | 
| 
       43 
43 
     | 
    
         
             
                }
         
     | 
| 
       44 
44 
     | 
    
         
             
              end
         
     | 
| 
       45 
45 
     | 
    
         
             
              let(:filter_response) do
         
     | 
| 
       46 
     | 
    
         
            -
                response = double 
     | 
| 
      
 46 
     | 
    
         
            +
                response = double
         
     | 
| 
       47 
47 
     | 
    
         
             
                allow(response).to receive(:body).and_return(filter_attrs.to_json)
         
     | 
| 
       48 
48 
     | 
    
         
             
                response
         
     | 
| 
       49 
49 
     | 
    
         
             
              end
         
     | 
| 
         @@ -54,40 +54,40 @@ describe JIRA::Resource::Filter do 
     | 
|
| 
       54 
54 
     | 
    
         
             
              end
         
     | 
| 
       55 
55 
     | 
    
         
             
              let(:jql_issue) do
         
     | 
| 
       56 
56 
     | 
    
         
             
                {
         
     | 
| 
       57 
     | 
    
         
            -
                  : 
     | 
| 
       58 
     | 
    
         
            -
                  : 
     | 
| 
       59 
     | 
    
         
            -
                  : 
     | 
| 
       60 
     | 
    
         
            -
                  : 
     | 
| 
       61 
     | 
    
         
            -
                    : 
     | 
| 
       62 
     | 
    
         
            -
                    : 
     | 
| 
       63 
     | 
    
         
            -
                    : 
     | 
| 
      
 57 
     | 
    
         
            +
                  id: '663147',
         
     | 
| 
      
 58 
     | 
    
         
            +
                  self: 'https://localhost/rest/api/2/issue/663147',
         
     | 
| 
      
 59 
     | 
    
         
            +
                  key: 'JIRARUBY-2386',
         
     | 
| 
      
 60 
     | 
    
         
            +
                  fields: {
         
     | 
| 
      
 61 
     | 
    
         
            +
                    reporter: jira_user,
         
     | 
| 
      
 62 
     | 
    
         
            +
                    created: '2013-12-11T23:28:02.000+0000',
         
     | 
| 
      
 63 
     | 
    
         
            +
                    assignee: jira_user
         
     | 
| 
       64 
64 
     | 
    
         
             
                  }
         
     | 
| 
       65 
65 
     | 
    
         
             
                }
         
     | 
| 
       66 
66 
     | 
    
         
             
              end
         
     | 
| 
       67 
67 
     | 
    
         
             
              let(:jql_attrs) do
         
     | 
| 
       68 
68 
     | 
    
         
             
                {
         
     | 
| 
       69 
     | 
    
         
            -
                  : 
     | 
| 
       70 
     | 
    
         
            -
                  : 
     | 
| 
       71 
     | 
    
         
            -
                  : 
     | 
| 
       72 
     | 
    
         
            -
                  : 
     | 
| 
      
 69 
     | 
    
         
            +
                  startAt: 0,
         
     | 
| 
      
 70 
     | 
    
         
            +
                  maxResults: 50,
         
     | 
| 
      
 71 
     | 
    
         
            +
                  total: 2,
         
     | 
| 
      
 72 
     | 
    
         
            +
                  issues: [jql_issue]
         
     | 
| 
       73 
73 
     | 
    
         
             
                }
         
     | 
| 
       74 
74 
     | 
    
         
             
              end
         
     | 
| 
       75 
75 
     | 
    
         
             
              let(:issue_jql_response) do
         
     | 
| 
       76 
     | 
    
         
            -
                response = double 
     | 
| 
      
 76 
     | 
    
         
            +
                response = double
         
     | 
| 
       77 
77 
     | 
    
         
             
                allow(response).to receive(:body).and_return(jql_attrs.to_json)
         
     | 
| 
       78 
78 
     | 
    
         
             
                response
         
     | 
| 
       79 
79 
     | 
    
         
             
              end
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
       81 
     | 
    
         
            -
              it  
     | 
| 
      
 81 
     | 
    
         
            +
              it 'can be found by ID' do
         
     | 
| 
       82 
82 
     | 
    
         
             
                expect(JSON.parse(filter.attrs.to_json)).to eql(JSON.parse(filter_attrs.to_json))
         
     | 
| 
       83 
83 
     | 
    
         
             
              end
         
     | 
| 
       84 
84 
     | 
    
         | 
| 
       85 
     | 
    
         
            -
              it  
     | 
| 
      
 85 
     | 
    
         
            +
              it 'returns issues' do
         
     | 
| 
       86 
86 
     | 
    
         
             
                expect(filter).to be_present
         
     | 
| 
       87 
     | 
    
         
            -
                allow(client).to receive(:options).and_return( 
     | 
| 
       88 
     | 
    
         
            -
                expect(client).to receive(:get) 
     | 
| 
       89 
     | 
    
         
            -
                  with("localhost/search?jql=#{CGI.escape(filter.jql)}") 
     | 
| 
       90 
     | 
    
         
            -
                  and_return(issue_jql_response)
         
     | 
| 
      
 87 
     | 
    
         
            +
                allow(client).to receive(:options).and_return(rest_base_path: 'localhost')
         
     | 
| 
      
 88 
     | 
    
         
            +
                expect(client).to receive(:get)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  .with("localhost/search?jql=#{CGI.escape(filter.jql)}")
         
     | 
| 
      
 90 
     | 
    
         
            +
                  .and_return(issue_jql_response)
         
     | 
| 
       91 
91 
     | 
    
         
             
                issues = filter.issues
         
     | 
| 
       92 
92 
     | 
    
         
             
                expect(issues).to be_an(Array)
         
     | 
| 
       93 
93 
     | 
    
         
             
                expect(issues.size).to eql(1)
         
     | 
| 
         @@ -0,0 +1,79 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe JIRA::Resource::IssuePickerSuggestions do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let(:client) do
         
     | 
| 
      
 5 
     | 
    
         
            +
                double('client', options: {
         
     | 
| 
      
 6 
     | 
    
         
            +
                  rest_base_path: '/jira/rest/api/2'
         
     | 
| 
      
 7 
     | 
    
         
            +
                })
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              describe 'relationships' do
         
     | 
| 
      
 11 
     | 
    
         
            +
                subject do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  JIRA::Resource::IssuePickerSuggestions.new(client, attrs: {
         
     | 
| 
      
 13 
     | 
    
         
            +
                    'sections' => [{ 'id' => 'hs'}, { 'id' => 'cs' }]
         
     | 
| 
      
 14 
     | 
    
         
            +
                  })
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                it 'has the correct relationships' do
         
     | 
| 
      
 18 
     | 
    
         
            +
                  expect(subject).to have_many(:sections, JIRA::Resource::IssuePickerSuggestionsIssue)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  expect(subject.sections.length).to eq(2)
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              describe '#all' do
         
     | 
| 
      
 24 
     | 
    
         
            +
                let(:response) { double }
         
     | 
| 
      
 25 
     | 
    
         
            +
                let(:issue_picker_suggestions) { double }
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                before do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  allow(response).to receive(:body).and_return('{"sections":[{"id": "cs"}]}')
         
     | 
| 
      
 29 
     | 
    
         
            +
                  allow(client).to receive(:IssuePickerSuggestions).and_return(issue_picker_suggestions)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  allow(issue_picker_suggestions).to receive(:build)
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                it 'should autocomplete issues' do
         
     | 
| 
      
 34 
     | 
    
         
            +
                  allow(response).to receive(:body).and_return('{"sections":[{"id": "cs"}]}')
         
     | 
| 
      
 35 
     | 
    
         
            +
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/picker?query=query')
         
     | 
| 
      
 36 
     | 
    
         
            +
                                                 .and_return(response)
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  expect(client).to receive(:IssuePickerSuggestions).and_return(issue_picker_suggestions)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  expect(issue_picker_suggestions).to receive(:build).with({ 'sections' => [{ 'id' => 'cs' }] })
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                  JIRA::Resource::IssuePickerSuggestions.all(client, 'query')
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                it 'should autocomplete issues with current jql' do
         
     | 
| 
      
 45 
     | 
    
         
            +
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/picker?query=query¤tJQL=project+%3D+PR')
         
     | 
| 
      
 46 
     | 
    
         
            +
                                                 .and_return(response)
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  JIRA::Resource::IssuePickerSuggestions.all(client, 'query', current_jql: 'project = PR')
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                it 'should autocomplete issues with current issue jey' do
         
     | 
| 
      
 52 
     | 
    
         
            +
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/picker?query=query¤tIssueKey=PR-42')
         
     | 
| 
      
 53 
     | 
    
         
            +
                                                 .and_return(response)
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                  JIRA::Resource::IssuePickerSuggestions.all(client, 'query', current_issue_key: 'PR-42')
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                it 'should autocomplete issues with current project id' do
         
     | 
| 
      
 59 
     | 
    
         
            +
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/picker?query=query¤tProjectId=PR')
         
     | 
| 
      
 60 
     | 
    
         
            +
                                                 .and_return(response)
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  JIRA::Resource::IssuePickerSuggestions.all(client, 'query', current_project_id: 'PR')
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                it 'should autocomplete issues with show sub tasks' do
         
     | 
| 
      
 66 
     | 
    
         
            +
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/picker?query=query&showSubTasks=true')
         
     | 
| 
      
 67 
     | 
    
         
            +
                                                 .and_return(response)
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                  JIRA::Resource::IssuePickerSuggestions.all(client, 'query', show_sub_tasks: true)
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                it 'should autocomplete issues with show sub tasks parent' do
         
     | 
| 
      
 73 
     | 
    
         
            +
                  expect(client).to receive(:get).with('/jira/rest/api/2/issue/picker?query=query&showSubTaskParent=true')
         
     | 
| 
      
 74 
     | 
    
         
            +
                                                 .and_return(response)
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                  JIRA::Resource::IssuePickerSuggestions.all(client, 'query', show_sub_task_parent: true)
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
              end
         
     | 
| 
      
 79 
     | 
    
         
            +
            end
         
     |