From 5d5dc6257d5d9f2897a0beee1c8d121b4f547e47 Mon Sep 17 00:00:00 2001 From: Robert Brodie Date: Sun, 28 Apr 2024 01:33:56 -0400 Subject: [PATCH] Add tests for sprints and fix complete_date --- lib/jira-ruby.rb | 1 - lib/jira/client.rb | 4 ---- lib/jira/resource/sprint.rb | 18 +++++++----------- lib/jira/resource/sprint_report.rb | 8 -------- spec/jira/resource/sprint_spec.rb | 27 ++++++++++++++++++--------- spec/mock_responses/sprint/1.json | 13 +++++++++++++ 6 files changed, 38 insertions(+), 33 deletions(-) delete mode 100644 lib/jira/resource/sprint_report.rb create mode 100644 spec/mock_responses/sprint/1.json diff --git a/lib/jira-ruby.rb b/lib/jira-ruby.rb index ae464f8e..addb96c6 100644 --- a/lib/jira-ruby.rb +++ b/lib/jira-ruby.rb @@ -32,7 +32,6 @@ require 'jira/resource/issue_picker_suggestions' require 'jira/resource/remotelink' require 'jira/resource/sprint' -require 'jira/resource/sprint_report' require 'jira/resource/resolution' require 'jira/resource/issue' require 'jira/resource/filter' diff --git a/lib/jira/client.rb b/lib/jira/client.rb index fa631050..d80fa754 100644 --- a/lib/jira/client.rb +++ b/lib/jira/client.rb @@ -232,10 +232,6 @@ def Sprint JIRA::Resource::SprintFactory.new(self) end - def SprintReport - JIRA::Resource::SprintReportFactory.new(self) - end - def ServerInfo JIRA::Resource::ServerInfoFactory.new(self) end diff --git a/lib/jira/resource/sprint.rb b/lib/jira/resource/sprint.rb index 6b90710b..5664c44c 100644 --- a/lib/jira/resource/sprint.rb +++ b/lib/jira/resource/sprint.rb @@ -12,26 +12,22 @@ def self.find(client, key) # get all issues of sprint def issues(options = {}) - jql = 'sprint = ' + id.to_s + jql = "sprint = #{id.to_s}" jql += " and updated >= '#{options[:updated]}'" if options[:updated] Issue.jql(client, jql) end def add_issue(issue) - add_issues( [ issue ]) + add_issues([issue]) end def add_issues(issues) - issue_ids = issues.map{ |issue| issue.id } + issue_ids = issues.map(&:id) request_body = { issues: issue_ids }.to_json client.post("#{agile_path}/issue", request_body) true end - def sprint_report - get_sprint_details_attribute('sprint_report') - end - def start_date get_sprint_details_attribute('start_date') end @@ -47,6 +43,7 @@ def complete_date def get_sprint_details_attribute(attribute_name) attribute = instance_variable_get("@#{attribute_name}") return attribute if attribute + get_sprint_details instance_variable_get("@#{attribute_name}") end @@ -61,10 +58,9 @@ def get_sprint_details end json = self.class.parse_json(response.body) - @start_date = json['sprint']['startDate'] && Date.parse(json['sprint']['startDate']) - @end_date = json['sprint']['endDate'] && Date.parse(json['sprint']['endDate']) - @completed_date = json['sprint']['completeDate'] && Date.parse(json['sprint']['completeDate']) - @sprint_report = client.SprintReport.build(json['contents']) + @start_date = json['startDate'] && Date.parse(json['startDate']) + @end_date = json['endDate'] && Date.parse(json['endDate']) + @complete_date = json['completeDate'] && Date.parse(json['completeDate']) end def save(attrs = {}, _path = nil) diff --git a/lib/jira/resource/sprint_report.rb b/lib/jira/resource/sprint_report.rb deleted file mode 100644 index 8f179229..00000000 --- a/lib/jira/resource/sprint_report.rb +++ /dev/null @@ -1,8 +0,0 @@ -module JIRA - module Resource - class SprintReportFactory < JIRA::BaseFactory # :nodoc: - end - - class SprintReport < JIRA::Base; end - end -end diff --git a/spec/jira/resource/sprint_spec.rb b/spec/jira/resource/sprint_spec.rb index b766abb8..ca57fd3c 100644 --- a/spec/jira/resource/sprint_spec.rb +++ b/spec/jira/resource/sprint_spec.rb @@ -2,12 +2,24 @@ describe JIRA::Resource::Sprint do let(:client) do - client = double(options: { site: 'https://foo.bar.com', context_path: '/jira' }) + client = double(options: { rest_base_path: '/jira/rest/api/2', context_path: '/jira' }) allow(client).to receive(:Sprint).and_return(JIRA::Resource::SprintFactory.new(client)) client end let(:sprint) { described_class.new(client) } - let(:agile_sprint_path) { "#{sprint.client.options[:context_path]}/rest/agile/1.0/sprint/#{sprint.id}" } + let(:agile_sprint_path) { "/jira/rest/agile/1.0/sprint/#{sprint.id}" } + let(:response) { double } + + describe 'get_sprint_details' do + let(:sprint) { JIRA::Resource::Sprint.find(client, '1') } + it 'check each of the date attributes' do + allow(client).to receive(:get).and_return(double(body: get_mock_response('sprint/1.json'))) + + expect(sprint.start_date).to eq Date.parse('2024-01-01T03:20:00.000Z') + expect(sprint.end_date).to eq Date.parse('2024-01-15T03:20:00.000Z') + expect(sprint.complete_date).to eq Date.parse('2024-01-16T03:48:00.000Z') + end + end describe '::find' do let(:response) { double('Response', body: '{"some_detail":"some detail"}') } @@ -91,7 +103,7 @@ let(:issue_id) { 1001 } let(:post_issue_path) do described_class.agile_path(client, sprint.id) - "/jira/rest/agile/1.0/sprint//issue" + '/jira/rest/agile/1.0/sprint//issue' end let(:issue) do issue = double @@ -99,13 +111,11 @@ issue end let(:post_issue_input) do - {"issues":[issue.id]} + { "issues": [issue.id] } end - describe '#add_issu' do context 'when an issue is passed' do - it 'posts with the issue id' do expect(client).to receive(:post).with(post_issue_path, post_issue_input.to_json) @@ -119,7 +129,7 @@ let(:issue_ids) { [ 1001, 1012 ] } let(:post_issue_path) do described_class.agile_path(client, sprint.id) - "/jira/rest/agile/1.0/sprint//issue" + '/jira/rest/agile/1.0/sprint//issue' end let(:issues) do issue_ids.map do |issue_id| @@ -129,12 +139,11 @@ end end let(:post_issue_input) do - {"issues": issue_ids} + { "issues": issue_ids } end describe '#add_issues' do context 'when an issue is passed' do - it 'posts with the issue id' do expect(client).to receive(:post).with(post_issue_path, post_issue_input.to_json) diff --git a/spec/mock_responses/sprint/1.json b/spec/mock_responses/sprint/1.json new file mode 100644 index 00000000..4fcb02df --- /dev/null +++ b/spec/mock_responses/sprint/1.json @@ -0,0 +1,13 @@ +{ + "id": 1, + "self": "https://localhost:2990/jira/rest/agile/1.0/sprint/1", + "state": "closed", + "name": "SP Sprint 1", + "startDate": "2024-01-01T03:20:00.000Z", + "endDate": "2024-01-15T03:20:00.000Z", + "completeDate": "2024-01-16T03:48:00.000Z", + "createdDate": "2024-01-01T00:00:00.000Z", + "originBoardId": 1, + "goal": "", + "rapidview_id": 1 +} \ No newline at end of file