diff options
Diffstat (limited to 'tests/Unit/Models/User/UserTest.php')
-rw-r--r-- | tests/Unit/Models/User/UserTest.php | 58 |
1 files changed, 54 insertions, 4 deletions
diff --git a/tests/Unit/Models/User/UserTest.php b/tests/Unit/Models/User/UserTest.php index b89f832b..96c2c1b7 100644 --- a/tests/Unit/Models/User/UserTest.php +++ b/tests/Unit/Models/User/UserTest.php @@ -3,6 +3,7 @@ namespace Engelsystem\Test\Unit\Models; use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; +use Engelsystem\Models\News\News; use Engelsystem\Models\User\Contact; use Engelsystem\Models\User\HasUserModel; use Engelsystem\Models\User\PersonalData; @@ -26,6 +27,15 @@ class UserTest extends TestCase ]; /** + * Prepare test + */ + protected function setUp(): void + { + parent::setUp(); + $this->initDatabase(); + } + + /** * @return array */ public function hasOneRelationsProvider() @@ -93,11 +103,51 @@ class UserTest extends TestCase } /** - * Prepare test + * @covers User::news() + * + * @dataProvider hasManyRelationsProvider + * + * @param string $class Class name of the related models + * @param string $name Name of the accessor for the related models + * @param array $data List of the related models */ - protected function setUp(): void + public function testHasManyRelations(string $class, string $name, array $data): void { - parent::setUp(); - $this->initDatabase(); + $user = new User($this->data); + $user->save(); + + $relatedModelIds = []; + + foreach ($data as $d) { + $stored = $class::create($d + ['user_id' => $user->id]); + $relatedModelIds[] = $stored->id; + } + + $this->assertEquals($relatedModelIds, $user->{$name}->modelKeys()); + } + + /** + * @return array + */ + public function hasManyRelationsProvider(): array + { + return [ + 'news' => [ + News::class, + 'news', + [ + [ + 'title' => 'Hey hoo', + 'text' => 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.', + 'is_meeting' => false, + ], + [ + 'title' => 'Huuhuuu', + 'text' => 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.', + 'is_meeting' => true, + ], + ] + ] + ]; } } |