<?php
namespace Database\Factories;
use App\Modules\Catalog\Models\Product;
use App\Modules\Order\Models\Order;
use App\Modules\Order\Models\OrderItem;
use App\Modules\Reviews\Models\Review;
use App\Modules\User\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
class ReviewFactory extends Factory
{
protected $model = Review::class;
public function definition(): array
{
return [
'user_id' => User::factory(),
'product_id' => Product::factory(),
'order_id' => null,
'order_item_id' => null,
'rating' => fake()->numberBetween(1, 5),
'title' => fake()->sentence(4),
'body' => fake()->paragraph(),
'media' => [],
'is_verified_purchase' => false,
'vendor_reply' => null,
'vendor_replied_at' => null,
'status' => 'pending',
'rejection_reason' => null,
'helpful_count' => 0,
];
}
public function approved(): static
{
return $this->state(['status' => 'approved']);
}
public function pending(): static
{
return $this->state(['status' => 'pending']);
}
public function rejected(string $reason = 'Inappropriate content'): static
{
return $this->state([
'status' => 'rejected',
'rejection_reason' => $reason,
]);
}
public function verified(): static
{
return $this->state(['is_verified_purchase' => true]);
}
}