File Coverage

blib/lib/Net/Google/Code/Role/Predefined.pm
Criterion Covered Total %
statement 40 42 95.2
branch 5 10 50.0
condition 1 3 33.3
subroutine 5 5 100.0
pod 1 1 100.0
total 52 61 85.2


line stmt bran cond sub pod time code
1             package Net::Google::Code::Role::Predefined;
2 10     10   7550 use Any::Moose 'Role';
  10         61  
  10         74  
3 10     10   4697 use Params::Validate ':all';
  10         22  
  10         2158  
4 10     10   6719 use JSON;
  10         98844  
  10         84  
5             with 'Net::Google::Code::Role::Fetchable';
6              
7             has 'predefined_status' => (
8             isa => 'HashRef',
9             is => 'rw',
10             );
11              
12             has 'predefined_labels' => (
13             isa => 'ArrayRef',
14             is => 'rw',
15             );
16              
17 10     10   2005 no Any::Moose;
  10         23  
  10         108  
18              
19             sub load_predefined {
20 1     1 1 6 my $self = shift;
21 1   33     5 my $class = ref $self || $self;
22 1         2 my $last_name;
23 1 50       10 $last_name = lc $1 if $class =~ /::(\w+)$/;
24              
25 1 50       4 return unless $self->signed_in;
26 1         11 my $base_url = $self->base_url;
27 1         6 my $content = $self->fetch($self->base_url);
28 1 50       8 if ( $content =~ /codesite_token\s*=\s*"(\w+)"/ ) {
29 1         2 my $token = $1;
30 1         6 my $mech = $self->mech;
31             # I tried to use $mech->post( $url, token => $token )
32             # but without luck :(
33 1         12 $mech->update_html(<<"EOF");
34            
35             method="POST" >
36            
37            
38            
39             EOF
40 1         8 $mech->submit_form( form_number => 1 );
41 1 50       8 die "failed to post to OptionsJSON page" unless $mech->success;
42              
43 1         10 my $js = $mech->content;
44 1         11 my $object = from_json $js;
45 1 50       102 return unless $object;
46              
47 1         18 $self->predefined_status( { open => [], closed => [] } );
48 1         3 for my $type (qw/open closed/) {
49 2         4 for ( @{ $object->{$type} } ) {
  2         5  
50 9         9 push @{ $self->predefined_status->{$type} }, $_->{name};
  9         27  
51             }
52             }
53              
54 1         13 $self->predefined_labels( [] );
55 1         2 for ( @{ $object->{labels} } ) {
  1         4  
56 23         21 push @{ $self->predefined_labels }, $_->{name};
  23         51  
57             }
58              
59 1         21 return 1;
60             }
61             else {
62 0           warn "can't get user token";
63 0           return;
64             }
65              
66             }
67              
68             1;
69              
70             __END__