The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
package Project;
use parent 'ActiveResource::Base';

package Issue;
use parent 'ActiveResource::Base';

package main;
use common::sense;
use Test::More;

ActiveResource::Base->site("http://localhost:3000");
ActiveResource::Base->user("admin");
ActiveResource::Base->password("admin");

subtest "Some simple matter of finding" => sub {
    my $project = Project->find(1);
    is $project->name, "test";

    my $issue = Issue->find(1);
    is $issue->id, 1;
    is $issue->project->id, 1;
    is $issue->project->name, "test";
    is $issue->status->name, "Resolved";
    ok $issue->can('save');
    done_testing;
};

subtest "Creating new issues" => sub {
    my $issue = Issue->create(
        project => { id => 1 },
        subject => "Created from $$, " . __FILE__,
    );

    like($issue->id, /^\d+$/);
    like($issue->subject, /^Created from \d+,/);

    done_testing;
};


subtest "lvalue attribute setter and saving" => sub {
    my $issue = Issue->find(1);
    my $old_description = $issue->description;
    my $new_description = "Shiny new description. $$";
    $issue->description = $new_description;
    $issue->save;

    is $issue->description, $new_description;

    {
        my $i2 = Issue->find(1);
        is $i2->description, $new_description;
    }

    $issue->description = $old_description;
    $issue->save;

    is $issue->description, $new_description;

    done_testing;
};


done_testing;