From 636f22f307ff0dc94a2c2ec23d49c872ecddbc02 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 19 Jul 2010 19:10:14 -0500 Subject: initial implementation --- t/moose/023_easy_init_meta.t | 126 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 t/moose/023_easy_init_meta.t (limited to 't/moose/023_easy_init_meta.t') diff --git a/t/moose/023_easy_init_meta.t b/t/moose/023_easy_init_meta.t new file mode 100644 index 0000000..b54cd14 --- /dev/null +++ b/t/moose/023_easy_init_meta.t @@ -0,0 +1,126 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; +use Test::Moose qw(does_ok); + +{ + package Foo::Trait::Class; + use Moose::Role; +} + +{ + package Foo::Trait::Attribute; + use Moose::Role; +} + +{ + package Foo::Role::Base; + use Moose::Role; +} + +{ + package Foo::Exporter; + use MooseX::Exporter::Easy; + + class_metaroles { + class => ['Foo::Trait::Class'], + attribute => ['Foo::Trait::Attribute'], + }; + role_metaroles { + role => ['Foo::Trait::Class'], + }; + base_class_roles 'Foo::Role::Base'; + + export; +} + +{ + package Foo; + use Moose; + Foo::Exporter->import; + + has foo => (is => 'ro'); + + ::does_ok(Foo->meta, 'Foo::Trait::Class'); + ::does_ok(Foo->meta->get_attribute('foo'), 'Foo::Trait::Attribute'); + ::does_ok('Foo', 'Foo::Role::Base'); +} + +{ + package Foo::Exporter::WithMoose; + use Moose (); + use MooseX::Exporter::Easy; + + also 'Moose'; + + class_metaroles { + class => ['Foo::Trait::Class'], + attribute => ['Foo::Trait::Attribute'], + }; + base_class_roles 'Foo::Role::Base'; + + sub init_meta_extra { + my $package = shift; + my %options = @_; + ::pass('custom init_meta was called'); + Moose->init_meta(%options); + } + + export; +} + +{ + package Foo2; + Foo::Exporter::WithMoose->import; + + has(foo => (is => 'ro')); + + ::isa_ok('Foo2', 'Moose::Object'); + ::isa_ok(Foo2->meta, 'Moose::Meta::Class'); + ::does_ok(Foo2->meta, 'Foo::Trait::Class'); + ::does_ok(Foo2->meta->get_attribute('foo'), 'Foo::Trait::Attribute'); + ::does_ok('Foo2', 'Foo::Role::Base'); +} + +{ + package Foo::Role; + use Moose::Role; + Foo::Exporter->import; + + ::does_ok(Foo::Role->meta, 'Foo::Trait::Class'); +} + +{ + package Foo::Exporter::WithMooseRole; + use Moose::Role (); + use MooseX::Exporter::Easy; + + also 'Moose::Role'; + + role_metaroles { + role => ['Foo::Trait::Class'], + attribute => ['Foo::Trait::Attribute'], + }; + + sub init_meta_extra { + my $package = shift; + my %options = @_; + ::pass('custom init_meta was called'); + Moose::Role->init_meta(%options); + } + + export; +} + +{ + package Foo2::Role; + Foo::Exporter::WithMooseRole->import; + + ::isa_ok(Foo2::Role->meta, 'Moose::Meta::Role'); + ::does_ok(Foo2::Role->meta, 'Foo::Trait::Class'); +} + +done_testing; -- cgit v1.2.3-54-g00ecf