File Coverage

blib/lib/WWW/Gitea/PullRequest.pm
Criterion Covered Total %
statement 20 45 44.4
branch 8 18 44.4
condition n/a
subroutine 8 23 34.7
pod 18 18 100.0
total 54 104 51.9


line stmt bran cond sub pod time code
1             package WWW::Gitea::PullRequest;
2              
3             # ABSTRACT: Gitea pull request entity
4              
5 3     3   16 use Moo;
  3         5  
  3         15  
6 3     3   892 use namespace::clean;
  3         5  
  3         22  
7              
8              
9             has _client => (
10             is => 'ro',
11             required => 1,
12             weak_ref => 1,
13             init_arg => 'client',
14             );
15              
16             has data => (
17             is => 'rw',
18             required => 1,
19             );
20              
21              
22             has owner => ( is => 'ro' );
23             has repo => ( is => 'ro' );
24              
25              
26 2 50   2   12 sub _base_repo { $_[0]->data->{base} ? $_[0]->data->{base}{repo} : undef }
27              
28             sub _owner {
29 1     1   3 my ($self) = @_;
30 1 50       6 return $self->owner if defined $self->owner;
31 1 50       5 my $r = $self->_base_repo or return undef;
32 1 50       4 return $r->{owner} ? $r->{owner}{login} : undef;
33             }
34              
35             sub _repo {
36 1     1   3 my ($self) = @_;
37 1 50       4 return $self->repo if defined $self->repo;
38 1 50       2 my $r = $self->_base_repo or return undef;
39 1         5 return $r->{name};
40             }
41              
42 0     0 1 0 sub id { $_[0]->data->{id} }
43 1     1 1 1213 sub number { $_[0]->data->{number} }
44 0     0 1 0 sub title { $_[0]->data->{title} }
45 0     0 1 0 sub body { $_[0]->data->{body} }
46 0     0 1 0 sub state { $_[0]->data->{state} }
47 0     0 1 0 sub merged { $_[0]->data->{merged} }
48 0     0 1 0 sub mergeable { $_[0]->data->{mergeable} }
49 0     0 1 0 sub html_url { $_[0]->data->{html_url} }
50 0     0 1 0 sub created_at { $_[0]->data->{created_at} }
51 0     0 1 0 sub updated_at { $_[0]->data->{updated_at} }
52 0 0   0 1 0 sub user_login { my $u = $_[0]->data->{user}; $u ? $u->{login} : undef }
  0         0  
53 1 50   1 1 4 sub head_branch { my $h = $_[0]->data->{head}; $h ? $h->{ref} : undef }
  1         6  
54 1 50   1 1 5 sub base_branch { my $b = $_[0]->data->{base}; $b ? $b->{ref} : undef }
  1         5  
55              
56              
57             sub refresh {
58 0     0 1   my ($self) = @_;
59 0           my $fresh = $self->_client->pulls->get($self->_owner, $self->_repo, $self->number);
60 0           $self->data($fresh->data);
61 0           return $self;
62             }
63              
64              
65             sub edit {
66 0     0 1   my ($self, %args) = @_;
67 0           my $fresh = $self->_client->pulls->edit(
68             $self->_owner, $self->_repo, $self->number, %args);
69 0           $self->data($fresh->data);
70 0           return $self;
71             }
72              
73              
74             sub merge {
75 0     0 1   my ($self, %args) = @_;
76 0           return $self->_client->pulls->merge(
77             $self->_owner, $self->_repo, $self->number, %args);
78             }
79              
80              
81             sub is_merged {
82 0     0 1   my ($self) = @_;
83 0           return $self->_client->pulls->is_merged(
84             $self->_owner, $self->_repo, $self->number);
85             }
86              
87              
88             sub close {
89 0     0 1   my ($self) = @_;
90 0           return $self->edit(state => 'closed');
91             }
92              
93              
94              
95             1;
96              
97             __END__