diff options
author | Michael Weimann <mail@michael-weimann.eu> | 2019-12-12 21:30:28 +0100 |
---|---|---|
committer | Igor Scheller <igor.scheller@igorshp.de> | 2019-12-30 01:53:20 +0100 |
commit | 95adeca0ae1cd6c5475242d036ee75584aedd2a1 (patch) | |
tree | 593dbc9888cf447429f3c8f954b52b60095d2ca0 /tests/Unit/Models | |
parent | 46f80fbed262a30ba31e1d031e2512f278352e12 (diff) |
Add message model
Diffstat (limited to 'tests/Unit/Models')
-rw-r--r-- | tests/Unit/Models/MessageTest.php | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/tests/Unit/Models/MessageTest.php b/tests/Unit/Models/MessageTest.php new file mode 100644 index 00000000..11af9a83 --- /dev/null +++ b/tests/Unit/Models/MessageTest.php @@ -0,0 +1,171 @@ +<?php + +declare(strict_types=1); + +namespace Engelsystem\Test\Unit\Models; + +use Engelsystem\Models\Message; +use Engelsystem\Models\User\User; +use Engelsystem\Test\Unit\HasDatabase; +use Engelsystem\Test\Unit\TestCase; + +/** + * This class provides tests covering the Message model and its relations. + */ +class MessageTest extends TestCase +{ + use HasDatabase; + + /** @var User */ + private $user1; + + /** @var User */ + private $user2; + + /** @var Message */ + private $message1; + + /** @var Message */ + private $message2; + + /** @var Message */ + private $message3; + + /** + * @return void + */ + protected function setUp(): void + { + parent::setUp(); + $this->initDatabase(); + + $this->user1 = User::create([ + 'name' => 'user1', + 'password' => '', + 'email' => 'user1@example.com', + 'api_key' => '', + ]); + + $this->user2 = User::create([ + 'name' => 'user2', + 'password' => '', + 'email' => 'user2@example.com', + 'api_key' => '', + ]); + + $this->message1 = Message::create([ + 'user_id' => $this->user1->id, + 'receiver_id' => $this->user2->id, + 'text' => 'message1', + ]); + + $this->message2 = Message::create([ + 'user_id' => $this->user1->id, + 'receiver_id' => $this->user2->id, + 'read' => true, + 'text' => 'message2', + ]); + + $this->message3 = Message::create([ + 'user_id' => $this->user2->id, + 'receiver_id' => $this->user1->id, + 'text' => 'message3', + ]); + } + + /** + * Tests that loading Messages works. + * + * @return void + */ + public function testLoad(): void + { + $message1 = Message::find($this->message1->id); + $this->assertSame($this->message1->user_id, $message1->user_id); + $this->assertSame($this->message1->receiver_id, $message1->receiver_id); + $this->assertSame($this->message1->read, $message1->read); + $this->assertSame($this->message1->text, $message1->text); + + $message2 = Message::find($this->message2->id); + $this->assertSame($this->message2->user_id, $message2->user_id); + $this->assertSame($this->message2->receiver_id, $message2->receiver_id); + $this->assertSame($this->message2->read, $message2->read); + $this->assertSame($this->message2->text, $message2->text); + } + + /** + * Tests that the Messages have the correct senders. + * + * @return void + */ + public function testSenders(): void + { + $this->assertSame($this->user1->id, $this->message1->user->id); + $this->assertSame($this->user1->id, $this->message2->user->id); + $this->assertSame($this->user2->id, $this->message3->user->id); + } + + /** + * Tests that the Messages have the correct receivers. + * + * @return void + */ + public function testReceivers(): void + { + $this->assertSame($this->user2->id, $this->message1->receiver->id); + $this->assertSame($this->user2->id, $this->message2->receiver->id); + $this->assertSame($this->user1->id, $this->message3->receiver->id); + } + + /** + * Tests that the Users have the correct sent Messages. + * + * @return void + */ + public function testUserSentMessages(): void + { + $sentByUser1 = $this->user1->messagesSent->all(); + $this->assertCount(2, $sentByUser1); + $this->assertSame($this->message2->id, $sentByUser1[0]->id); + $this->assertSame($this->message1->id, $sentByUser1[1]->id); + + $sentByUser2 = $this->user2->messagesSent->all(); + $this->assertCount(1, $sentByUser2); + $this->assertSame($this->message3->id, $sentByUser2[0]->id); + } + + /** + * Tests that the Users have the correct received Messages. + * + * @return void + */ + public function testUserReceivedMessages(): void + { + $receivedByUser1 = $this->user1->messagesReceived->all(); + $this->assertCount(1, $receivedByUser1); + $this->assertSame($this->message3->id, $receivedByUser1[0]->id); + + $receivedByUser2 = $this->user2->messagesReceived->all(); + $this->assertCount(2, $receivedByUser2); + $this->assertSame($this->message1->id, $receivedByUser2[0]->id); + $this->assertSame($this->message2->id, $receivedByUser2[1]->id); + } + + /** + * Tests that the user have the correct Messages. + */ + public function testUserMessages(): void + { + $user1Messages = $this->user1->messages->all(); + $this->assertCount(3, $user1Messages); + $this->assertSame($this->message3->id, $user1Messages[0]->id); + $this->assertSame($this->message1->id, $user1Messages[1]->id); + $this->assertSame($this->message2->id, $user1Messages[2]->id); + + $user2Messages = $this->user2->messages->all(); + $this->assertCount(3, $user2Messages); + $this->assertSame($this->message3->id, $user2Messages[0]->id); + $this->assertSame($this->message1->id, $user2Messages[1]->id); + $this->assertSame($this->message2->id, $user2Messages[2]->id); + } +} |