correct symlink generation
[engit/Iron-Munger.git] / t / stats_saver.t
CommitLineData
13a79a43 1use strict;
2use warnings;
3use Test::More qw(no_plan);
79810d7d 4use IO::All;
b5b2a791 5use File::Temp ();
6
7sub tempdir {
8 if ($ENV{UNCLEAN_TEMP}) {
9 my $dir = File::Temp::tempdir;
10 warn $dir;
11 return $dir;
12 }
13 return File::Temp::tempdir(CLEANUP => 1);
14}
13a79a43 15
16BEGIN { use_ok aliased => 'IronMunger::StatsSaver'; }
79810d7d 17BEGIN { use_ok aliased => 'IronMunger::Monger'; }
13a79a43 18
19ok(
20 (my $saver = StatsSaver->new(dir => 'X')),
21 'Constructed object ok'
22);
23
24is(
25 $saver->_image_symlink_target('male','iron'), 'X/badges/male/iron.png',
26 'Symlink target ok',
27);
28
29is(
79810d7d 30 $saver->_image_symlink_from('mst', 'female'), 'X/mybadge/female/mst.png',
13a79a43 31 'Symlink from ok',
32);
79810d7d 33
34my $monger = Monger->new(
35 nick => 'mst',
36 posts => []
37);
38
39is($monger->level, 'paper', 'mst sucks');
40
b5b2a791 41my $dir = tempdir;
79810d7d 42
43$saver = StatsSaver->new(dir => $dir);
44
45$saver->_write_symlinks_for($monger);
46
b5b2a791 47my $bdir = io("${dir}/badges");
48
49my $mbdir = io("${dir}/mybadge");
50
51my %found_links;
52do {
53 my @l = $mbdir->all_links(2);
54 @found_links{@l} = (1) x scalar @l;
55};
56
57foreach my $gender (qw(male female)) {
58 my $desc = "${gender} symlink";
59 my $l = io("${mbdir}/${gender}/mst.png");
60 ok($l->is_link, "${desc} exists");
61 is(
62 $l->readlink, "${bdir}/${gender}/paper.png",
63 "${desc} points to right target",
64 );
65 ok(delete $found_links{$l}, "${desc} in link list");
66}
79810d7d 67
b5b2a791 68ok(!(keys %found_links), 'all links accounted for');