#!perl -w
use strict;
use Net::Google::Calendar;
use Net::Google::Calendar::Person;
use lib qw(t/lib);
use GCalTest;
use Test::More;
my $cal = eval { GCalTest::get_calendar('login') };
if ($@) {
plan skip_all => "because $@";
#} elsif (!defined $ENV{GCAL_TEST_ATTENDEE} || !defined $ENV{GCAL_TEST_ATTENDEE_NAME}) {
# plan skip_all => "because you need have set GCAL_TEST_ATTENDEE and GCAL_TEST_ATTENDEE_NAME environment variables which are the details of a real user";
} else {
plan tests => 26;
}
my $email = $ENV{GCAL_TEST_ATTENDEE} || 'test@example.com';
my $name = $ENV{GCAL_TEST_ATTENDEE_NAME} || 'Tester';
my $status = 'declined';
my $type = 'required';
my $rel = 'organizer';
# get events
my @events = eval { $cal->get_events() };
is($@, '', "Got events");
# should be none
is(scalar(@events), 0, "No events so far");
# create an event
my $title = "Test attendee event ".time();
my $entry = Net::Google::Calendar::Entry->new();
$entry->title($title);
my $who = Net::Google::Calendar::Person->new;
# name
ok($who->name($name), "Added name");
# email
ok($who->email($email), "Added email");
# type
eval { $who->attendee_type('useless') };
isnt($@, '', "Caught bogus attendee_type");
eval { $who->attendee_type($type) };
is($@, '', "Set attendee_type");
# status
eval { $who->attendee_status('useless') };
isnt($@, '', "Caught bogus attendee_status");
eval { $who->attendee_status($status) };
is($@, '', "Set attendee_status");
# rel
eval { $who->rel('useless') };
isnt($@, '', "Caught bogus rel");
eval { $who->rel($rel) };
is($@, '', "Set rel");
ok($entry->who($who), "Added person");
ok($cal->add_entry($entry), "Added an entry");
# get events again
ok(@events = $cal->get_events(), "Got events again");
# should be one
is(scalar(@events), 1, "Got an event");
SKIP: {
skip "Couldn't get events back", 9 unless scalar(@events);
my @who = $events[0]->who;
ok(scalar(@who), "Got people back");
skip "Couldn't get people back ", 8 unless scalar(@who);
my $new_who = $who[0];
# name again
SKIP: {
skip "Google Bug", 2;
is($new_who->name, $name, "Got name");
is($new_who->name, $who->name, "Got same name");
}
# email again
is($new_who->email, $email, "Got email");
is($new_who->email, $who->email, "Got same email");
# status again
is($new_who->attendee_status(), $status, "Got attendee status");
is($new_who->attendee_status(), $who->attendee_status(), "Got same attendee status");
SKIP: {
skip "Not implemented by Google", 2;
# type again
is($new_who->attendee_type(), $type, "Got attendee type");
is($new_who->attendee_type(), $who->attendee_type(), "Got same attendee type");
}
SKIP: {
skip "Google Bug", 2;
# rel again
is($new_who->rel(), $rel, "Got attendee rel");
is($new_who->rel(), $who->rel(), "Got same rel");
}
# delete
ok($cal->delete_entry($entry), "Deleted");
}