Skip to content

Commit

Permalink
allow anonymous => ? checks in validate_thing()
Browse files Browse the repository at this point in the history
  • Loading branch information
rsrchboy committed Oct 21, 2012
1 parent 79d4452 commit 2a3011f
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/Test/Moose/More.pm
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,10 @@ sub validate_thing {

local $Test::Builder::Level = $Test::Builder::Level + 1;

### anonymous...
$args{anonymous} ? is_anon $thing : is_not_anon $thing
if exists $args{anonymous};

### roles...
do { does_ok($thing, $_) for @{$args{does}} }
if exists $args{does};
Expand Down
51 changes: 51 additions & 0 deletions t/validate_class.t
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use strict;
use warnings;

use Moose::Util 'with_traits';

{ package TestRole; use Moose::Role; }
{ package TestRole::Two; use Moose::Role; }
{ package TestClass::Invalid; use Moose; with 'TestRole::Two'; }
Expand Down Expand Up @@ -46,12 +48,14 @@ note 'validate w/valid class';
test_out $_ok->('TestClass has a metaclass');
test_out $_ok->('TestClass is a Moose class');
test_out $_ok->('The class isa Moose::Object');
test_out $_ok->('TestClass is not anonymous');
test_out $_ok->('TestClass does TestRole');
test_out $_ok->('TestClass does not do TestRole::Two');
test_out $_ok->("TestClass has method $_")
for qw{ foo method1 has_bar };
test_out $_ok->('TestClass has an attribute named bar');
validate_class 'TestClass' => (
anonymous => 0,
isa => [ 'Moose::Object' ],
attributes => [ 'bar' ],
does => [ 'TestRole' ],
Expand All @@ -61,6 +65,53 @@ note 'validate w/valid class';
test_test 'validate_class works correctly for valid classes';
}

subtest 'validate w/valid class -- standalone run' => sub {

validate_class 'TestClass' => (
anonymous => 0,
isa => [ 'Moose::Object' ],
attributes => [ 'bar' ],
does => [ 'TestRole' ],
does_not => [ 'TestRole::Two' ],
methods => [ qw{ foo method1 has_bar } ],
);
};

note 'simple validation w/anonymous_class';
{

my $anon = with_traits 'TestClass' => 'TestRole::Two';

my ($_ok, $_nok) = counters();
test_out $_ok->("$anon has a metaclass");
test_out $_ok->("$anon is a Moose class");
test_out $_ok->("$anon is anonymous");
test_out $_ok->("$anon does TestRole::Two");
validate_class $anon => (
anonymous => 1,
does => [ qw{ TestRole::Two } ],
);
test_test 'simple validation w/anonymous_class';
}

note 'simple is-anonymous validation w/anonymous_class';
{

my $anon = with_traits 'TestClass' => 'TestRole::Two';

my ($_ok, $_nok) = counters();
test_out $_ok->("$anon has a metaclass");
test_out $_ok->("$anon is a Moose class");
test_out $_nok->("$anon is not anonymous");
test_fail 2;
test_out $_ok->("$anon does TestRole::Two");
validate_class $anon => (
anonymous => 0,
does => [ qw{ TestRole::Two } ],
);
test_test 'simple not-anonymous validation w/anonymous_class';
}

note 'validate w/non-moose package';
{
my ($_ok, $_nok) = counters();
Expand Down

0 comments on commit 2a3011f

Please sign in to comment.