Commit | Line | Data |
13a79a43 |
1 | use strict; |
2 | use warnings; |
3 | use Test::More qw(no_plan); |
79810d7d |
4 | use IO::All; |
b5b2a791 |
5 | use File::Temp (); |
6 | |
7 | sub 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 | |
16 | BEGIN { use_ok aliased => 'IronMunger::StatsSaver'; } |
79810d7d |
17 | BEGIN { use_ok aliased => 'IronMunger::Monger'; } |
13a79a43 |
18 | |
19 | ok( |
20 | (my $saver = StatsSaver->new(dir => 'X')), |
21 | 'Constructed object ok' |
22 | ); |
23 | |
24 | is( |
ce84e9d9 |
25 | $saver->_image_symlink_target('male','iron'), '../../badges/male/iron.png', |
13a79a43 |
26 | 'Symlink target ok', |
27 | ); |
28 | |
29 | is( |
79810d7d |
30 | $saver->_image_symlink_from('mst', 'female'), 'X/mybadge/female/mst.png', |
13a79a43 |
31 | 'Symlink from ok', |
32 | ); |
79810d7d |
33 | |
34 | my $monger = Monger->new( |
35 | nick => 'mst', |
36 | posts => [] |
37 | ); |
38 | |
39 | is($monger->level, 'paper', 'mst sucks'); |
40 | |
b5b2a791 |
41 | my $dir = tempdir; |
79810d7d |
42 | |
43 | $saver = StatsSaver->new(dir => $dir); |
44 | |
45 | $saver->_write_symlinks_for($monger); |
46 | |
b5b2a791 |
47 | my $bdir = io("${dir}/badges"); |
48 | |
49 | my $mbdir = io("${dir}/mybadge"); |
50 | |
51 | my %found_links; |
52 | do { |
53 | my @l = $mbdir->all_links(2); |
54 | @found_links{@l} = (1) x scalar @l; |
55 | }; |
56 | |
57 | foreach 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 |
68 | ok(!(keys %found_links), 'all links accounted for'); |