Skip to content

Commit

Permalink
Add tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
david_smith committed Oct 29, 2024
1 parent 4ab4c8d commit 63c8ce8
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 0 deletions.
13 changes: 13 additions & 0 deletions tests/Unit/KeyBy/Alias.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace Tests\Unit\KeyBy;

use Zerotoprod\DataModel\DataModel;

class Alias
{
use DataModel;

public string $id;
public string $name;
}
62 changes: 62 additions & 0 deletions tests/Unit/KeyBy/KeyByTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php

namespace Tests\Unit\KeyBy;

use PHPUnit\Framework\Attributes\Test;
use Tests\TestCase;

class KeyByTest extends TestCase
{
#[Test] public function from(): void
{
$User = User::from([
'Aliases' => [
[
'id' => 'jd1',
'name' => 'John Doe',
],
[
'id' => 'js1',
'name' => 'John Smith'
],
]
]);

self::assertEquals('John Doe', $User->Aliases['jd1']->name);
self::assertEquals('John Smith', $User->Aliases['js1']->name);
}

#[Test] public function nested(): void
{
$User = User::from([
'AliasesNested' => [
[
[
'id' => 'jd1',
'name' => 'John Doe',
],
[
'id' => 'js1',
'name' => 'John Smith'
],
],
[
[
'id' => 'jd1',
'name' => 'John Doe',
],
[
'id' => 'js1',
'name' => 'John Smith'
],
]
]
]);

self::assertEquals('John Doe', $User->AliasesNested[0]['jd1']->name);
self::assertEquals('John Smith', $User->AliasesNested[0]['js1']->name);

self::assertEquals('John Doe', $User->AliasesNested[1]['jd1']->name);
self::assertEquals('John Smith', $User->AliasesNested[1]['js1']->name);
}
}
30 changes: 30 additions & 0 deletions tests/Unit/KeyBy/User.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace Tests\Unit\KeyBy;

use Zerotoprod\DataModel\DataModel;
use Zerotoprod\DataModel\Describe;
use Zerotoprod\DataModelHelper\DataModelHelper;

class User
{
use DataModel;
use DataModelHelper;

/** @var Alias[] $Aliases */
#[Describe([
'cast' => [self::class, 'mapOf'],
'type' => Alias::class,
'key_by' => 'id'
])]
public array $Aliases;

/** @var Alias[][] $AliasesNested */
#[Describe([
'cast' => [self::class, 'mapOf'],
'type' => Alias::class,
'level' => 2,
'key_by' => 'id'
])]
public array $AliasesNested;
}

0 comments on commit 63c8ce8

Please sign in to comment.