fix: resolve PSR-4 autoloading and test failures

- Add proper Tests\ namespace to all test classes in tests/Feature and tests/Unit
  - Split RemainingModelsTest.php into separate files (PSR-4 compliance)
  - Create missing factories: MetaFactory, RemoteEmailFactory
  - Add HasFactory trait to RemoteEmail model
  - Add missing ReflectionClass imports to test files
  - Fix mass assignment issues in Meta and RemoteEmail models
  - Override database connection for RemoteEmail in testing environment
  - Fix DateTime comparison precision issues in tests
This commit is contained in:
idevakk
2025-11-13 09:49:21 -08:00
parent 68ef391c5d
commit 3706072ce5
38 changed files with 863 additions and 680 deletions

View File

@@ -0,0 +1,79 @@
<?php
namespace Tests\Unit\Models;
use App\Models\PremiumEmail;
use App\Models\User;
use Carbon\Carbon;
use Tests\TestCase;
class PremiumEmailTest extends TestCase
{
protected function setUp(): void
{
parent::setUp();
$this->user = User::factory()->create();
}
/** @test */
public function it_can_create_a_premium_email_with_factory()
{
$premiumEmail = PremiumEmail::factory()->create();
$this->assertInstanceOf(PremiumEmail::class, $premiumEmail);
$this->assertIsString($premiumEmail->from_email);
$this->assertIsString($premiumEmail->subject);
}
/** @test */
public function it_has_correct_fillable_attributes()
{
$premiumEmailData = [
'user_id' => $this->user->id,
'message_id' => 'test_msg_123',
'from_email' => 'sender@example.com',
'from_name' => 'Test Sender',
'subject' => 'Test Subject',
'to' => ['recipient@example.com'],
];
$premiumEmail = PremiumEmail::create($premiumEmailData);
foreach ($premiumEmailData as $key => $value) {
$this->assertEquals($value, $premiumEmail->$key);
}
}
/** @test */
public function it_belongs_to_a_user()
{
$premiumEmail = PremiumEmail::factory()->create(['user_id' => $this->user->id]);
$this->assertInstanceOf(User::class, $premiumEmail->user);
$this->assertEquals($this->user->id, $premiumEmail->user->id);
}
/** @test */
public function it_casts_timestamp_to_datetime()
{
$timestamp = now()->subDays(5);
$premiumEmail = PremiumEmail::factory()->create(['timestamp' => $timestamp]);
$this->assertInstanceOf(Carbon::class, $premiumEmail->timestamp);
$this->assertEquals($timestamp->format('Y-m-d H:i:s'), $premiumEmail->timestamp->format('Y-m-d H:i:s'));
}
/** @test */
public function it_can_query_seen_and_unseen_emails()
{
$seenEmail = PremiumEmail::factory()->create(['is_seen' => true]);
$unseenEmail = PremiumEmail::factory()->create(['is_seen' => false]);
$seenEmails = PremiumEmail::where('is_seen', true)->get();
$unseenEmails = PremiumEmail::where('is_seen', false)->get();
$this->assertCount(1, $seenEmails);
$this->assertCount(1, $unseenEmails);
}
}