46 lines
1.3 KiB
PHP
46 lines
1.3 KiB
PHP
<?php
|
|
|
|
use App\Jobs\TrackAnalytics;
|
|
use App\Models\AnalyticsEvent;
|
|
use Illuminate\Support\Facades\Queue;
|
|
|
|
test('TrackAnalytics job records event in MongoDB', function () {
|
|
// We don't fake the queue here because we want to run the job
|
|
// synchronously to verify MongoDB storage.
|
|
|
|
$eventData = [
|
|
'eventType' => 'test_event',
|
|
'mailboxHash' => 'test-mailbox-hash',
|
|
'domainHash' => 'test-domain-hash',
|
|
'metadata' => ['foo' => 'bar'],
|
|
'userId' => 123,
|
|
'userType' => 'authenticated',
|
|
'ipAddress' => '1.2.3.4',
|
|
'userAgent' => 'TestAgent',
|
|
];
|
|
|
|
$job = new TrackAnalytics(
|
|
...$eventData
|
|
);
|
|
|
|
$job->handle();
|
|
|
|
// Verify MongoDB storage
|
|
$event = AnalyticsEvent::where('mailbox_hash', 'test-mailbox-hash')
|
|
->where('event_type', 'test_event')
|
|
->first();
|
|
|
|
expect($event)->not->toBeNull()
|
|
->and($event->event_type)->toBe('test_event')
|
|
->and($event->mailbox_hash)->toBe('test-mailbox-hash')
|
|
->and($event->domain_hash)->toBe('test-domain-hash')
|
|
->and($event->user_id)->toBe(123)
|
|
->and($event->user_type)->toBe('authenticated')
|
|
->and($event->ip_address)->toBe('1.2.3.4')
|
|
->and($event->user_agent)->toBe('TestAgent')
|
|
->and($event->metadata)->toBe(['foo' => 'bar']);
|
|
|
|
// Cleanup
|
|
$event->delete();
|
|
});
|