Skip to content

Commit cdcfef6

Browse files
committed
Add tests for #40
1 parent 89efb21 commit cdcfef6

File tree

2 files changed

+74
-2
lines changed

2 files changed

+74
-2
lines changed

tests/Helpers/CollectionTest.php

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
namespace Kitar\Dynamodb\Tests\Helpers;
4+
5+
use Kitar\Dynamodb\Helpers\Collection;
6+
use PHPUnit\Framework\TestCase;
7+
8+
class CollectionTest extends TestCase
9+
{
10+
/** @test */
11+
public function it_can_set_and_get_meta()
12+
{
13+
$items = new Collection([]);
14+
15+
$this->assertNull($items->getMeta());
16+
17+
$meta = ['LastEvaluatedKey' => ['id' => ['S' => '1']]];
18+
19+
$items->setMeta($meta);
20+
21+
$this->assertSame($meta, $items->getMeta());
22+
}
23+
24+
/** @test */
25+
public function it_can_get_last_evaluated_key()
26+
{
27+
$items = new Collection([]);
28+
29+
$this->assertNull($items->getLastEvaluatedKey());
30+
31+
$lastEvaluatedKey = ['id' => ['S' => '1']];
32+
33+
$items->setMeta(['LastEvaluatedKey' => $lastEvaluatedKey]);
34+
35+
$this->assertSame($lastEvaluatedKey, $items->getLastEvaluatedKey());
36+
}
37+
}

tests/Model/ModelTest.php

+37-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Illuminate\Database\ConnectionResolver;
1010
use Kitar\Dynamodb\Model\KeyMissingException;
1111
use BadMethodCallException;
12+
use Kitar\Dynamodb\Helpers\Collection;
1213

1314
class ModelTest extends TestCase
1415
{
@@ -36,6 +37,15 @@ protected function newConnectionMock()
3637
return $connection;
3738
}
3839

40+
protected function sampleAwsResult()
41+
{
42+
return new Result([
43+
'Items' => [],
44+
'LastEvaluatedKey' => ['id' => ['S' => '1']],
45+
'@metadata' => ['statusCode' => 200],
46+
]);
47+
}
48+
3949
protected function sampleAwsResultEmpty()
4050
{
4151
return new Result([
@@ -400,14 +410,39 @@ public function it_can_process_all()
400410
];
401411

402412
$return = new Result([
403-
'Items' => []
413+
'Items' => [
414+
['name' => ['S' => 'User 1']],
415+
['name' => ['S' => 'User 2']]
416+
]
404417
]);
405418

406419
$connection = $this->newConnectionMock();
407420
$connection->shouldReceive('scan')->with($params)->andReturn($return)->once();
408421
$this->setConnectionResolver($connection);
409422

410-
UserA::all();
423+
$res = UserA::all();
424+
425+
$this->assertSame(2, $res->count());
426+
$this->assertInstanceOf(Collection::class, $res);
427+
$this->assertInstanceOf(UserA::class, $res->first());
428+
$this->assertSame('User 1', $res->first()->name);
429+
$this->assertNull($res->getLastEvaluatedKey());
430+
}
431+
432+
/** @test */
433+
public function it_can_get_last_evaluated_key()
434+
{
435+
$params = [
436+
'TableName' => 'User'
437+
];
438+
439+
$connection = $this->newConnectionMock();
440+
$connection->shouldReceive('scan')->with($params)->andReturn($this->sampleAwsResult())->once();
441+
$this->setConnectionResolver($connection);
442+
443+
$res = UserA::all();
444+
445+
$this->assertSame(['id' => ['S' => '1']], $res->getLastEvaluatedKey());
411446
}
412447

413448
/** @test */

0 commit comments

Comments
 (0)