package TestsFor::Basic::Subclass;
use Test::Class::Moose extends => 'TestsFor::Basic';

sub test_me {
    my $test  = shift;
    my $class = $test->test_class;
    ok 1, "I overrode my parent! ($class)";
}

before 'test_this_baby' => sub {
    my $test  = shift;
    my $class = $test->test_class;
    pass "This should run before my parent method ($class)";
};

sub this_should_not_run : Tags(first) {
    my $test = shift;
    fail "We should never see this test";
}

sub test_this_should_be_run : Tags(second) {
    for ( 1 .. 5 ) {
        pass "This is test number $_ in this method";
    }
}

sub test_augment : Tags( +third -first ) {
    my $test = shift;
    pass 'this should run with tags "second" or "third", but not "first"';
    my $method = $test->test_report->current_method;
    ok $method->has_tag('second'),
      'has_tag() should tell us if we have a given tag';
    ok $method->has_tag('third'),
      'has_tag() should tell us if we have a given tag';
    ok !$method->has_tag('first'),
      'has_tag() should tell us if we do not have a given tag';
}

sub test_clear_tags : Tags() {
    fail 'this should not run, because it has no tags';
}

1;
