From 8066da49310e188cc38a449b2b6e903fe1130c59 Mon Sep 17 00:00:00 2001 From: Andrew Maraev Date: Thu, 8 Sep 2016 20:54:27 +0400 Subject: [PATCH 1/2] API 2.0 Commit endpoint * Implemented class BitBucket::Repos::Commit * New method Repos.#commit to access API 2.0 Commit endpoint --- lib/bitbucket_rest_api/repos.rb | 6 ++++++ lib/bitbucket_rest_api/repos/commit.rb | 15 +++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 lib/bitbucket_rest_api/repos/commit.rb diff --git a/lib/bitbucket_rest_api/repos.rb b/lib/bitbucket_rest_api/repos.rb index b4d83fb..e118e89 100644 --- a/lib/bitbucket_rest_api/repos.rb +++ b/lib/bitbucket_rest_api/repos.rb @@ -13,6 +13,7 @@ class Repos < API :Sources => 'sources', :Forks => 'forks', :Commits => 'commits', + :Commit => 'commit', :Download => 'download', :Webhooks => 'webhooks', :PullRequest => 'pull_request', @@ -75,6 +76,11 @@ def forks def commits @commits ||=ApiFactory.new 'Repos::Commits' end + + def commit + @commit ||= ApiFactory.new 'Repos::Commit' + end + def download @download ||=ApiFactory.new "Repos::Download" end diff --git a/lib/bitbucket_rest_api/repos/commit.rb b/lib/bitbucket_rest_api/repos/commit.rb new file mode 100644 index 0000000..c028ec9 --- /dev/null +++ b/lib/bitbucket_rest_api/repos/commit.rb @@ -0,0 +1,15 @@ +# encoding: utf-8 + +module BitBucket + class Repos::Commit < API + + def get(user_name, repo_name, revision) + _update_user_repo_params(user_name, repo_name) + _validate_user_repo_params(user, repo) unless user? && repo? + + path = "/2.0/repositories/#{user}/#{repo.downcase}/commit/#{revision}" + get_request(path) + end + + end # Repos::Commits +end # BitBucket From e686f1d14896cc02962f4f0a5e53e695d9c735ed Mon Sep 17 00:00:00 2001 From: Andrew Maraev Date: Fri, 9 Sep 2016 02:00:21 -0400 Subject: [PATCH 2/2] Added tests to cover API 2.0 Commit endpoint --- spec/bitbucket_rest_api/repos/commit_spec.rb | 20 ++++++++++++++++++++ spec/bitbucket_rest_api/repos_spec.rb | 1 + 2 files changed, 21 insertions(+) create mode 100644 spec/bitbucket_rest_api/repos/commit_spec.rb diff --git a/spec/bitbucket_rest_api/repos/commit_spec.rb b/spec/bitbucket_rest_api/repos/commit_spec.rb new file mode 100644 index 0000000..6c2e5d1 --- /dev/null +++ b/spec/bitbucket_rest_api/repos/commit_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe BitBucket::Repos::Commit do + let(:commit) { BitBucket::Repos::Commit.new } + + describe '.get' do + before do + expect(commit).to receive(:request).with( + :get, + '/2.0/repositories/mock_username/mock_repo/commit/557557b267628ccc3060de76c16eb9c269e4576c', + {}, + {} + ) + end + + it 'should send a GET request for the commit with given hash belonging to the given repo' do + commit.get('mock_username', 'mock_repo', '557557b267628ccc3060de76c16eb9c269e4576c') + end + end +end diff --git a/spec/bitbucket_rest_api/repos_spec.rb b/spec/bitbucket_rest_api/repos_spec.rb index 822e02d..07be83b 100644 --- a/spec/bitbucket_rest_api/repos_spec.rb +++ b/spec/bitbucket_rest_api/repos_spec.rb @@ -149,6 +149,7 @@ expect(repo.keys).to be_a BitBucket::Repos::Keys expect(repo.following).to be_a BitBucket::Repos::Following expect(repo.commits).to be_a BitBucket::Repos::Commits + expect(repo.commit).to be_a BitBucket::Repos::Commit expect(repo.pull_request).to be_a BitBucket::Repos::PullRequest expect(repo.forks).to be_a BitBucket::Repos::Forks expect(repo.download).to be_a BitBucket::Repos::Download