summaryrefslogtreecommitdiff
path: root/t/metaclasses/moose_exporter_trait_aliases.t
diff options
context:
space:
mode:
Diffstat (limited to 't/metaclasses/moose_exporter_trait_aliases.t')
-rw-r--r--t/metaclasses/moose_exporter_trait_aliases.t88
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;