File Coverage

blib/lib/Data/Chronicle/Mock.pm
Criterion Covered Total %
statement 25 37 67.5
branch n/a
condition n/a
subroutine 9 10 90.0
pod 1 1 100.0
total 35 48 72.9


line stmt bran cond sub pod time code
1             package Data::Chronicle::Mock;
2              
3             =head1 NAME
4              
5             Data::Chronicle::Mock - Mokcing utility to test chronicle based scenarios
6              
7             =cut
8              
9 1     1   84661 use 5.014;
  1         3  
10 1     1   9 use strict;
  1         1  
  1         17  
11 1     1   2 use warnings;
  1         1  
  1         21  
12              
13 1     1   1322 use DBI;
  1         13019  
  1         92  
14 1     1   505 use Test::PostgreSQL;
  1         166494  
  1         57  
15 1     1   625 use Test::Mock::Redis;
  1         50236  
  1         19  
16 1     1   521 use Data::Chronicle::Reader;
  1         3  
  1         34  
17 1     1   489 use Data::Chronicle::Writer;
  1         4  
  1         210  
18              
19             our $VERSION = '0.15'; ## VERSION
20              
21             =head3 C<< my $ch = get_mocked_chronicle(); >>
22              
23             Creates a simulated chronicle connected to a temporary storage.
24              
25             =cut
26              
27             sub get_mocked_chronicle {
28 1     1 1 2265 my $redis = Test::Mock::Redis->new(server => 'whatever');
29              
30 1         177 my $pgsql = Test::PostgreSQL->new();
31 0           my $dbh = DBI->connect($pgsql->dsn);
32              
33 0           my $stmt = qq(CREATE TABLE chronicle (
34             id bigserial,
35             timestamp TIMESTAMP DEFAULT NOW(),
36             category VARCHAR(255),
37             name VARCHAR(255),
38             value TEXT,
39             PRIMARY KEY(id),
40             CONSTRAINT search_index UNIQUE(category,name,timestamp)
41             ););
42              
43             {
44 0     0     local $SIG{__WARN__} = sub { };
  0            
45 0           $dbh->do($stmt);
46             }
47              
48 0           my $chronicle_r = Data::Chronicle::Reader->new(
49             cache_reader => $redis,
50             db_handle => $dbh
51             );
52              
53 0           my $chronicle_w = Data::Chronicle::Writer->new(
54             cache_writer => $redis,
55             db_handle => $dbh,
56             ttl => 86400
57             );
58              
59             #we need to store a reference to $pgsql or else, as soon as this method
60             #is returned, it will be destroyed and connection will be lost.
61 0           $chronicle_r->meta->add_attribute(
62             dummy => (
63             accessor => 'dummy',
64             ));
65              
66 0           $chronicle_w->meta->add_attribute(
67             dummy => (
68             accessor => 'dummy',
69             ));
70              
71 0           $chronicle_r->dummy($pgsql);
72 0           $chronicle_w->dummy($pgsql);
73              
74 0           return ($chronicle_r, $chronicle_w);
75             }
76              
77             1;