feat(brand): membuat factory dan test

This commit is contained in:
Yoga Pangestu 2025-09-29 20:29:43 +07:00
parent 7ecf7c5e0d
commit ad70a78e03
2 changed files with 89 additions and 0 deletions

View File

@ -0,0 +1,22 @@
<?php
namespace Database\Factories;
use App\Models\Brand;
use Illuminate\Database\Eloquent\Factories\Factory;
class BrandFactory extends Factory
{
public function definition(): array
{
return [
'name' => $this->faker->unique()->name(),
'slug' => $this->faker->slug(),
'sort_order' => function () {
$max = Brand::max('sort_order') ?? 0;
return $max + 1;
},
];
}
}

View File

@ -0,0 +1,67 @@
<?php
use App\Livewire\Studio\Catalog\Brand;
use App\Models\Brand as BrandModel;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;
uses(RefreshDatabase::class);
it('renders successfully', function () {
Livewire::test(Brand::class)
->assertViewIs('livewire.studio.catalog.brands')
->assertViewHas('pageTitle', 'Merek');
});
it('displays all brands', function () {
BrandModel::factory()->count(10)->create();
$brand = BrandModel::first();
Livewire::test(Brand::class)->assertSee($brand->name);
});
it('can create a brand', function () {
$data = BrandModel::factory()->raw();
Livewire::test(Brand::class)
->call('openModal', 'create', 'Tambah Merek')
->set('form.name', $data['name'])
->set('form.slug', $data['slug'])
->set('form.sort_order', $data['sort_order'])
->call('create')
->assertHasNoErrors()
->assertDispatched('refreshDatatable');
expect(BrandModel::count())->toBe(1);
expect(BrandModel::first()->name)->toBe($data['name']);
});
it('can update a brand', function () {
$brand = BrandModel::factory()->create();
$data = BrandModel::factory()->raw();
Livewire::test(Brand::class)
->call('openModal', 'update', 'Edit Merek', $brand->id)
->set('form.name', $data['name'])
->set('form.sort_order', $data['sort_order'])
->call('update')
->assertHasNoErrors()
->assertDispatched('refreshDatatable');
$brand->refresh();
expect($brand->name)->toBe($data['name']);
});
it('can delete an brand', function () {
$brand = BrandModel::factory()->create();
Livewire::test(Brand::class)
->call('delete', $brand)
->assertHasNoErrors()
->assertDispatched('refreshDatatable');
expect(BrandModel::count())->toBe(0);
});