Require Dist::Zilla 4.200016+
[gitmo/Moose.git] / t / native_traits / hash_trigger.t
CommitLineData
be9f5a89 1use strict;
2use warnings;
3
4use Test::More;
be9f5a89 5
6{
7
8 package Foo;
9 use Moose;
10
11 our @TriggerArgs;
12
13 has hash => (
14 traits => ['Hash'],
15 is => 'rw',
16 isa => 'HashRef',
17 handles => {
18 delete_key => 'delete',
19 set_key => 'set',
20 },
21 clearer => 'clear_key',
22 trigger => sub { @TriggerArgs = @_ },
23 );
24}
25
26my $foo = Foo->new;
27
28{
29 $foo->hash( { x => 1, y => 2 } );
30
31 is_deeply(
32 \@Foo::TriggerArgs,
33 [ $foo, { x => 1, y => 2 } ],
34 'trigger was called for normal writer'
35 );
36
37 $foo->set_key( z => 5 );
38
39 is_deeply(
40 \@Foo::TriggerArgs,
41 [ $foo, { x => 1, y => 2, z => 5 }, { x => 1, y => 2 } ],
42 'trigger was called on set'
43 );
44
45 $foo->delete_key('y');
46
47 is_deeply(
48 \@Foo::TriggerArgs,
49 [ $foo, { x => 1, z => 5 }, { x => 1, y => 2, z => 5 } ],
50 'trigger was called on delete'
51 );
52}
53
54done_testing;