diff options
Diffstat (limited to 'tests/Unit/Models/User/UserTest.php')
-rw-r--r-- | tests/Unit/Models/User/UserTest.php | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/Unit/Models/User/UserTest.php b/tests/Unit/Models/User/UserTest.php index 5cb8745d..fd8e2396 100644 --- a/tests/Unit/Models/User/UserTest.php +++ b/tests/Unit/Models/User/UserTest.php @@ -5,6 +5,7 @@ namespace Engelsystem\Test\Unit\Models; use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; use Engelsystem\Models\BaseModel; use Engelsystem\Models\News; +use Engelsystem\Models\Question; use Engelsystem\Models\User\Contact; use Engelsystem\Models\User\HasUserModel; use Engelsystem\Models\User\PersonalData; @@ -14,6 +15,7 @@ use Engelsystem\Models\User\User; use Engelsystem\Test\Unit\HasDatabase; use Engelsystem\Test\Unit\TestCase; use Exception; +use Illuminate\Support\Str; class UserTest extends TestCase { @@ -147,6 +149,49 @@ class UserTest extends TestCase } /** + * @covers \Engelsystem\Models\User\User::questionsAsked + */ + public function testQuestionsAsked(): void + { + ($user = new User($this->data))->save(); + ($user2 = new User(array_merge($this->data, ['name' => 'dolor', 'email' => 'dolor@bar.batz'])))->save(); + + ($question1 = new Question(['user_id' => $user->id, 'text' => Str::random()]))->save(); + ($question2 = new Question(['user_id' => $user->id, 'text' => Str::random()]))->save(); + // create some questions asked by user 2 to test the correct assignment + (new Question(['user_id' => $user2->id, 'text' => Str::random()]))->save(); + (new Question(['user_id' => $user2->id, 'text' => Str::random()]))->save(); + + $questionIds = $user->questionsAsked()->pluck('id')->toArray(); + $this->assertCount(2, $questionIds); + $this->assertContains($question1->id, $questionIds); + $this->assertContains($question2->id, $questionIds); + } + + /** + * @covers \Engelsystem\Models\User\User::questionsAnswered + */ + public function testQuestionsAnswered(): void + { + ($user = new User($this->data))->save(); + ($user2 = new User(array_merge($this->data, ['name' => 'dolor', 'email' => 'dolor@bar.batz'])))->save(); + + $questionData = ['user_id' => $user->id, 'text' => Str::random()]; + $answerData = ['answerer_id' => $user2->id, 'answer' => Str::random()]; + ($question1 = new Question(array_merge($questionData, $answerData)))->save(); + ($question2 = new Question(array_merge($questionData, $answerData)))->save(); + // Create some questions asked by user 2 to test the correct assignment + (new Question(array_merge($questionData, $answerData, ['answerer_id' => $user->id])))->save(); + (new Question($questionData))->save(); + (new Question($questionData))->save(); + + $answers = $user2->questionsAnswered()->pluck('id')->toArray(); + $this->assertCount(2, $answers); + $this->assertContains($question1->id, $answers); + $this->assertContains($question2->id, $answers); + } + + /** * Prepare test */ protected function setUp(): void |