diff --git a/src/Http/Middleware/PulseRecording.php b/src/Http/Middleware/PulseRecording.php new file mode 100644 index 00000000..8f38f252 --- /dev/null +++ b/src/Http/Middleware/PulseRecording.php @@ -0,0 +1,48 @@ + $this->pulse->startRecording(), + 'stop' => $this->pulse->stopRecording(), + }; + + return $next($request); + } +} diff --git a/src/Pulse.php b/src/Pulse.php index 1baacd5e..cffc1e9c 100644 --- a/src/Pulse.php +++ b/src/Pulse.php @@ -234,12 +234,6 @@ public function filter(callable $filter): self */ public function store(Ingest $ingest): self { - if (! $this->shouldRecord) { - $this->rememberedUserId = null; - - return $this->flushEntries(); - } - $this->rescue(fn () => $ingest->ingest( $this->entries->map->resolve()->filter($this->shouldRecord(...)), )); diff --git a/tests/Feature/RecordingControlMiddlewareTest.php b/tests/Feature/RecordingControlMiddlewareTest.php new file mode 100644 index 00000000..b5119e56 --- /dev/null +++ b/tests/Feature/RecordingControlMiddlewareTest.php @@ -0,0 +1,43 @@ + 'ok')->middleware([ + MyMiddleware::class.':first', + PulseRecording::stop(), + MyMiddleware::class.':second', + PulseRecording::start(), + MyMiddleware::class.':third', + PulseRecording::stop(), + MyMiddleware::class.':fourth', + PulseRecording::start(), + MyMiddleware::class.':fifth', + PulseRecording::stop(), + MyMiddleware::class.':sixth', + ]); + + $response = get('test-route'); + + $response->assertOk(); + $interactions = Pulse::ignore(fn () => DB::table('pulse_cache_interactions')->get()); + expect($interactions->pluck('key')->all())->toBe([ + 'first', + 'third', + 'fifth', + ]); +}); + +class MyMiddleware +{ + public function handle($request, $next, $key) + { + Cache::get($key); + + return $next($request); + } +}