AnyEvent-WebService-Tracks

 view release on metacpan or  search on metacpan

t/06-project-todos.t  view on Meta::CPAN

use strict;
use warnings;

use FindBin;
use lib "$FindBin::Bin/lib";

use Test::AnyEvent::WebService::Tracks tests => 60;
use Test::Exception;

clear_tracks;
my $tracks = get_tracks;

my @project_names = map { "Project $_" } 1..4;
my @todo_names = map { "Todo $_" } 1..8;

my @projects;
my @todos;
my ( $ctx, $ctx2 );

run_tests_in_loop {
    my ( $cond ) = @_;

    $tracks->create_context('Test Context', sub {
        ( $ctx ) = @_;

        ok($ctx);

        $tracks->create_context('Test Context 2', sub {
            ( $ctx2 ) = @_;

            ok($ctx2);

            my $create_todos;
            my $create_projects;

            $create_todos = sub {
                my ( $index ) = @_;

                my $name    = $todo_names[$index];
                my $project = $projects[int($index / 2)];

                $tracks->create_todo(
                    description => $name,
                    project     => $project, sub {

                    my ( $t ) = @_;

                    ok($t);
                    push @todos, $t;

                    $t->project(sub {
                        my ( $p ) = @_;

                        is($p->id, $project->id);

                        if($index + 1 < @todo_names) {
                            $create_todos->($index + 1);
                        } else {
                            $cond->send;
                        }
                    });
                });
            };

            $create_projects = sub {



( run in 0.956 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )