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.01041';
4              
5             # ABSTRACT: Github v3 Pull Requests API
6              
7 17     17   11590 use Moo;
  17         12869  
  17         103  
8 17     17   6899 use Carp qw( croak );
  17         40  
  17         1219  
9 17     17   8054 use Pithub::PullRequests::Comments ();
  17         59  
  17         427  
10 17     17   7875 use Pithub::PullRequests::Reviewers ();
  17         52  
  17         12281  
11             extends 'Pithub::Base';
12              
13              
14             sub comments {
15 1     1 1 518 return shift->_create_instance( Pithub::PullRequests::Comments::, @_ );
16             }
17              
18              
19             sub reviewers {
20 0     0 1 0 return shift->_create_instance( Pithub::PullRequests::Reviewers::, @_ );
21             }
22              
23              
24             sub commits {
25 4     4 1 14077 my ( $self, %args ) = @_;
26             croak 'Missing key in parameters: pull_request_id'
27 4 100       34 unless $args{pull_request_id};
28 3         24 $self->_validate_user_repo_args( \%args );
29             return $self->request(
30             method => 'GET',
31             path => sprintf(
32             '/repos/%s/%s/pulls/%s/commits', delete $args{user},
33             delete $args{repo}, delete $args{pull_request_id}
34 3         48 ),
35             %args,
36             );
37             }
38              
39              
40             sub create {
41 5     5 1 4460 my ( $self, %args ) = @_;
42             croak 'Missing key in parameters: data (hashref)'
43 5 100       36 unless ref $args{data} eq 'HASH';
44 4         21 $self->_validate_user_repo_args( \%args );
45             return $self->request(
46             method => 'POST',
47             path => sprintf(
48             '/repos/%s/%s/pulls', delete $args{user}, delete $args{repo}
49 4         45 ),
50             %args,
51             );
52             }
53              
54              
55             sub files {
56 4     4 1 3304 my ( $self, %args ) = @_;
57             croak 'Missing key in parameters: pull_request_id'
58 4 100       29 unless $args{pull_request_id};
59 3         15 $self->_validate_user_repo_args( \%args );
60             return $self->request(
61             method => 'GET',
62             path => sprintf(
63             '/repos/%s/%s/pulls/%s/files', delete $args{user},
64             delete $args{repo}, delete $args{pull_request_id}
65 3         46 ),
66             %args,
67             );
68             }
69              
70              
71             sub get {
72 4     4 1 3308 my ( $self, %args ) = @_;
73             croak 'Missing key in parameters: pull_request_id'
74 4 100       34 unless $args{pull_request_id};
75 3         16 $self->_validate_user_repo_args( \%args );
76             return $self->request(
77             method => 'GET',
78             path => sprintf(
79             '/repos/%s/%s/pulls/%s', delete $args{user}, delete $args{repo},
80             delete $args{pull_request_id}
81 3         42 ),
82             %args,
83             );
84             }
85              
86              
87             sub is_merged {
88 4     4 1 3226 my ( $self, %args ) = @_;
89             croak 'Missing key in parameters: pull_request_id'
90 4 100       26 unless $args{pull_request_id};
91 3         17 $self->_validate_user_repo_args( \%args );
92             return $self->request(
93             method => 'GET',
94             path => sprintf(
95             '/repos/%s/%s/pulls/%s/merge', delete $args{user},
96             delete $args{repo}, delete $args{pull_request_id}
97 3         33 ),
98             %args,
99             );
100             }
101              
102              
103             sub list {
104 14     14 1 2864 my ( $self, %args ) = @_;
105 14         62 $self->_validate_user_repo_args( \%args );
106             return $self->request(
107             method => 'GET',
108             path => sprintf(
109             '/repos/%s/%s/pulls', delete $args{user}, delete $args{repo}
110 10         90 ),
111             %args,
112             );
113             }
114              
115              
116             sub merge {
117 5     5 1 4388 my ( $self, %args ) = @_;
118             croak 'Missing key in parameters: pull_request_id'
119 5 100       33 unless $args{pull_request_id};
120 4         21 $self->_validate_user_repo_args( \%args );
121             return $self->request(
122             method => 'PUT',
123             path => sprintf(
124             '/repos/%s/%s/pulls/%s/merge', delete $args{user},
125             delete $args{repo}, delete $args{pull_request_id}
126 4         63 ),
127             %args,
128             );
129             }
130              
131              
132             sub update {
133 6     6 1 5131 my ( $self, %args ) = @_;
134             croak 'Missing key in parameters: pull_request_id'
135 6 100       40 unless $args{pull_request_id};
136             croak 'Missing key in parameters: data (hashref)'
137 5 100       33 unless ref $args{data} eq 'HASH';
138 4         30 $self->_validate_user_repo_args( \%args );
139             return $self->request(
140             method => 'PATCH',
141             path => sprintf(
142             '/repos/%s/%s/pulls/%s', delete $args{user}, delete $args{repo},
143             delete $args{pull_request_id}
144 4         49 ),
145             %args,
146             );
147             }
148              
149             1;
150              
151             __END__