Require Dist::Zilla 4.200016+
[gitmo/Moose.git] / t / native_traits / hash_trigger.t
1 use strict;
2 use warnings;
3
4 use Test::More;
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
26 my $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
54 done_testing;