Merge pull request #14 from Juhlinus/contacts-test

Added Contacts Feature test
This commit is contained in:
Jonathan Reinink 2019-04-09 19:32:55 -04:00 committed by GitHub
commit 20e4d93f01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 93 additions and 0 deletions

View File

@ -0,0 +1,93 @@
<?php
namespace Tests\Feature;
use App\User;
use App\Account;
use App\Contact;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ContactsTest extends TestCase
{
use RefreshDatabase;
protected function setUp(): void
{
parent::setUp();
$account = Account::create(['name' => 'Acme Corporation']);
$this->user = factory(User::class)->create([
'account_id' => $account->id,
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'johndoe@example.com',
'owner' => true,
]);
}
public function test_can_view_contacts()
{
$this->user->account->contacts()->saveMany(
factory(Contact::class, 5)->make()
);
$this->actingAs($this->user)
->get('/contacts')
->assertStatus(200)
->assertPropCount('contacts.data', 5)
->assertPropValue('contacts.data', function ($contacts) {
$this->assertEquals(
['id', 'name', 'phone', 'city',
'deleted_at', 'organization'],
array_keys($contacts[0])
);
});
}
public function test_can_search_for_contacts()
{
$this->user->account->contacts()->saveMany(
factory(contact::class, 5)->make()
)->first()->update([
'first_name' => 'Greg',
'last_name' => 'Andersson'
]);
$this->actingAs($this->user)
->get('/contacts?search=Greg')
->assertStatus(200)
->assertPropValue('filters.search', 'Greg')
->assertPropCount('contacts.data', 1)
->assertPropValue('contacts.data', function ($contacts) {
$this->assertEquals('Greg Andersson', $contacts[0]['name']);
});
}
public function test_cannot_view_deleted_contacts()
{
$this->user->account->contacts()->saveMany(
factory(contact::class, 5)->make()
)->first()->delete();
$this->actingAs($this->user)
->get('/contacts')
->assertStatus(200)
->assertPropCount('contacts.data', 4);
}
public function test_can_filter_to_view_deleted_contacts()
{
$this->user->account->contacts()->saveMany(
factory(contact::class, 5)->make()
)->first()->delete();
$this->actingAs($this->user)
->get('/contacts?trashed=with')
->assertStatus(200)
->assertPropValue('filters.trashed', 'with')
->assertPropCount('contacts.data', 5);
}
}