diff --git a/tests/Feature/IngestTest.php b/tests/Feature/IngestTest.php index 0f7e2036..9929828b 100644 --- a/tests/Feature/IngestTest.php +++ b/tests/Feature/IngestTest.php @@ -1,7 +1,10 @@ count(); expect(Pulse::queue())->toHaveCount(1); - expect(DB::table('pulse_queries')->count())->toBe(0); + Pulse::ignore(fn () => expect(DB::table('pulse_queries')->count())->toBe(0)); Pulse::store(); expect(Pulse::queue())->toHaveCount(0); - expect(DB::table('pulse_queries')->count())->toBe(1); + Pulse::ignore(fn () => expect(DB::table('pulse_queries')->count())->toBe(1)); +}); + +it('does not ingest queries under the slow query threshold', function () { + Config::set('pulse.slow_query_threshold', 1000); + $listeners = Event::getRawListeners()[QueryExecuted::class]; + Event::forget(QueryExecuted::class); + collect([ + function (QueryExecuted $event) { + $event->time = 999; + }, + ...$listeners, + ])->each(fn ($listener) => Event::listen(QueryExecuted::class, $listener)); + + DB::table('users')->count(); + Pulse::store(); + + Pulse::ignore(fn () => expect(DB::table('pulse_queries')->count())->toBe(0)); +}); + +it('ingests queries equal to the slow query threshold', function () { + Config::set('pulse.slow_query_threshold', 1000); + $listeners = Event::getRawListeners()[QueryExecuted::class]; + Event::forget(QueryExecuted::class); + collect([ + function (QueryExecuted $event) { + $event->time = 1000; + }, + ...$listeners, + ])->each(fn ($listener) => Event::listen(QueryExecuted::class, $listener)); + + DB::table('users')->count(); + Pulse::store(); + + Pulse::ignore(fn () => expect(DB::table('pulse_queries')->count())->toBe(1)); +}); + +it('ingests queries over the slow query threshold', function () { + Config::set('pulse.slow_query_threshold', 1000); + $listeners = Event::getRawListeners()[QueryExecuted::class]; + Event::forget(QueryExecuted::class); + collect([ + function (QueryExecuted $event) { + $event->time = 1001; + }, + ...$listeners, + ])->each(fn ($listener) => Event::listen(QueryExecuted::class, $listener)); + + DB::table('users')->count(); + Pulse::store(); + + Pulse::ignore(fn () => expect(DB::table('pulse_queries')->count())->toBe(1)); });