Remove small_datetime from the main schema - it is not a standard datatype
[dbsrgits/DBIx-Class.git] / xt / optional_deps.t
CommitLineData
05c0614b 1use strict;
2use warnings;
3no warnings qw/once/;
4
5use Test::More;
6use lib qw(t/lib);
7use Scalar::Util; # load before we break require()
d8799bab 8use Carp (); # Carp is not used in the test, but we want to have it loaded for proper %INC comparison
3c3e76bd 9
10# a dummy test which lazy-loads more modules (so we can compare INC below)
11ok (1);
12
13# record contents of %INC - makes sure there are no extra deps slipping into
14# Opt::Dep.
15my $inc_before = [ keys %INC ];
16ok ( (! grep { $_ =~ m|DBIx/Class| } @$inc_before ), 'Nothing DBIC related is yet loaded');
05c0614b 17
18use_ok 'DBIx::Class::Optional::Dependencies';
19
3c3e76bd 20my $inc_after = [ keys %INC ];
21
22is_deeply (
23 [ sort @$inc_after],
24 [ sort (@$inc_before, 'DBIx/Class/Optional/Dependencies.pm') ],
25 'Nothing loaded other than DBIx::Class::OptDeps',
26);
27
05c0614b 28my $sqlt_dep = DBIx::Class::Optional::Dependencies->req_list_for ('deploy');
29is_deeply (
30 [ keys %$sqlt_dep ],
31 [ 'SQL::Translator' ],
32 'Correct deploy() dependency list',
33);
34
35# make module loading impossible, regardless of actual libpath contents
d8799bab 36{
37 local @INC = (sub { die('Optional Dep Test') } );
38
39 ok (
40 ! DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'),
41 'deploy() deps missing',
42 );
43
44 like (
45 DBIx::Class::Optional::Dependencies->req_missing_for ('deploy'),
46 qr/^SQL::Translator \>\= \d/,
47 'expected missing string contents',
48 );
49
50 like (
51 DBIx::Class::Optional::Dependencies->req_errorlist_for ('deploy')->{'SQL::Translator'},
52 qr/Optional Dep Test/,
53 'custom exception found in errorlist',
54 );
55}
05c0614b 56
57#make it so module appears loaded
58$INC{'SQL/Translator.pm'} = 1;
59$SQL::Translator::VERSION = 999;
60
61ok (
62 ! DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'),
63 'deploy() deps missing cached properly',
64);
65
66#reset cache
67%DBIx::Class::Optional::Dependencies::req_availability_cache = ();
68
69
70ok (
71 DBIx::Class::Optional::Dependencies->req_ok_for ('deploy'),
72 'deploy() deps present',
73);
74
75is (
76 DBIx::Class::Optional::Dependencies->req_missing_for ('deploy'),
77 '',
78 'expected null missing string',
79);
80
81is_deeply (
82 DBIx::Class::Optional::Dependencies->req_errorlist_for ('deploy'),
83 {},
84 'expected empty errorlist',
85);
86
05c0614b 87done_testing;