Commit | Line | Data |
4740bdb7 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More; |
5 | use lib qw(t/lib); |
6 | use DBICTest; |
7 | use IO::File; |
26ddc864 |
8 | use File::Compare; |
9 | use Path::Class qw/file/; |
4740bdb7 |
10 | |
11 | my $schema = DBICTest->init_schema(); |
12 | |
5d8d8611 |
13 | plan tests => 10; |
4740bdb7 |
14 | |
26ddc864 |
15 | my $rs = $schema->resultset('FileColumn'); |
100fd57f |
16 | my $source_file = file(__FILE__); |
17 | my $fname = $source_file->basename; |
26ddc864 |
18 | my $fh = $source_file->open('r') or die "failed to open $source_file: $!\n"; |
19 | my $fc = eval { |
20 | $rs->create({ file => { handle => $fh, filename => $fname } }) |
21 | }; |
22 | is ( $@, '', 'created' ); |
23 | |
24 | $fh->close; |
25 | |
26 | my $storage = file( |
27 | $fc->column_info('file')->{file_column_path}, |
28 | $fc->id, |
29 | $fc->file->{filename}, |
30 | ); |
31 | ok ( -e $storage, 'storage exists' ); |
32 | |
33 | # read it back |
34 | $fc = $rs->find({ id => $fc->id }); |
35 | |
36 | is ( $fc->file->{filename}, $fname, 'filename matches' ); |
37 | ok ( compare($storage, $source_file) == 0, 'file contents matches' ); |
38 | |
39 | # update |
40 | my $new_fname = 'File.pm'; |
41 | my $new_source_file = file(qw/lib DBIx Class InflateColumn File.pm/); |
42 | my $new_storage = file( |
43 | $fc->column_info('file')->{file_column_path}, |
44 | $fc->id, |
45 | $new_fname, |
46 | ); |
47 | $fh = $new_source_file->open('r') or die "failed to open $new_source_file: $!\n"; |
48 | |
49 | $fc->file({ handle => $fh, filename => $new_fname }); |
50 | $fc->update; |
51 | |
52 | TODO: { |
53 | local $TODO = 'design change required'; |
54 | ok ( ! -e $storage, 'old storage does not exist' ); |
55 | }; |
56 | |
57 | ok ( -e $new_storage, 'new storage exists' ); |
58 | |
59 | # read it back |
60 | $fc = $rs->find({ id => $fc->id }); |
61 | |
62 | is ( $fc->file->{filename}, $new_fname, 'new filname matches' ); |
63 | ok ( compare($new_storage, $new_source_file) == 0, 'new content matches' ); |
64 | |
65 | $fc->delete; |
66 | |
67 | ok ( ! -e $storage, 'storage deleted' ); |
30a93e27 |
68 | |
5d8d8611 |
69 | $fh = $source_file->openr or die "failed to open $source_file: $!\n"; |
70 | $fc = $rs->create({ file => { handle => $fh, filename => $fname } }); |
30a93e27 |
71 | |
5d8d8611 |
72 | # read it back |
73 | $fc->discard_changes; |
30a93e27 |
74 | |
5d8d8611 |
75 | $storage = file( |
76 | $fc->column_info('file')->{file_column_path}, |
77 | $fc->id, |
78 | $fc->file->{filename}, |
79 | ); |
30a93e27 |
80 | |
5d8d8611 |
81 | TODO: { |
82 | local $TODO = 'need resultset delete override to delete_all'; |
30a93e27 |
83 | $rs->delete; |
84 | ok ( ! -e $storage, 'storage does not exist after $rs->delete' ); |
85 | }; |