Skip to content

Commit ec2ae0a

Browse files
committed
refactor jql builder
1 parent 6a17c93 commit ec2ae0a

File tree

6 files changed

+67
-11
lines changed

6 files changed

+67
-11
lines changed

lib/terjira/client/base.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
require_relative 'jql_query_builer'
1+
require_relative 'jql_builder'
22
require_relative 'auth_option_builder'
33

44
module Terjira
55
module Client
66
# Abstract class to delegate jira-ruby resource class
77
class Base
8-
extend JQLQueryBuilder
8+
extend JQLBuilder
99
extend AuthOptionBuilder
1010

1111
DEFAULT_CACHE_SEC = 60

lib/terjira/client/issue.rb

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,14 @@ class << self
99
def all(options = {})
1010
return resource.all if options.blank?
1111
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)
1313
end
1414

1515
def find(issue, options = {})
1616
resp = api_get("issue/#{issue.key_value}", options)
1717
build(resp)
1818
end
1919

20-
def current_my_issues
21-
jql("assignee = #{key_value} AND statusCategory != 'Done'")
22-
end
23-
2420
def assign(issue, assignee)
2521
body = { name: assignee.key_value }.to_json
2622
api_put("issue/#{issue.key_value}/assignee", body)

lib/terjira/client/jql_query_builer.rb renamed to lib/terjira/client/jql_builder.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
module Terjira
22
module Client
3-
module JQLQueryBuilder
3+
module JQLBuilder
44
JQL_KEYS = %w(board sprint assignee issuetype priority project status statusCategory).freeze
55

6-
def build_jql_query(options = {})
6+
def build_jql(options = {})
77
q_options = options.inject({}) do |memo, (k, v)|
88
memo[k.to_s] = v
99
memo

lib/terjira/sprint_cli.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def show(sprint = nil)
2727
def active
2828
opts = suggest_options(required: [:board])
2929
board = opts[:board]
30+
3031
sprints = client_class.find_active(board)
3132

3233
opts[:assignee] ||= current_username

spec/client/jql_builder_spec.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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

spec/sprint_cli_spec.rb

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
end
1414

1515
context '#list' do
16-
it 'must show sprints' do
16+
it 'presents sprints' do
1717
allow(Terjira::Client::Board).to receive(:all).and_return(scrum_boards)
1818
allow(Terjira::Client::Sprint).to receive(:all).and_return(sprints)
1919

@@ -31,7 +31,7 @@
3131
end
3232

3333
context '#show' do
34-
it 'must sprint with issues' do
34+
it 'presents the sprint with issues' do
3535
sprint = sprints.first
3636
allow(Terjira::Client::Sprint).to receive(:find).and_return(sprint)
3737
allow(Terjira::Client::Issue).to receive(:all).and_return(issues)
@@ -47,4 +47,26 @@
4747
end
4848
end
4949
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
5072
end

0 commit comments

Comments
 (0)