# vim: set ft=perl :
use strict;
use warnings;
use Test::More tests => 17;
use_ok('Java::JCR');
use_ok('Java::JCR::Jackrabbit');
my $repository = Java::JCR::Jackrabbit->new;
ok($repository);
my $session = $repository->login(
Java::JCR::SimpleCredentials->new('username', 'password'));
ok($session);
my $root = $session->get_root_node;
ok($root);
my $node = $root->add_node('dates', 'nt:unstructured');
my $has_datetime;
my $has_class_date;
SKIP: {
eval 'use DateTime';
skip 'DateTime is not installed.', 1 if $@;
$has_datetime++;
my $datetime = DateTime->new( year => 1978, month => 1, day => 10 );
my $property = $node->set_property('datetime', $datetime);
ok($property);
}
SKIP: {
eval 'use Class::Date';
skip 'Class::Date is not installed.', 1 if $@;
$has_class_date++;
my $class_date = Class::Date->new([ 1978, 1, 10 ]);
my $property = $node->set_property('class_date', $class_date);
ok($property);
}
$session->save;
$node = $root->get_node('dates');
SKIP: {
skip 'DateTime is not installed.', 5 if !$has_datetime;
my $property = $node->get_property('datetime');
my $datetime = $property->get_date('DateTime');
ok($datetime);
isa_ok($datetime, 'DateTime');
is($datetime->year, 1978);
is($datetime->month, 1);
is($datetime->day, 10);
}
SKIP: {
skip 'Class::Date is not installed.', 5 if !$has_class_date;
my $property = $node->get_property('class_date');
my $class_date = $property->get_date('Class::Date');
ok($class_date);
isa_ok($class_date, 'Class::Date');
is($class_date->year, 1978);
is($class_date->month, 1);
is($class_date->day, 10);
}
$node->remove;
$root->save;
$session->logout;