reuse common testing code in a base class
[gitmo/MooseX-ConfigFromFile.git] / t / 05_default_sub.t
CommitLineData
7acf2fe9 1use strict;
bd567467 2use warnings FATAL => 'all';
7acf2fe9 3
0864e862 4use Test::Requires 'MooseX::SimpleConfig'; # skip all if not reuqired
233548dd 5use Test::More tests => 11;
7acf2fe9 6use Test::Fatal;
7use Test::Deep '!blessed';
8use Test::NoWarnings 1.04 ':early';
9use Scalar::Util 'blessed';
10
11my %loaded_file;
12my %default_sub;
13
14
15# nothing special going on here
16{
17 package Generic;
18 use Moose;
19 with 'MooseX::SimpleConfig';
233548dd 20 sub get_config_from_file
21 {
22 my ($class, $file) = @_;
23 $loaded_file{$file}++;
24 +{}
25 }
7acf2fe9 26}
27
28is(
29 exception {
30 my $obj = Generic->new_with_config;
31 is($obj->configfile, undef, 'no configfile set');
233548dd 32 cmp_deeply(\%loaded_file, {}, 'no files loaded');
7acf2fe9 33 },
34 undef,
35 'no exceptions',
36);
37
38
39# this is a classic legacy usecase from old documentation that we must
40# continue to support
41{
42 package OverriddenDefault;
43 use Moose;
233548dd 44 extends 'Generic';
7acf2fe9 45 has '+configfile' => (
46 default => 'OverriddenDefault file',
47 );
48}
49
50is(
51 exception {
52 my $obj = OverriddenDefault->new_with_config;
53 is($obj->configfile, blessed($obj) . ' file', 'configfile set via overridden default');
54 is($loaded_file{blessed($obj) . ' file'}, 1, 'correct file was loaded from');
55 },
56 undef,
57 'no exceptions',
58);
59
60
61# "reader" method is overridden to provide for configfile default
62{
63 package OverriddenMethod;
64 use Moose;
233548dd 65 extends 'Generic';
7acf2fe9 66 around configfile => sub {
67 my $class = blessed($_[1]) || $_[1];
68 $default_sub{$class}++;
69 $class . ' file'
70 };
71}
72
73is(
74 exception {
75 my $obj = OverriddenMethod->new_with_config;
76 is($obj->configfile, blessed($obj) . ' file', 'configfile set via overridden sub');
77 ok($default_sub{blessed($obj)}, 'default sub was called');
78 is($loaded_file{blessed($obj) . ' file'}, 1, 'correct file was loaded from');
79 },
80 undef,
81 'no exceptions',
82);
83
84