add support to TestMode plugin for forcing conf vars to be treated as absolute or...
[sgn.git] / t / SGN / Role / Site / TestMode.t
blob1bee3cee5d3ca85a7c52283dd3e3595d843f4246
1 use strict;
2 use warnings;
4 use Test::More;
6 my $config_1 = sub { +{
7     foo  => 'bar',
8     bee  => [qw( bal /bas bo )],
9     quux => {
10         zoom => ['/zow','zee'],
11         noggin => '/fogbat',
12         bunk => 'bonk',
13         snorg => '/tees',
14     },
15     dog  => '/cat',
16     'REL!!' => '/foo/shouldberel',
17     '!!ABS' => '/bar/shouldbeabs',
19     'Plugin::TestMode' => {
20         reroot_conf => [
21             '/quux/zoom',
22             '/big/long/thing/that/does/not/exist',
23             'zaz/zoz',
24             'quux/bunk',
25             '/quux/snorg',
26             '(rel)REL!!',
27             '(abs)!!ABS',
28            ],
29         test_data_dir => '/path/to/app/t/data',
30     },
31 }};
33 my $rerooted_1 = {
34   'Plugin::TestMode' => {
35     'reroot_conf' => [
36       '/quux/zoom',
37       '/big/long/thing/that/does/not/exist',
38       'zaz/zoz',
39       'quux/bunk',
40       '/quux/snorg',
41       '(rel)REL!!',
42       '(abs)!!ABS',
43     ],
44     'test_data_dir' => '/path/to/app/t/data'
45   },
47   'REL!!' => '/../../app/t/data/foo/shouldberel',
48   '!!ABS' => '/path/to/app/t/data/bar/shouldbeabs',
50   'bee' => [
51     'bal',
52     '/bas',
53     'bo'
54   ],
55   'dog' => '/cat',
56   'foo' => 'bar',
57   'quux' => {
58     'noggin' => '/fogbat',
59     'zoom' => [
60       '/path/to/app/t/data/zow',
61       '../../app/t/data/zee'
62     ],
63     bunk => '../../app/t/data/bonk',
64     snorg => '/path/to/app/t/data/tees',
65   }
70     local $ENV{MOCK_APP_TEST_MODE} = 1;
71     my $c = mock_app->new( config => $config_1->() );
72     $c->finalize_config;
74     is_deeply( $c->config, $rerooted_1, 'test-mode configuration worked' )
75         or diag 'actual config:', explain $c->config;
80     local $ENV{MOCK_APP_TEST_MODE} = undef;
81     my $c = mock_app->new;
82     $c->config( $config_1->() );
83     $c->finalize_config;
85     is_deeply( $c->config, $config_1->(), 'non-test configuration worked' )
86         or diag 'actual config:', explain $c->config;
90 done_testing;
92 ###############
94 BEGIN {
95     package mock_app;
96     use Moose;
98     has 'config' => (
99         is => 'rw',
100         isa => 'HashRef',
101        );
103     with 'SGN::Role::Site::TestMode';
105     sub finalize_config {};
107     sub path_to {
108         shift;
109         return File::Spec->catfile(
110             File::Spec->rootdir,
111             qw( path to mock app ),
112             @_
113            );
114     }