Initial commit
[dbsrgits/DBIx-Class-Journal.git] / t / 01test.t
1 use strict;
2 use warnings;  
3
4 use Test::More;
5 use lib qw(t/lib);
6 use DBICTest;
7 use Data::Dumper;
8
9 BEGIN {
10     eval "use DBD::SQLite";
11     plan $@
12         ? ( skip_all => 'needs DBD::SQLite for testing' )
13         : ( tests => 12 );
14 }
15
16 my $schema = DBICTest->init_schema(no_populate => 1);
17
18 ok($schema, 'Created a Schema');
19 isa_ok($schema->_journal_schema, 'DBIx::Class::Schema::Journal::DB', 'Actually have a schema object for the journaling');
20 isa_ok($schema->_journal_schema->source('CDAuditHistory'), 'DBIx::Class::ResultSource', 'CDAuditHistory source exists');
21 isa_ok($schema->_journal_schema->source('ArtistAuditLog'), 'DBIx::Class::ResultSource', 'ArtistAuditLog source exists');
22
23 my $artist;
24 my $new_cd = $schema->txn_do( sub {
25     $artist = $schema->resultset('Artist')->create({
26         name => 'Fred Bloggs',
27     });
28     return  $schema->resultset('CD')->create({
29         title => 'Angry young man',
30         artist => $artist,
31         year => 2000,
32     });
33 });
34 isa_ok($new_cd, 'DBIx::Class::Journal', 'Created CD object');
35
36 my $search = $schema->_journal_schema->resultset('CDAuditLog')->search();
37 ok($search->count, 'Created an entry in the CD audit log');
38
39 $schema->txn_do( sub {
40     $new_cd->year(2003);
41     $new_cd->update;
42 } );
43
44 is($new_cd->year, 2003,  'Changed year to 2003');
45 my $cdah = $schema->_journal_schema->resultset('CDAuditHistory')->search();
46 ok($cdah->count, 'Created an entry in the CD audit history');
47
48 $schema->txn_do( sub {
49     $schema->resultset('CD')->create({
50         title => 'Something',
51         artist => $artist,
52         year => 1999,
53     });
54 } );
55
56 $schema->txn_do( sub {
57     $new_cd->delete;
58 } );
59
60 my $alentry = $search->find({ ID => $new_cd->get_column($new_cd->primary_columns) });
61 ok(defined($alentry->deleted), 'Deleted set in audit_log');
62
63 $schema->changeset_user(1);
64 $schema->txn_do( sub {
65     $schema->resultset('CD')->create({
66         title => 'Something 2',
67         artist => $artist,
68         year => 1999,
69     });
70 } );
71
72 ok($search->count > 1, 'Created an second entry in the CD audit history');
73
74 my $cset = $schema->_journal_schema->resultset('ChangeSet')->find(5);
75 is($cset->user_id, 1, 'Set user id for 5th changeset');
76
77 $schema->changeset_session(1);
78 $schema->txn_do( sub {
79     $schema->resultset('CD')->create({
80         title => 'Something 3',
81         artist => $artist,
82         year => 1999,
83     });
84 } );
85
86 my $cset2 = $schema->_journal_schema->resultset('ChangeSet')->find(6);
87 is($cset2->session_id, 1, 'Set session id for 6th changeset');
88