File Coverage

blib/lib/Pithub/PullRequests.pm
Criterion Covered Total %
statement 45 46 97.8
branch 16 16 100.0
condition n/a
subroutine 13 14 92.8
pod 10 10 100.0
total 84 86 97.6


line stmt bran cond sub pod time code
1             package Pithub::PullRequests;
2             our $AUTHORITY = 'cpan:PLU';
3             our $VERSION = '0.01039';
4             # ABSTRACT: Github v3 Pull Requests API
5              
6 16     16   10098 use Moo;
  16         11748  
  16         85  
7 16     16   5790 use Carp qw( croak );
  16         41  
  16         776  
8 16     16   6308 use Pithub::PullRequests::Comments;
  16         48  
  16         408  
9 16     16   6233 use Pithub::PullRequests::Reviewers;
  16         37  
  16         9713  
10             extends 'Pithub::Base';
11              
12              
13             sub comments {
14 1     1 1 499 return shift->_create_instance('Pithub::PullRequests::Comments', @_);
15             }
16              
17              
18             sub reviewers {
19 0     0 1 0 return shift->_create_instance('Pithub::PullRequests::Reviewers', @_);
20             }
21              
22              
23             sub commits {
24 4     4 1 12825 my ( $self, %args ) = @_;
25 4 100       40 croak 'Missing key in parameters: pull_request_id' unless $args{pull_request_id};
26 3         43 $self->_validate_user_repo_args( \%args );
27             return $self->request(
28             method => 'GET',
29 3         49 path => sprintf( '/repos/%s/%s/pulls/%s/commits', delete $args{user}, delete $args{repo}, delete $args{pull_request_id} ),
30             %args,
31             );
32             }
33              
34              
35             sub create {
36 5     5 1 5194 my ( $self, %args ) = @_;
37 5 100       40 croak 'Missing key in parameters: data (hashref)' unless ref $args{data} eq 'HASH';
38 4         26 $self->_validate_user_repo_args( \%args );
39             return $self->request(
40             method => 'POST',
41 4         43 path => sprintf( '/repos/%s/%s/pulls', delete $args{user}, delete $args{repo} ),
42             %args,
43             );
44             }
45              
46              
47             sub files {
48 4     4 1 3736 my ( $self, %args ) = @_;
49 4 100       32 croak 'Missing key in parameters: pull_request_id' unless $args{pull_request_id};
50 3         20 $self->_validate_user_repo_args( \%args );
51             return $self->request(
52             method => 'GET',
53 3         38 path => sprintf( '/repos/%s/%s/pulls/%s/files', delete $args{user}, delete $args{repo}, delete $args{pull_request_id} ),
54             %args,
55             );
56             }
57              
58              
59             sub get {
60 4     4 1 3643 my ( $self, %args ) = @_;
61 4 100       32 croak 'Missing key in parameters: pull_request_id' unless $args{pull_request_id};
62 3         22 $self->_validate_user_repo_args( \%args );
63             return $self->request(
64             method => 'GET',
65 3         37 path => sprintf( '/repos/%s/%s/pulls/%s', delete $args{user}, delete $args{repo}, delete $args{pull_request_id} ),
66             %args,
67             );
68             }
69              
70              
71             sub is_merged {
72 4     4 1 4069 my ( $self, %args ) = @_;
73 4 100       32 croak 'Missing key in parameters: pull_request_id' unless $args{pull_request_id};
74 3         21 $self->_validate_user_repo_args( \%args );
75             return $self->request(
76             method => 'GET',
77 3         36 path => sprintf( '/repos/%s/%s/pulls/%s/merge', delete $args{user}, delete $args{repo}, delete $args{pull_request_id} ),
78             %args,
79             );
80             }
81              
82              
83             sub list {
84 14     14 1 3088 my ( $self, %args ) = @_;
85 14         81 $self->_validate_user_repo_args( \%args );
86             return $self->request(
87             method => 'GET',
88 10         76 path => sprintf( '/repos/%s/%s/pulls', delete $args{user}, delete $args{repo} ),
89             %args,
90             );
91             }
92              
93              
94             sub merge {
95 5     5 1 4919 my ( $self, %args ) = @_;
96 5 100       33 croak 'Missing key in parameters: pull_request_id' unless $args{pull_request_id};
97 4         25 $self->_validate_user_repo_args( \%args );
98             return $self->request(
99             method => 'PUT',
100 4         44 path => sprintf( '/repos/%s/%s/pulls/%s/merge', delete $args{user}, delete $args{repo}, delete $args{pull_request_id} ),
101             %args,
102             );
103             }
104              
105              
106             sub update {
107 6     6 1 5421 my ( $self, %args ) = @_;
108 6 100       44 croak 'Missing key in parameters: pull_request_id' unless $args{pull_request_id};
109 5 100       25 croak 'Missing key in parameters: data (hashref)' unless ref $args{data} eq 'HASH';
110 4         25 $self->_validate_user_repo_args( \%args );
111             return $self->request(
112             method => 'PATCH',
113 4         45 path => sprintf( '/repos/%s/%s/pulls/%s', delete $args{user}, delete $args{repo}, delete $args{pull_request_id} ),
114             %args,
115             );
116             }
117              
118             1;
119              
120             __END__