Add spec for pull request comments and add comments
This commit is contained in:
parent
d09034acca
commit
930b5e7a5b
2 changed files with 76 additions and 4 deletions
|
@ -15,11 +15,9 @@ module BitbucketServer
|
|||
# "path": "CHANGELOG.md",
|
||||
# "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be"
|
||||
# }
|
||||
#
|
||||
# More details in https://docs.atlassian.com/bitbucket-server/rest/5.12.0/bitbucket-rest.html.
|
||||
class PullRequestComment < Comment
|
||||
def file_type
|
||||
comment_anchor['fileType']
|
||||
end
|
||||
|
||||
def from_sha
|
||||
comment_anchor['fromHash']
|
||||
end
|
||||
|
@ -44,6 +42,12 @@ module BitbucketServer
|
|||
line_type == 'REMOVED'
|
||||
end
|
||||
|
||||
# There are three line comment types: added, removed, or context.
|
||||
#
|
||||
# 1. An added type means a new line was inserted, so there is no old position.
|
||||
# 2. A removed type means a line was removed, so there is no new position.
|
||||
# 3. A context type means the line was unmodified, so there is both a
|
||||
# old and new position.
|
||||
def new_pos
|
||||
return if removed?
|
||||
return unless line_position
|
||||
|
@ -64,10 +68,30 @@ module BitbucketServer
|
|||
|
||||
private
|
||||
|
||||
def file_type
|
||||
comment_anchor['fileType']
|
||||
end
|
||||
|
||||
def line_type
|
||||
comment_anchor['lineType']
|
||||
end
|
||||
|
||||
# Each comment contains the following information about the diff:
|
||||
#
|
||||
# hunks: [
|
||||
# {
|
||||
# segments: [
|
||||
# {
|
||||
# "lines": [
|
||||
# {
|
||||
# "commentIds": [ N ],
|
||||
# "source": X,
|
||||
# "destination": Y
|
||||
# }, ...
|
||||
# ] ....
|
||||
#
|
||||
# To determine the line position of a comment, we search all the lines
|
||||
# entries until we find this comment ID.
|
||||
def line_position
|
||||
@line_position ||= diff_hunks.each do |hunk|
|
||||
segments = hunk.fetch('segments', [])
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe BitbucketServer::Representation::PullRequestComment do
|
||||
let(:activities) { JSON.parse(fixture_file('importers/bitbucket_server/activities.json'))['values'] }
|
||||
let(:comment) { activities.second }
|
||||
|
||||
subject { described_class.new(comment) }
|
||||
|
||||
describe '#id' do
|
||||
it { expect(subject.id).to eq(7) }
|
||||
end
|
||||
|
||||
describe '#from_sha' do
|
||||
it { expect(subject.from_sha).to eq('c5f4288162e2e6218180779c7f6ac1735bb56eab') }
|
||||
end
|
||||
|
||||
describe '#to_sha' do
|
||||
it { expect(subject.to_sha).to eq('a4c2164330f2549f67c13f36a93884cf66e976be') }
|
||||
end
|
||||
|
||||
describe '#to?' do
|
||||
it { expect(subject.to?).to be_falsey }
|
||||
end
|
||||
|
||||
describe '#from?' do
|
||||
it { expect(subject.from?).to be_truthy }
|
||||
end
|
||||
|
||||
describe '#added?' do
|
||||
it { expect(subject.added?).to be_falsey }
|
||||
end
|
||||
|
||||
describe '#removed?' do
|
||||
it { expect(subject.removed?).to be_falsey }
|
||||
end
|
||||
|
||||
describe '#new_pos' do
|
||||
it { expect(subject.new_pos).to eq(11) }
|
||||
end
|
||||
|
||||
describe '#old_pos' do
|
||||
it { expect(subject.old_pos).to eq(9) }
|
||||
end
|
||||
|
||||
describe '#file_path' do
|
||||
it { expect(subject.file_path).to eq('CHANGELOG.md') }
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue