Browse Source

Adiciona ordenação ao índice de associados

master
Guilherme Capanema 6 years ago
parent
commit
5d6ee42452
4 changed files with 51 additions and 7 deletions
  1. +13
    -0
      app/Http/Livewire/Collaborators/Associates/Index.php
  2. +1
    -1
      database/seeds/AssociateSeeder.php
  3. +1
    -1
      resources/views/livewire/collaborators/associates/index.blade.php
  4. +36
    -5
      tests/Feature/Collaborators/Associates/IndexTest.php

+ 13
- 0
app/Http/Livewire/Collaborators/Associates/Index.php View File

@ -51,6 +51,19 @@ class Index extends Component
$this->resetPage();
}
public function orderBy($orderColumn)
{
if ($this->orderColumn === $orderColumn) {
$this->orderDirection = $this->orderDirection === 'ASC' ? 'DESC' : 'ASC';
} else {
$this->orderDirection = 'ASC';
}
$this->orderColumn = $orderColumn;
$this->resetPage();
}
public function render()
{
$associates = Associate::with('category')


+ 1
- 1
database/seeds/AssociateSeeder.php View File

@ -13,6 +13,6 @@ class AssociateSeeder extends Seeder
public function run()
{
Associate::flushEventListeners();
factory(Associate::class, 10000)->create();
factory(Associate::class, 130)->create();
}
}

+ 1
- 1
resources/views/livewire/collaborators/associates/index.blade.php View File

@ -70,7 +70,7 @@
<thead>
<tr>
<th class="px-6 py-3 border-b border-gray-200 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
<th wire:click="orderBy('name')" class="px-6 py-3 border-b border-gray-200 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider cursor-pointer">
{{ __('associates.attributes.name') }}
</th>
<th class="px-6 py-3 border-b border-gray-200 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">


+ 36
- 5
tests/Feature/Collaborators/Associates/IndexTest.php View File

@ -30,15 +30,22 @@ class IndexTest extends TestCase
$collaborator = factory(Collaborator::class)->create();
$this->be($collaborator, 'collaborators');
factory(Associate::class)->create(['name' => 'José da Silva']);
factory(Associate::class)->create(['name' => 'Maria da Conceição']);
factory(Associate::class)->create([
'name' => 'José da Silva',
'created_at' => now(),
]);
factory(Associate::class)->create([
'name' => 'Maria da Conceição',
'created_at' => now()->addMinute(),
]);
Livewire::test('collaborators.associates.index')
->assertSee('José da Silva')
->set('perPage', 2)
->assertSee('Maria da Conceição')
->set('perPage', 1)
->assertSee('José da Silva')
->assertDontSee('Maria da Conceição');
->set('perPage', 1)
->assertSee('Maria da Conceição')
->assertDontSee('José da Silva');
}
/** @test */
@ -107,4 +114,28 @@ class IndexTest extends TestCase
->assertDontSee('José da Silva')
->assertSee('Maria da Conceição');
}
/** @test */
public function index_is_sortable_by_name()
{
$collaborator = factory(Collaborator::class)->create();
$this->be($collaborator, 'collaborators');
factory(Associate::class)->create([
'name' => 'José da Silva',
'created_at' => now(),
]);
factory(Associate::class)->create([
'name' => 'Maria da Conceição',
'created_at' => now()->addMinute(),
]);
Livewire::test('collaborators.associates.index')
->set('perPage', 1)
->assertSee('Maria da Conceição')
->assertDontSee('José da Silva')
->call('orderBy', 'name')
->assertSee('José da Silva')
->assertDontSee('Maria da Conceição');
}
}