Amazon-DynamoDB

 view release on metacpan or  search on metacpan

t/04-batch-get.t  view on Meta::CPAN

#!perl
use strict;
use warnings;
use lib ('lib', './t');
use Test::Most;
use Test::Differences;
use Data::Dumper;
use TestSettings;
unless ( $ENV{'AMAZON_DYNAMODB_EXPENSIVE_TESTS'} ) {
    plan skip_all => 'Testing this module for real costs money.';
} else {
    plan tests => 4869;
}

bail_on_fail;

my $ddb = TestSettings::get_ddb();
my $table_name = TestSettings::random_table_name();


my $create = $ddb->create_table(TableName => $table_name,
                                ReadCapacityUnits => 2,
                                WriteCapacityUnits => 2,
                                AttributeDefinitions => {
                                    user_id => 'N',
                                },
                                KeySchema => ['user_id'],
                            );

ok($create->is_done, "Create request was completed");

my $wait = $ddb->wait_for_table_status(TableName => $table_name);

ok($wait->is_done, "Created table is ready");



my $test_record = {
                   user_id => 1,
                   name => "Test User"
               };

ok($ddb->put_item(TableName => $table_name,
                  Item => $test_record,
              )->is_done, "Saved test item");

    
ok($ddb->batch_get_item(
    sub {
        my ($table, $item) = @_;
        is($table, $table_name, "Table name matches for batch get");
        is_deeply($test_record, $item, "Retrieved test record successfully");
    },
    RequestItems => {
        $table_name => {
            ConsistentRead => 'true',
            AttributesToGet => ['user_id', 'name'],
            Keys => [
                {
                    user_id => 1,
                },
            ],
        }
    })->is_done, "Batch get was successfully completed");



( run in 0.827 second using v1.01-cache-2.11-cpan-39bf76dae61 )