jira-issues 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d5679b5e732288e730d878e483d9084f6c564175
4
- data.tar.gz: 1728a9a75a5cfacdca88d148d617a8998d277cd5
3
+ metadata.gz: 441467c14ab6bef2cc52daeff6352ef6f446f5a3
4
+ data.tar.gz: 21de1b9c76376d52c8b67123b1266858dcee2fd2
5
5
  SHA512:
6
- metadata.gz: bfcd63bd76f446c49c10e73152f6b1d300f86afd8c4daf40f7f8b2fd83b5b4baa69d7c977c8de3de31f66830224a7a42142eab755102a5cca2242daf5eeee60b
7
- data.tar.gz: f98fc6d4172a97cf893da82d5c28e61cef031b3c823251fa4d10cb541843767e23658ac4b393303846a5621eff21b4b8951053e34854d3bc481ee122755d595b
6
+ metadata.gz: 1c100f0e5c7bdc6a53f59d1ee74c227f39c018e0c187f986bc354527e3525ae37ded2d3d411ff4ed6bee489ad4d06a406fee7a9b318e9ddbf42cc462decbb7c2
7
+ data.tar.gz: 9aeb2fc399f9b1ba5b508159c5f388bd2301a7615e9986a86d1444b3f0f469511a0ad73c860fa6ff1849cc2e7297e00cc25d6ad290d2ceedd1028533a84d6a05
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'jira-ruby'
4
+
5
+ group :development do
6
+ gem 'rake'
7
+ gem 'rspec'
8
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,47 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ activesupport (5.1.4)
5
+ concurrent-ruby (~> 1.0, >= 1.0.2)
6
+ i18n (~> 0.7)
7
+ minitest (~> 5.1)
8
+ tzinfo (~> 1.1)
9
+ concurrent-ruby (1.0.5)
10
+ diff-lcs (1.3)
11
+ i18n (0.9.1)
12
+ concurrent-ruby (~> 1.0)
13
+ jira-ruby (1.4.3)
14
+ activesupport
15
+ multipart-post
16
+ oauth (~> 0.5, >= 0.5.0)
17
+ minitest (5.10.3)
18
+ multipart-post (2.0.0)
19
+ oauth (0.5.4)
20
+ rake (12.3.0)
21
+ rspec (3.7.0)
22
+ rspec-core (~> 3.7.0)
23
+ rspec-expectations (~> 3.7.0)
24
+ rspec-mocks (~> 3.7.0)
25
+ rspec-core (3.7.0)
26
+ rspec-support (~> 3.7.0)
27
+ rspec-expectations (3.7.0)
28
+ diff-lcs (>= 1.2.0, < 2.0)
29
+ rspec-support (~> 3.7.0)
30
+ rspec-mocks (3.7.0)
31
+ diff-lcs (>= 1.2.0, < 2.0)
32
+ rspec-support (~> 3.7.0)
33
+ rspec-support (3.7.0)
34
+ thread_safe (0.3.6)
35
+ tzinfo (1.2.4)
36
+ thread_safe (~> 0.1)
37
+
38
+ PLATFORMS
39
+ ruby
40
+
41
+ DEPENDENCIES
42
+ jira-ruby
43
+ rake
44
+ rspec
45
+
46
+ BUNDLED WITH
47
+ 1.16.0
data/README.md ADDED
@@ -0,0 +1,41 @@
1
+ jira issues
2
+ ===========
3
+
4
+ [![Build Status](https://travis-ci.org/filipjakubowski/jira_issues.svg?branch=master)](https://travis-ci.org/filipjakubowski/jira_issues)
5
+
6
+ ## description
7
+
8
+ Gem that allows you to navigate throu jour JIRA projects easily, get stats and in future to transit and manage tickets.
9
+
10
+ Results of JIRA JQL are stripped to selected fields for more user friendly exposure.
11
+
12
+ ## Getting Started
13
+
14
+ First you need to set up your environment variables to access your JIRA repository.
15
+ Please keep in mind that gem will have all and only access to issues and project that reflects access of selected account.
16
+
17
+ - **ENV['JIRA_URL']**
18
+ - **ENV['JIRA_USERNAME']**
19
+ - **ENV['JIRA_PASSWORD']**
20
+
21
+ ## Running JQL Query
22
+
23
+ '''
24
+ require 'jira_issues'
25
+ q = JiraIssues::JiraQuery.new
26
+ issues_navigator = jq.jql_query 'project = "Project Name" and ( created > -40d or status not in (Done) )'
27
+ '''
28
+
29
+ ## Filtering issues
30
+
31
+ '''
32
+ issues_navigator.open.issues -- open issues
33
+ issues_navigator.closed.issues -- closed issues
34
+ '''
35
+
36
+ ## Stats
37
+
38
+ '''
39
+ issues_navigator.created_by_week
40
+ issues_navigator.closed_by_week
41
+ '''
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
7
+ task :test => :spec
@@ -0,0 +1,40 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+
3
+ require "jira_issues/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'jira-issues'
7
+ s.version = JiraIssues::VERSION
8
+
9
+ ## Edit these as appropriate
10
+ s.summary = "Jira Issues"
11
+ s.description = %q{Jira Issues gem that supports quering and filtering data for external reporting and integrations.}
12
+
13
+ s.authors = ["Filip Jakubowski-Drzrwiecki"]
14
+ s.email = ["don.o.phelippe@gmail.com"]
15
+ s.homepage = 'https://github.com/filipjakubowski'
16
+
17
+ s.rubyforge_project = "jira_issues"
18
+
19
+ s.require_paths = %w[lib]
20
+ s.files = `git ls-files`.split("\n")
21
+ # s.files = %w{lib/jira_issues.rb lib/jira_issues/jira_adapter.rb lib/jira_issues/jira_issue_mapper.rb lib/jira_issues/jira_issues_navigator.rb lib/jira_issues/jira_workflow.rb lib/jira_issues/jira_query.rb lib/jira_issues/jira_issues_stats.rb lib/jira_issues/jql_lib.rb}
22
+
23
+ s.add_dependency 'jira-ruby'
24
+ s.add_dependency 'byebug'
25
+
26
+ ## List your development dependencies here. Development dependencies are
27
+ ## those that are only needed during development
28
+ s.add_development_dependency "rake"
29
+ s.add_development_dependency "rspec"
30
+ s.add_development_dependency "rubocop"
31
+
32
+ s.add_development_dependency 'fakeweb'
33
+ s.add_development_dependency 'pry'
34
+
35
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
36
+
37
+ ## Test files will be grabbed from the file list. Make sure the path glob
38
+ ## matches what you actually use.
39
+ s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
40
+ end
@@ -1,39 +1,37 @@
1
1
  module JiraIssues
2
2
  class JiraIssuesNavigator
3
+ include JiraIssues::JiraIssueStats
4
+
3
5
  def initialize(issues)
4
6
  @issues = issues
5
7
  end
6
8
 
7
- def all
9
+ def issues
8
10
  @issues
11
+ end
12
+
13
+ def all
14
+ JiraIssuesNavigator.new @issues
9
15
  end
10
16
 
11
17
  def open
12
- @issues.select {|i| i[:status] == JiraWorkflow::OPEN}
18
+ JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::OPEN}
13
19
  end
14
20
 
15
21
  def blocked
16
- @issues.select {|i| i[:status] == JiraWorkflow::BLOCKED}
22
+ JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::BLOCKED}
17
23
  end
