Skip to content

Commit

Permalink
add another function to replace 'for' as setUser (#136)
Browse files Browse the repository at this point in the history
* add another function to replace 'for' as setUser
  • Loading branch information
musonza authored Apr 9, 2019
1 parent f04d20b commit ce4e6f4
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 54 deletions.
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,45 +174,45 @@ $message = Chat::messages()->getById($id);
#### Mark a message as read

```php
Chat::message($message)->for($user)->markRead();
Chat::message($message)->setUser($user)->markRead();
```

#### Flag / mark a message

```php
Chat::message($message)->for($user)->toggleFlag();
Chat::message($message)->setUser($user)->toggleFlag();

Chat::message($message)->for($user)->flagged(); // true
Chat::message($message)->setUser($user)->flagged(); // true
```

#### Mark whole conversation as read

```php
Chat::conversation($conversation)->for($user)->readAll();
Chat::conversation($conversation)->setUser($user)->readAll();
```

#### Unread messages count

```php
$unreadCount = Chat::messages()->for($user)->unreadCount();
$unreadCount = Chat::messages()->setUser($user)->unreadCount();
```

#### Unread messages count per Conversation

```php
Chat::conversation($conversation)->for($user)->unreadCount();
Chat::conversation($conversation)->setUser($user)->unreadCount();
```

#### Delete a message

```php
Chat::message($message)->for($user)->delete();
Chat::message($message)->setUser($user)->delete();
```

#### Clear a conversation

```php
Chat::conversation($conversation)->for($user)->clear();
Chat::conversation($conversation)->setUser($user)->clear();
```

#### Get a conversation between two users
Expand Down Expand Up @@ -258,26 +258,26 @@ Chat::conversation($conversation)->addParticipants([$user3, $user4]);
#### Get messages in a conversation

```php
Chat::conversation($conversation)->for($user)->getMessages()
Chat::conversation($conversation)->setUser($user)->getMessages()
```

#### Get user conversations by type

```php
// private conversations
$conversations = Chat::conversations()->for($user)->isPrivate()->get();
$conversations = Chat::conversations()->setUser($user)->isPrivate()->get();

// public conversations
$conversations = Chat::conversations()->for($user)->isPrivate(false)->get();
$conversations = Chat::conversations()->setUser($user)->isPrivate(false)->get();

// all conversations
$conversations = Chat::conversations()->for($user)->get();
$conversations = Chat::conversations()->setUser($user)->get();
```

#### Get recent messages

```php
$messages = Chat::conversations()->for($user)->limit(25)->page(1)->get();
$messages = Chat::conversations()->setUser($user)->limit(25)->page(1)->get();
```

Example
Expand Down Expand Up @@ -316,7 +316,7 @@ Example
There are a few ways you can achieve pagination
You can specify the `limit` and `page` as above using the respective functions or as below:
```
$paginated = Chat::conversations()->for($user)
$paginated = Chat::conversations()->setUser($user)
->setPaginationParams([
'page' => 3,
'perPage' => 10,
Expand Down
17 changes: 16 additions & 1 deletion src/Traits/SetsParticipants.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,22 @@ trait SetsParticipants
*
* @return $this
*/
function for ($user) {
public function for($user)
{
$this->user = $user;

return $this;
}

/**
* Sets user.
*
* @param object $user
*
* @return $this
*/
public function setUser($user)
{
$this->user = $user;

return $this;
Expand Down
28 changes: 13 additions & 15 deletions tests/Unit/ConversationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public function it_can_mark_a_conversation_as_read()
Chat::message('Hello there 0')->from($this->users[1])->to($conversation)->send();
Chat::message('Hello there 0')->from($this->users[1])->to($conversation)->send();

Chat::conversation($conversation)->for($this->users[0])->readAll();
Chat::conversation($conversation)->setUser($this->users[0])->readAll();
$this->assertEquals(0, $conversation->unReadNotifications($this->users[0])->count());
}

Expand All @@ -60,9 +60,9 @@ public function it_can_clear_a_conversation()
Chat::message('Hello there 1')->from($this->users[0])->to($conversation)->send();
Chat::message('Hello there 2')->from($this->users[0])->to($conversation)->send();

Chat::conversation($conversation)->for($this->users[0])->clear();
Chat::conversation($conversation)->setUser($this->users[0])->clear();

$messages = Chat::conversation($conversation)->for($this->users[0])->getMessages();
$messages = Chat::conversation($conversation)->setUser($this->users[0])->getMessages();

$this->assertEquals($messages->count(), 0);
}
Expand Down Expand Up @@ -192,9 +192,9 @@ public function it_returns_last_message_as_null_when_the_very_last_message_was_d
{
$conversation = Chat::createConversation([$this->users[0]->getKey(), $this->users[1]->getKey()]);
$message = Chat::message('Hello & Bye')->from($this->users[0])->to($conversation)->send();
Chat::message($message)->for($this->users[0])->delete();
Chat::message($message)->setUser($this->users[0])->delete();

$conversations = Chat::conversations()->for($this->users[0])->get();
$conversations = Chat::conversations()->setUser($this->users[0])->get();

$this->assertNull($conversations->get(0)->last_message);
}
Expand All @@ -205,11 +205,11 @@ public function it_returns_correct_attributes_in_last_message()
$conversation = Chat::createConversation([$this->users[0]->getKey(), $this->users[1]->getKey()]);
Chat::message('Hello')->from($this->users[0])->to($conversation)->send();

$conversations = Chat::conversations()->for($this->users[0])->get();
$conversations = Chat::conversations()->setUser($this->users[0])->get();

$this->assertTrue((bool) $conversations->get(0)->last_message->is_seen);

$conversations = Chat::conversations()->for($this->users[1])->get();
$conversations = Chat::conversations()->setUser($this->users[1])->get();

$this->assertFalse((bool) $conversations->get(0)->last_message->is_seen);
}
Expand All @@ -228,15 +228,14 @@ public function it_returns_the_correct_order_of_conversations_when_updated_at_is
$conversation = Chat::createConversation([$auth->getKey(), $this->users[3]->getKey()]);
Chat::message('Hello-' . $conversation->id)->from($auth)->to($conversation)->send();

$conversations = Chat::conversations()->setPaginationParams(['sorting' => 'desc'])->for($auth)->limit(1)->page(1)->get();
$conversations = Chat::conversations()->setPaginationParams(['sorting' => 'desc'])->setUser($auth)->limit(1)->page(1)->get();
$this->assertEquals('Hello-3', $conversations->items()[0]->last_message->body);

$conversations = Chat::conversations()->setPaginationParams(['sorting' => 'desc'])->for($auth)->limit(1)->page(2)->get();
$conversations = Chat::conversations()->setPaginationParams(['sorting' => 'desc'])->setUser($auth)->limit(1)->page(2)->get();
$this->assertEquals('Hello-2', $conversations->items()[0]->last_message->body);

$conversations = Chat::conversations()->setPaginationParams(['sorting' => 'desc'])->for($auth)->limit(1)->page(3)->get();
$conversations = Chat::conversations()->setPaginationParams(['sorting' => 'desc'])->setUser($auth)->limit(1)->page(3)->get();
$this->assertEquals('Hello-1', $conversations->items()[0]->last_message->body);

}

/** @test */
Expand Down Expand Up @@ -296,14 +295,13 @@ public function it_filters_conversations_by_type()
Chat::createConversation([$this->users[0]->getKey(), $this->users[1]->getKey()])->makePrivate(false);
Chat::createConversation([$this->users[0]->getKey(), $this->users[1]->getKey()])->makePrivate();

$allConversations = Chat::conversations()->for($this->users[0])->get();
$allConversations = Chat::conversations()->setUser($this->users[0])->get();
$this->assertCount(3, $allConversations);

$privateConversations = Chat::conversations()->for($this->users[0])->isPrivate()->get();
$privateConversations = Chat::conversations()->setUser($this->users[0])->isPrivate()->get();
$this->assertCount(2, $privateConversations);

$publicConversations = Chat::conversations()->for($this->users[0])->isPrivate(false)->get();
$publicConversations = Chat::conversations()->setUser($this->users[0])->isPrivate(false)->get();
$this->assertCount(1, $publicConversations);
}

}
38 changes: 19 additions & 19 deletions tests/Unit/MessageTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public function it_can_mark_a_message_as_read()
->to($conversation)
->send();

Chat::message($message)->for($this->users[0])->markRead();
Chat::message($message)->setUser($this->users[0])->markRead();

$this->assertNotNull($message->getNotification($this->users[0])->read_at);
}
Expand All @@ -77,9 +77,9 @@ public function it_can_delete_a_message()
$perPage = 5;
$page = 1;

Chat::message($message)->for($this->users[1])->delete();
Chat::message($message)->setUser($this->users[1])->delete();

$messages = Chat::conversation($conversation)->for($this->users[1])->getMessages($perPage, $page);
$messages = Chat::conversation($conversation)->setUser($this->users[1])->getMessages($perPage, $page);

$this->assertEquals(0, $messages->count());
}
Expand All @@ -94,10 +94,10 @@ public function it_can_list_deleted_messages()
$perPage = 5;
$page = 1;

Chat::message($message)->for($this->users[1])->delete();
Chat::message($message)->setUser($this->users[1])->delete();

$messages = Chat::conversation($conversation)
->for($this->users[1])
->setUser($this->users[1])
->deleted()
->getMessages($perPage, $page);

Expand Down Expand Up @@ -127,10 +127,10 @@ public function it_can_return_paginated_messages_in_a_conversation()
Chat::message('Hello Man')->from($this->users[1])->to($conversation)->send();

$this->assertEquals($conversation->messages->count(), 7);
$this->assertEquals(3, Chat::conversation($conversation)->for($this->users[0])->perPage(3)->getMessages()->count());
$this->assertEquals(3, Chat::conversation($conversation)->for($this->users[0])->perPage(3)->page(2)->getMessages()->count());
$this->assertEquals(1, Chat::conversation($conversation)->for($this->users[0])->perPage(3)->page(3)->getMessages()->count());
$this->assertEquals(0, Chat::conversation($conversation)->for($this->users[0])->perPage(3)->page(4)->getMessages()->count());
$this->assertEquals(3, Chat::conversation($conversation)->setUser($this->users[0])->perPage(3)->getMessages()->count());
$this->assertEquals(3, Chat::conversation($conversation)->setUser($this->users[0])->perPage(3)->page(2)->getMessages()->count());
$this->assertEquals(1, Chat::conversation($conversation)->setUser($this->users[0])->perPage(3)->page(3)->getMessages()->count());
$this->assertEquals(0, Chat::conversation($conversation)->setUser($this->users[0])->perPage(3)->page(4)->getMessages()->count());
}

/** @test */
Expand All @@ -149,10 +149,10 @@ public function it_can_return_recent_user_messsages()
Chat::message('Hello Man 3')->from($this->users[2])->to($conversation2)->send();
Chat::message('Hello Man 10')->from($this->users[0])->to($conversation2)->send();

$recent_messages = Chat::conversations()->for($this->users[0])->limit(5)->page(1)->get();
$recent_messages = Chat::conversations()->setUser($this->users[0])->limit(5)->page(1)->get();
$this->assertCount(3, $recent_messages);

$recent_messages = Chat::conversations()->for($this->users[0])->setPaginationParams([
$recent_messages = Chat::conversations()->setUser($this->users[0])->setPaginationParams([
'perPage' => 1,
'page' => 1,
'pageName' => 'test',
Expand All @@ -170,12 +170,12 @@ public function it_return_unread_messages_count_for_user()
Chat::message('Hello 2')->from($this->users[0])->to($conversation)->send();
$message = Chat::message('Hello 2')->from($this->users[0])->to($conversation)->send();

$this->assertEquals(2, Chat::messages()->for($this->users[1])->unreadCount());
$this->assertEquals(1, Chat::messages()->for($this->users[0])->unreadCount());
$this->assertEquals(2, Chat::messages()->setUser($this->users[1])->unreadCount());
$this->assertEquals(1, Chat::messages()->setUser($this->users[0])->unreadCount());

Chat::message($message)->for($this->users[1])->markRead();
Chat::message($message)->setUser($this->users[1])->markRead();

$this->assertEquals(1, Chat::messages()->for($this->users[1])->unreadCount());
$this->assertEquals(1, Chat::messages()->setUser($this->users[1])->unreadCount());
}

/** @test */
Expand All @@ -198,10 +198,10 @@ public function it_flags_a_message()
->to($conversation)
->send();

Chat::message($message)->for($this->users[1])->toggleFlag();
$this->assertTrue(Chat::message($message)->for($this->users[1])->flagged());
Chat::message($message)->setUser($this->users[1])->toggleFlag();
$this->assertTrue(Chat::message($message)->setUser($this->users[1])->flagged());

Chat::message($message)->for($this->users[1])->toggleFlag();
$this->assertFalse(Chat::message($message)->for($this->users[1])->flagged());
Chat::message($message)->setUser($this->users[1])->toggleFlag();
$this->assertFalse(Chat::message($message)->setUser($this->users[1])->flagged());
}
}
10 changes: 5 additions & 5 deletions tests/Unit/NotificationsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@ public function it_gets_unread_notifications_per_conversation()
$conversation2 = Chat::createConversation([$this->users[2]->getKey(), $this->users[0]->getKey()]);
Chat::message('Hello 3')->from($this->users[2])->to($conversation2)->send();

$this->assertEquals(3, Chat::messages()->for($this->users[0])->unreadCount());
$this->assertEquals(2, Chat::conversation($conversation1)->for($this->users[0])->unreadCount());
$this->assertEquals(1, Chat::conversation($conversation2)->for($this->users[0])->unreadCount());
$this->assertEquals(3, Chat::messages()->setUser($this->users[0])->unreadCount());
$this->assertEquals(2, Chat::conversation($conversation1)->setUser($this->users[0])->unreadCount());
$this->assertEquals(1, Chat::conversation($conversation2)->setUser($this->users[0])->unreadCount());

//Read message from from convo
Chat::message($conversation1->messages()->first())->for($this->users[0])->markRead();
$this->assertEquals(2, Chat::messages()->for($this->users[0])->unreadCount());
Chat::message($conversation1->messages()->first())->setUser($this->users[0])->markRead();
$this->assertEquals(2, Chat::messages()->setUser($this->users[0])->unreadCount());
}
}

0 comments on commit ce4e6f4

Please sign in to comment.