use Test::More tests => 18;
use WebService::Wedata;
use Data::Dumper;
my $my_api_key = 'YOUR_API_KEY';
my $now = time;
my $db_name = 'test_db_from_WebService::Wedata' . $now;
my $item_name = 'test_db_from_WebService::Wedata::Item' . $now;
my $wedata = WebService::Wedata->new($my_api_key);
my $database = $wedata->create_database(
name => $db_name,
required_keys => [qw/foo bar baz/],
optional_keys => [qw/hoge fuga/],
permit_other_keys => 1,
);
########################################
# get item
my $items = $database->get_items;
is(scalar(@$items), 0, 'no items');
########################################
# create
$item = $database->create_item(
name => $item_name,
data => {
foo => 'foo_value',
bar => 'bar_value',
baz => 'baz_value',
}
);
my $check_created_item = sub {
my($item) = @_;
check_item_by_name($item, {
name => $item_name,
data => {
foo => 'foo_value',
bar => 'bar_value',
baz => 'baz_value',
}
});
};
$check_created_item->($item);
my $item_id;
$item_id = WebService::Wedata::Item::_id_from_resource_url($item->resource_url);
$item = $database->get_item(id => $item_id);
$check_created_item->($item);
########################################
# update
$item_id = WebService::Wedata::Item::_id_from_resource_url($item->resource_url);
$item = $database->update_item(
id => $item_id,
data => {
foo => 'foo_up_value',
bar => 'bar_up_value',
baz => 'baz_up_value',
}
);
my $check_updated_item = sub {
my($item) = @_;
check_item_by_id($item, {
id => $item_id,
data => {
foo => 'foo_up_value',
bar => 'bar_up_value',
baz => 'baz_up_value',
}
});
};
$check_updated_item->($item);
$item = $database->get_item(id => $item_id);
$check_updated_item->($item);
########################################
# delete
$database->delete_item(id => $item_id);
eval { $item = $database->get_item(id => $item_id); };
like($@, '/Faild to get_item:404 Not Found/', "delete $item_name");
# CLEAN UP
$wedata->delete_database(name => $db_name);
sub check_item_by_id {
my($item, $expect) = @_;
$expect->{resource_url} = "http://wedata.net/items/" . $expect->{id};
check_item($item, $expect);
}
sub check_item_by_name {
my($item, $expect) = @_;
is($item->{name}, $expect->{name}, 'name');
check_item($item, $expect);
}
sub check_item {
my($item, $expect) = @_;
while (my($k, $v) = each(%{ $item->{data} })) {
is($v, $expect->{data}->{$k}, 'data[' . $k . ']');
}
if (defined $expect->{resource_url}) {
is($item->{resource_url}, $expect->{resource_url}, 'resource_url');
}
}