The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use strict;
use warnings;

use lib 'lib', '../lib'; #  XXX

use Test::More;

use Data::Dumper;

# BEGIN { use_ok('WWW::Workflowy') }; # keeps the import magic from working
use WWW::Workflowy;

my $wf = WWW::Workflowy->new(
    outline => {
        'minutesSinceDateJoined' => 2882,
        'rootProjectChildren' => [
                                   {
                                     'lm' => 1259,
                                     'ch' => [
                                               {
                                                 'lm' => 1270,
                                                 'nm' => 'Test 2.1',
                                                 'id' => '63c98305-cd96-2016-4c4f-a20f7384ad9c'
                                               },
                                               {
                                                 'lm' => 1270,
                                                 'nm' => 'Test 2.2',
                                                 'id' => 'cf997f9e-2cef-aed8-d812-53be693f493e'
                                               },
                                               {
                                                 'lm' => 1270,
                                                 'ch' => [
                                                           {
                                                             'lm' => 1270,
                                                             'nm' => 'Test 2.3.1',
                                                             'id' => 'da52bd7b-87f9-6133-6254-c85547df4811'
                                                           },
                                                           {
                                                             'lm' => 1270,
                                                             'nm' => 'Test 2.3.2',
                                                             'id' => '2d06a022-f4ff-47d3-3180-43aeb4bbeabd'
                                                           }
                                                         ],
                                                 'nm' => 'Test 2.3',
                                                 'id' => 'e5932720-8811-e234-c35b-20f5ac7a83e3'
                                               }
                                             ],
                                     'nm' => 'Test2',
                                     'id' => '0da22641-65bf-9e96-70e7-dcc42c388cf3'
                                   },
                                   {
                                     'lm' => 1259,
                                     'ch' => [
                                               {
                                                 'lm' => 1285,
                                                 'nm' => 'Test 3.1 -- new!',
                                                 'id' => 'b18a71a4-91ec-d628-0fdf-97bc3264aace'
                                               },
                                               {
                                                 'lm' => 1285,
                                                 'nm' => 'aksjdhgkajshgsg',
                                                 'id' => 'bfd20738-461c-38a9-472f-0725d51c4b7e'
                                               }
                                             ],
                                     'nm' => 'Test3',
                                     'id' => '3d31a8f4-1dd5-dd5f-3af2-93e89a1e0763'
                                   }
                                 ],
        'dateJoinedTimestampInSeconds' => 1360996378,
        'initialMostRecentOperationTransactionId' => '106453325',
        'serverExpandedProjectsList' => [
                                          '0da22641',
                                          'e5932720'
                                        ],
        'rootProject' => {
                           'lm' => 1259,
                           'nm' => 'Test',
                           'id' => 'b141ebc1-4c8d-b31a-e3e8-b9c6c633ca25'
                         },
        'shareType' => 'url',
        'initialPollingIntervalInMs' => 10000,
        'isReadOnly' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
        'overQuota' =>  bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
    }, 
);

my  ( $parent_node, $node, $priority, $siblings );

#

diag "parent of root level node";

( $parent_node, $node, $priority, $siblings ) = WWW::Workflowy::_find_parent($wf->outline, 'b141ebc1-4c8d-b31a-e3e8-b9c6c633ca25');  # root level node; no parent

ok $node;
ok ! $parent_node;
is $priority, 0;
is eval { $node->{id} } || $@, 'b141ebc1-4c8d-b31a-e3e8-b9c6c633ca25';
is eval { $node->{nm} } || $@, 'Test';
ok $siblings;
ok grep( { $_->{id} eq 'b141ebc1-4c8d-b31a-e3e8-b9c6c633ca25' } @$siblings);  # we are one of our own siblings
is scalar @$siblings, 1;                                                       # only ourself; no other siblings

#

diag "parent of non-root level node";

( $parent_node, $node, $priority, $siblings ) = WWW::Workflowy::_find_parent($wf->outline, 'bfd20738-461c-38a9-472f-0725d51c4b7e');

ok $node;
ok $parent_node;
is $priority, 1;
is eval { $node->{id} } || $@, 'bfd20738-461c-38a9-472f-0725d51c4b7e';
is eval { $node->{nm} } || $@, 'aksjdhgkajshgsg';
is eval { $parent_node->{id} } || $@, '3d31a8f4-1dd5-dd5f-3af2-93e89a1e0763';
ok $siblings;
ok grep( { $_->{id} eq 'bfd20738-461c-38a9-472f-0725d51c4b7e' } @$siblings);    # we are one of our own sublings
ok grep( { $_->{id} eq 'b18a71a4-91ec-d628-0fdf-97bc3264aace' } @$siblings);    # our other sibling
is scalar @$siblings, 2;

#




done_testing;