summaryrefslogtreecommitdiff
path: root/t/native_traits/remove_attribute.t
diff options
context:
space:
mode:
Diffstat (limited to 't/native_traits/remove_attribute.t')
-rw-r--r--t/native_traits/remove_attribute.t48
1 files changed, 48 insertions, 0 deletions
diff --git a/t/native_traits/remove_attribute.t b/t/native_traits/remove_attribute.t
new file mode 100644
index 0000000..f1c7cbe
--- /dev/null
+++ b/t/native_traits/remove_attribute.t
@@ -0,0 +1,48 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+{
+ package MyHomePage;
+ use Moose;
+
+ has 'counter' => (
+ traits => ['Counter'],
+ is => 'ro',
+ isa => 'Int',
+ default => 0,
+ handles => {
+ inc_counter => 'inc',
+ dec_counter => 'dec',
+ reset_counter => 'reset',
+ }
+ );
+}
+
+my $page = MyHomePage->new();
+isa_ok( $page, 'MyHomePage' );
+
+can_ok( $page, $_ ) for qw[
+ counter
+ dec_counter
+ inc_counter
+ reset_counter
+];
+
+is( exception {
+ $page->meta->remove_attribute('counter');
+}, undef, '... removed the counter attribute okay' );
+
+ok( !$page->meta->has_attribute('counter'),
+ '... no longer has the attribute' );
+
+ok( !$page->can($_), "... our class no longer has the $_ method" ) for qw[
+ counter
+ dec_counter
+ inc_counter
+ reset_counter
+];
+
+done_testing;