<?php
namespace Database\Seeders;
use App\Modules\User\Models\User;
use App\Modules\Vendor\Models\Vendor;
use Illuminate\Database\Seeder;
class TestUsersSeeder extends Seeder
{
public function run(): void
{
// ── Test Customer ─────────────────────────────────────────────────────
$customer = User::firstOrCreate(
['email' => 'customer@stpecommerce.com'],
[
'name' => 'Test Customer',
'password' => 'Customer@1234!',
'email_verified_at' => now(),
'phone' => '9800000001',
]
);
$customer->assignRole('customer');
// ── Test Vendor (user + vendor record) ────────────────────────────────
$vendorUser = User::firstOrCreate(
['email' => 'vendor@stpecommerce.com'],
[
'name' => 'Test Vendor',
'password' => 'Vendor@1234!',
'email_verified_at' => now(),
'phone' => '9800000002',
]
);
$vendorUser->assignRole('vendor');
$vendor = Vendor::firstOrCreate(
['email' => 'vendor@stpecommerce.com'],
[
'owner_id' => $vendorUser->id,
'name' => 'Test Store',
'slug' => 'test-store',
'legal_name' => 'Test Store Pvt. Ltd.',
'phone' => '9800000002',
'country' => 'NP',
'city' => 'Kathmandu',
'address' => 'Thamel, Kathmandu',
'commission_rate' => 10.00,
'status' => 'approved',
'approved_at' => now(),
'is_active' => true,
'plan' => 'basic',
]
);
// Link vendor record back to the user row (User::vendor() is a BelongsTo on vendor_id)
if (! $vendorUser->vendor_id) {
$vendorUser->update(['vendor_id' => $vendor->id]);
}
$this->command->info('✅ Test users seeded:');
$this->command->info(' Customer : customer@stpecommerce.com / Customer@1234!');
$this->command->info(' Vendor : vendor@stpecommerce.com / Vendor@1234!');
$this->command->info(' Vendor dashboard: /vendor-dashboard');
}
}