Commit | Line | Data |
418e2ac2 |
1 | #!/usr/bin/perl |
2 | use strictures 1; |
3 | use autodie; |
2a007b5a |
4 | use Test::Most; |
418e2ac2 |
5 | |
6 | use File::Temp (); |
7 | use Path::Class; |
418e2ac2 |
8 | |
9 | use aliased 'Promulger::List'; |
10 | # no alias here so we don't risk colliding with perl's own Config.pm -- apeiron, |
11 | # 2011-09-04 |
12 | use Promulger::Config; |
13 | |
14 | { |
15 | my $raw_pmg_home = File::Temp->newdir; |
16 | my $pmg_home = dir($raw_pmg_home); |
17 | |
18 | my $aliases = $pmg_home->file('aliases'); |
19 | my $aliases_fh = $aliases->openw; |
20 | close $aliases_fh; |
21 | |
22 | my $list_home = $pmg_home->subdir('lists'); |
23 | $list_home->mkpath; |
24 | |
25 | my $config_file = $pmg_home->file('pmg.conf'); |
26 | my $config_fh = $config_file->openw; |
27 | print $config_fh <<"CONFIG"; |
28 | mailer = Test |
29 | aliases = $aliases |
30 | list_home = $list_home |
31 | CONFIG |
32 | |
33 | close $config_fh; |
34 | my $config = Promulger::Config->load_config($config_file); |
35 | my $list; |
36 | lives_ok { $list = List->new( |
37 | listname => 'foo', |
38 | active => 1, |
39 | subscribers => {}, |
40 | ) } "can create a list"; |
41 | lives_ok { $list->setup } "can setup a list"; |
42 | |
43 | cmp_ok( |
44 | $list->listname, |
45 | 'eq', |
46 | 'foo', |
47 | "list has same listname as one we specified", |
48 | ); |
49 | cmp_ok( |
50 | $list->active, |
51 | '==', |
52 | 1, |
53 | "list is active, like the one we specified", |
54 | ); |
55 | cmp_deeply( |
56 | $list->subscribers, |
57 | {}, |
58 | "list has no subscribers for now, like the one we specified", |
59 | ); |
60 | |
61 | my $resolved_list = List->resolve('foo'); |
62 | cmp_ok( |
63 | $resolved_list->listname, |
64 | 'eq', |
65 | 'foo', |
66 | "resolved list has same listname as one we created", |
67 | ); |
68 | cmp_ok( |
69 | $resolved_list->active, |
70 | '==', |
71 | 1, |
72 | "resolved list is active, like the one we created", |
73 | ); |
74 | cmp_deeply( |
75 | $resolved_list->subscribers, |
76 | {}, |
77 | "resolved list has no subscribers for now, like the one we created", |
78 | ); |
79 | |
80 | lives_ok { $list->subscribe('foo@example.com') } "can subscribe someone"; |
5e1977ec |
81 | $list = List->resolve('foo'); |
82 | cmp_deeply( |
83 | $list->subscribers, |
84 | { |
85 | 'foo@example.com' => 1, |
86 | }, |
87 | "subscribing a user adds them to the serialized data", |
88 | ); |
89 | lives_ok { $list->unsubscribe('foo@example.com') } "can unsubscribe someone"; |
90 | $list = List->resolve('foo'); |
91 | cmp_deeply( |
92 | $list->subscribers, |
93 | { }, |
94 | "unsubscribing a user removes them from the serialized data", |
95 | ); |
418e2ac2 |
96 | } |
97 | |
98 | done_testing; |