18
24
 
19
25
  def in_progress
20
- @issues.select {|i| i[:status] == JiraWorkflow::IN_PROGRESS}
26
+ JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::IN_PROGRESS}
21
27
  end
22
28
 
23
29
  def closed
24
- @issues.select {|i| i[:status] == JiraWorkflow::CLOSED}
30
+ JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::CLOSED}
25
31
  end
26
32
 
27
33
  def with_status(status: selected_status)
28
- @issues.select {|i| i[:status] == @issue_states[selected_status]}
29
- end
30
-
31
- def created_by_week
32
- @issues.map { |i| { key: i[:key], week_created: Date.parse(i[:created_date]).beginning_of_week}}.group_by { |x| x[:week_created]}.map{ |k,v| [k, v.count] }.to_h.sort
33
- end
34
-
35
- def closed_by_week
36
- @issues.select{|i| !i[:closed_date].nil? }.map { |i| { key: i[:key], week_closed: Date.parse(i[:closed_date]).beginning_of_week}}.group_by { |x| x[:week_closed]}.map{ |k,v| [k, v.count] }.to_h.sort
34
+ JiraIssuesNavigator.new @issues.select {|i| i[:status] == @issue_states[selected_status]}
37
35
  end
38
36
 
39
37
  #aliases
@@ -0,0 +1,11 @@
1
+ module JiraIssues
2
+ module JiraIssueStats
3
+ def created_by_week
4
+ @issues.map { |i| { key: i[:key], week_created: Date.parse(i[:created_date]).beginning_of_week } }.group_by { |x| x[:week_created] }.map { |k, v| [k, v.count] }.to_h.sort
5
+ end
6
+
7
+ def closed_by_week
8
+ @issues.select { |i| !i[:closed_date].nil? }.map { |i| { key: i[:key], week_closed: Date.parse(i[:closed_date]).beginning_of_week } }.group_by { |x| x[:week_closed]}.map { |k, v| [k, v.count] }.to_h.sort
9
+ end
10
+ end
11
+ end
@@ -1,9 +1,9 @@
1
1
  module JiraIssues
2
2
  class JiraWorkflow
3
- OPEN = 'Open'
3
+ OPEN = 'Open'
4
4
  IN_PROGRESS = 'InProgress'
5
- BLOCKED = 'Blocked'
6
- CLOSED = 'Closed'
5
+ BLOCKED = 'Blocked'
6
+ CLOSED = 'Closed'
7
7
  # This is WIP
