File tree Expand file tree Collapse file tree 6 files changed +67
-11
lines changed Expand file tree Collapse file tree 6 files changed +67
-11
lines changed Original file line number Diff line number Diff line change 1
- require_relative 'jql_query_builer '
1
+ require_relative 'jql_builder '
2
2
require_relative 'auth_option_builder'
3
3
4
4
module Terjira
5
5
module Client
6
6
# Abstract class to delegate jira-ruby resource class
7
7
class Base
8
- extend JQLQueryBuilder
8
+ extend JQLBuilder
9
9
extend AuthOptionBuilder
10
10
11
11
DEFAULT_CACHE_SEC = 60
Original file line number Diff line number Diff line change @@ -9,18 +9,14 @@ class << self
9
9
def all ( options = { } )
10
10
return resource . all if options . blank?
11
11
max_results = options . delete ( :max_results ) || 500
12
- resource . jql ( build_jql_query ( options ) , max_results : max_results )
12
+ resource . jql ( build_jql ( options ) , max_results : max_results )
13
13
end
14
14
15
15
def find ( issue , options = { } )
16
16
resp = api_get ( "issue/#{ issue . key_value } " , options )
17
17
build ( resp )
18
18
end
19
19
20
- def current_my_issues
21
- jql ( "assignee = #{ key_value } AND statusCategory != 'Done'" )
22
- end
23
-
24
20
def assign ( issue , assignee )
25
21
body = { name : assignee . key_value } . to_json
26
22
api_put ( "issue/#{ issue . key_value } /assignee" , body )
Original file line number Diff line number Diff line change 1
1
module Terjira
2
2
module Client
3
- module JQLQueryBuilder
3
+ module JQLBuilder
4
4
JQL_KEYS = %w( board sprint assignee issuetype priority project status statusCategory ) . freeze
5
5
6
- def build_jql_query ( options = { } )
6
+ def build_jql ( options = { } )
7
7
q_options = options . inject ( { } ) do |memo , ( k , v ) |
8
8
memo [ k . to_s ] = v
9
9
memo
Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ def show(sprint = nil)
27
27
def active
28
28
opts = suggest_options ( required : [ :board ] )
29
29
board = opts [ :board ]
30
+
30
31
sprints = client_class . find_active ( board )
31
32
32
33
opts [ :assignee ] ||= current_username
Original file line number Diff line number Diff line change
1
+ require 'spec_helper'
2
+ require 'terjira/client/jql_builder'
3
+
4
+ class TestJQLBuilder
5
+ extend Terjira ::Client ::JQLBuilder
6
+ end
7
+
8
+ describe Terjira ::Client ::JQLBuilder do
9
+ subject { TestJQLBuilder }
10
+
11
+ it 'builds string value jql' do
12
+ result = subject . build_jql ( board : 1 )
13
+ expect ( result ) . to be == 'board=1'
14
+
15
+ result = subject . build_jql ( issuetype : 'Task' )
16
+ expect ( result ) . to be == 'issuetype=Task'
17
+ end
18
+
19
+ it 'builds array value jql' do
20
+ result = subject . build_jql ( sprint : [ 1 , 2 , 3 ] )
21
+ expect ( result ) . to be == 'sprint IN ("1","2","3")'
22
+
23
+ result = subject . build_jql ( priority : %w( high low ) )
24
+ expect ( result ) . to be == 'priority IN ("high","low")'
25
+ end
26
+
27
+ it 'builds multiple key values jql' do
28
+ result = subject . build_jql ( sprint : 1 , issuetype : %w( Task Done ) )
29
+
30
+ expect ( result ) . to be == 'sprint=1 AND issuetype IN ("Task","Done")'
31
+ end
32
+
33
+ it 'filters unkown jql key' do
34
+ result = subject . build_jql ( unkown : 1 )
35
+ expect ( result ) . to be == ''
36
+ end
37
+ end
Original file line number Diff line number Diff line change 13
13
end
14
14
15
15
context '#list' do
16
- it 'must show sprints' do
16
+ it 'presents sprints' do
17
17
allow ( Terjira ::Client ::Board ) . to receive ( :all ) . and_return ( scrum_boards )
18
18
allow ( Terjira ::Client ::Sprint ) . to receive ( :all ) . and_return ( sprints )
19
19
31
31
end
32
32
33
33
context '#show' do
34
- it 'must sprint with issues' do
34
+ it 'presents the sprint with issues' do
35
35
sprint = sprints . first
36
36
allow ( Terjira ::Client ::Sprint ) . to receive ( :find ) . and_return ( sprint )
37
37
allow ( Terjira ::Client ::Issue ) . to receive ( :all ) . and_return ( issues )
47
47
end
48
48
end
49
49
end
50
+
51
+ context '#active' do
52
+ it 'presents active sprints with issues' do
53
+ board = boards . first
54
+ allow ( Terjira ::Client ::Sprint ) . to receive ( :find_active ) . with ( board . id ) . and_return ( sprints )
55
+ allow ( Terjira ::Client ::Issue ) . to receive ( :all ) . and_return ( issues )
56
+
57
+ result = capture ( :stdout ) do
58
+ described_class . start [ 'active' , '--board' , board . id ]
59
+ end
60
+
61
+ sprints . each do |sprint |
62
+ expect ( result ) . to be_include sprint . id . to_s
63
+ expect ( result ) . to be_include sprint . name
64
+ expect ( result ) . to be_include sprint . goal
65
+ end
66
+ issues . each do |issue |
67
+ expect ( result ) . to be_include issue . key
68
+ expect ( result ) . to be_include issue . summary
69
+ end
70
+ end
71
+ end
50
72
end
You can’t perform that action at this time.
0 commit comments