diff options
Diffstat (limited to 't/metaclasses/moose_exporter_trait_aliases.t')
-rw-r--r-- | t/metaclasses/moose_exporter_trait_aliases.t | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/t/metaclasses/moose_exporter_trait_aliases.t b/t/metaclasses/moose_exporter_trait_aliases.t new file mode 100644 index 0000000..633674d --- /dev/null +++ b/t/metaclasses/moose_exporter_trait_aliases.t @@ -0,0 +1,88 @@ +use strict; +use warnings; +use Test::More; +use Test::Moose; + +{ + package Attribute::Trait::Awesome; + use Moose::Role; +} + +BEGIN { + package Awesome::Exporter; + use Moose::Exporter; + + Moose::Exporter->setup_import_methods( + trait_aliases => ['Attribute::Trait::Awesome'], + ); +} + +{ + package Awesome; + use Moose; + BEGIN { Awesome::Exporter->import } + + has foo => ( + traits => [Awesome], + is => 'ro', + ); + ::does_ok(__PACKAGE__->meta->get_attribute('foo'), 'Attribute::Trait::Awesome'); + + no Moose; + BEGIN { Awesome::Exporter->unimport } + + my $val = eval "Awesome"; + ::like($@, qr/Bareword "Awesome" not allowed/, "unimported properly"); + ::is($val, undef, "unimported properly"); +} + +BEGIN { + package Awesome2::Exporter; + use Moose::Exporter; + + Moose::Exporter->setup_import_methods( + trait_aliases => [ + [ 'Attribute::Trait::Awesome' => 'Awesome2' ], + ], + ); +} + +{ + package Awesome2; + use Moose; + BEGIN { Awesome2::Exporter->import } + + has foo => ( + traits => [Awesome2], + is => 'ro', + ); + ::does_ok(__PACKAGE__->meta->get_attribute('foo'), 'Attribute::Trait::Awesome'); + + BEGIN { Awesome2::Exporter->unimport } + + my $val = eval "Awesome2"; + ::like($@, qr/Bareword "Awesome2" not allowed/, "unimported properly"); + ::is($val, undef, "unimported properly"); +} + +{ + package Awesome2::Rename; + use Moose; + BEGIN { Awesome2::Exporter->import(Awesome2 => { -as => 'emosewA' }) } + + has foo => ( + traits => [emosewA], + is => 'ro', + ); + ::does_ok(__PACKAGE__->meta->get_attribute('foo'), 'Attribute::Trait::Awesome'); + + BEGIN { Awesome2::Exporter->unimport } + + { our $TODO; local $TODO = "unimporting renamed subs currently doesn't work"; + my $val = eval "emosewA"; + ::like($@, qr/Bareword "emosewA" not allowed/, "unimported properly"); + ::is($val, undef, "unimported properly"); + } +} + +done_testing; |