8
8
  # This class should be able to map and unify:
9
9
  # - statuses
@@ -0,0 +1,11 @@
1
+ module JiraIssues
2
+ class JqlLib
3
+ def self.my_issues
4
+ "assignee = currentUser()"
5
+ end
6
+
7
+ def self.issues_for_user(user)
8
+ "assignee = #{user}"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module JiraIssues
2
+ VERSION = "0.0.2"
3
+ end
data/lib/jira_issues.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'jira_issues/jira_adapter'
2
2
  require 'jira_issues/jira_workflow'
3
3
  require 'jira_issues/jira_query'
4
+ require 'jira_issues/jira_issues_stats'
4
5
  require 'jira_issues/jira_issues_navigator'
5
6
  require 'jira_issues/jira_issue_mapper'
6
-
7
+ require 'jira_issues/jql_lib'
data/spec/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe JiraIssues do
4
+ it "filter issues" do
5
+ issue_nav = Object.new
6
+ allow(issue_nav).to receive(:jql_query) {
7
+ issues = [
8
+ {:key=>"PR-100", :type=>"Task", :priority=>"Major", :status=>"Open", :summary=>"Clean kitchen", :created_date=>"2017-12-28T13:30:30.000+0000", :closed_date=>"2017-12-28T13:30:30.000+0000"},
9
+ {:key=>"PR-101", :type=>"Task", :priority=>"Major", :status=>"InProgress", :summary=>"Walk a dog", :created_date=>"2017-12-07T15:46:22.000+0000", :closed_date=>nil},
10
+ {:key=>"PR-102", :type=>"Task", :priority=>"Critical", :status=>"Closed", :summary=>"Pack bagpack", :created_date=>"2017-12-21T11:15:38.000+0000", :closed_date=>"2017-12-27T13:45:06.000+0000"},
11
+ {:key=>"PR-102", :type=>"Task", :priority=>"Critical", :status=>"Closed", :summary=>"Pay bills", :created_date=>"2017-12-21T11:15:38.000+0000", :closed_date=>"2017-12-27T13:45:06.000+0000"}
12
+ ]
13
+ JiraIssues::JiraIssuesNavigator.new(issues)
14
+ }
15
+
16
+ jn = issue_nav.jql_query 'project = "Project" and ( created > -40d )'
17
+ expect(jn.done.issues.count).to eq(2)
18
+ expect(jn.open.issues.count).to eq(1)
19
+ expect(jn.in_progress.issues.count).to eq(1)
20
+ expect(jn.open.issues.first[:priority]).to eq("Major")
21
+
22
+ expect(jn.created_by_week.count).to eq(3)
23
+ expect(jn.closed_by_week.count).to eq(1)
24
+ end
25
+
26
+ it "translates workfow steps" do
27
+ expect(JiraIssues::JiraWorkflow.issue_status_for_name('PR','Open')).to eq(JiraIssues::JiraWorkflow::OPEN)
28
+ expect(JiraIssues::JiraWorkflow.issue_status_for_name('PR','In Progress')).to eq(JiraIssues::JiraWorkflow::IN_PROGRESS)
29
+ expect(JiraIssues::JiraWorkflow.issue_status_for_name('PR','Done')).to eq(JiraIssues::JiraWorkflow::CLOSED)
30
+ end
31
+ end
@@ -0,0 +1,2 @@
1
+ require 'rspec'
2
+ require 'jira_issues'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jira-issues
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Filip Jakubowski-Drzrwiecki
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: fakeweb
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -102,12 +116,23 @@ executables: []
102
116
  extensions: []
103
117
  extra_rdoc_files: []
104
118
  files:
119
+ - Gemfile
120
+ - Gemfile.lock
121
+ - README.md
122
+ - Rakefile
123
+ - jira_issues.gemspec
105
124
  - lib/jira_issues.rb
106
125
  - lib/jira_issues/jira_adapter.rb
107
126
  - lib/jira_issues/jira_issue_mapper.rb
108
127
  - lib/jira_issues/jira_issues_navigator.rb
128
+ - lib/jira_issues/jira_issues_stats.rb
109
129
  - lib/jira_issues/jira_query.rb
110
130
  - lib/jira_issues/jira_workflow.rb
131
+ - lib/jira_issues/jql_lib.rb
132
+ - lib/jira_issues/version.rb
133
+ - spec/.rspec
134
+ - spec/jira_issues_spec.rb
135
+ - spec/spec_helper.rb
111
136
  homepage: https://github.com/filipjakubowski
112
137
  licenses: []
113
138
  metadata: {}
@@ -126,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
151
  - !ruby/object:Gem::Version
127
152
  version: '0'
128
153
  requirements: []
129
- rubyforge_project:
154
+ rubyforge_project: jira_issues
130
155
  rubygems_version: 2.6.14
131
156
  signing_key:
132
157
  specification_version: 4