#!/usr/bin/perl
use strict;
use warnings;
use Test::More qw/no_plan/;
use Test::Exception;
use t::TestUtils;
BEGIN { # test setup
use lib 'lib';
use mocked 'Foo::Bar' => qw/$awesome/;
require Foo::Moose;
import Foo::Moose;
use mocked [qw(Foo::Baz t/ERK/)];
use Foo::Other;
throws_ok {
mocked->import(q{Foo::WhatWeWant});
} qr{Attempting to mock}, q{ensure we die on preloaded package};
use Foo::PreLoaded;
throws_ok {
mocked->import(q{Foo::PreLoaded});
} qr{Attempting to mock}, q{ensure we die on preloaded module};
use mocked 'Foo::NestedMocked';
}
Load_mocked_library: {
is $Foo::Bar::VERSION, 'Mocked', "Mocked module loaded";
is $awesome, 'like, totally', "We're awesome";
is Foo::Bar::module_filename(), 't/lib/Foo/Bar.pm';
is $Foo::Moose::VERSION, '0.01', 'Real moose loaded';
is Foo::Moose::module_filename(), 'lib/Foo/Moose.pm';
is $Foo::Baz::VERSION, 'Mocked', "Mocked module loaded";
is $awesome, 'like, totally', "We're awesome";
is Foo::Baz::module_filename(), 't/ERK/Foo/Baz.pm';
}
Nested_mocks: {
# Foo::NestedMocked does a "use mocked 'Foo::Nestee'"
# which _should_ DTRT - load the Foo::Nestee in t/lib.
# Foo::Nestee should then be able to "use unmocked 'Data::Dumper'"
# and that should work fine.
is $Foo::NestedMocked::VERSION, 'Mocked';
is $Foo::NestedMocked::FNV, 'Mocked';
is $Foo::NestedMocked::FNV2, '0.01';
ok $Foo::Nestee::DDV;
}
syntax highlighted by Code2HTML, v. 0.9.1