The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More;

unless ($ENV{GOOGLE_USERNAME} and $ENV{GOOGLE_PASSWORD}) {
    Test::More->import(skip_all => "no username and password set, skipped.");
    exit;
}

plan tests => 17;

use WWW::Google::Notebook;

my $api = WWW::Google::Notebook->new(
    username => $ENV{GOOGLE_USERNAME},
    password => $ENV{GOOGLE_PASSWORD},
);
my $res = $api->login;
is($res, 1);

my $notebook = $api->add_notebook('WWW::Google::Notebook::Notebook');
isa_ok($notebook, 'WWW::Google::Notebook::Notebook');

my $note = $notebook->add_note('WWW::Google::Notebook::Note');
isa_ok($note, 'WWW::Google::Notebook::Note');

undef $notebook;
undef $note;

my $notebooks = $api->notebooks;
is(ref $notebooks, 'ARRAY');
($notebook) = grep { $_->title =~ /WWW::Google::Notebook::Notebook/ } @$notebooks;
isa_ok($notebook, 'WWW::Google::Notebook::Notebook');

my $ret = $notebook->rename('WWW::Google::Notebook::Notebook::test');
is($ret, 1);
is($notebook->title, 'WWW::Google::Notebook::Notebook::test');

my $notes = $notebook->notes;
is(ref $notes, 'ARRAY');
($note) = grep { $_->content =~ /WWW::Google::Notebook::Note/ } @$notes;
isa_ok($note, 'WWW::Google::Notebook::Note');

$ret = $note->edit('WWW::Google::Notebook::Note::test');
is($ret, 1);
is($note->content, 'WWW::Google::Notebook::Note::test');

$note->delete;
is_deeply($note, {});
isa_ok($note, 'WWW::Google::Notebook::Object::Has::Been::Deleted');
$notes = $notebook->notes;
($note) = grep { $_->content =~ /WWW::Google::Notebook::Note/ } @$notes;
is($note, undef);

$notebook->delete;
is_deeply($notebook, {});
isa_ok($notebook, 'WWW::Google::Notebook::Object::Has::Been::Deleted');
$notebooks = $api->notebooks;
($notebook) = grep { $_->title =~ /WWW::Google::Notebook::Notebook::test/ } @$notebooks;
is($notebook, undef);