shouldReceive('get')->with(SystemSettingKey::TIMEZONE)->andReturn('UTC'); $middleware = new HandlePreferredTimezone($getSystemSettings); $request = Request::create('/', 'GET'); $next = fn($req) => new Response(); $middleware->handle($request, $next); expect(config('app.display_timezone'))->toBe('UTC'); }); test('it uses user preference if set', function () { $getSystemSettings = Mockery::mock(GetSystemSettings::class); $getSystemSettings->shouldReceive('get')->with(SystemSettingKey::TIMEZONE)->andReturn('UTC'); $user = Mockery::mock(User::class); $user->shouldReceive('getAttribute')->with('settings')->andReturn(collect([ UserSettingKey::TIMEZONE->value => 'Asia/Jakarta' ])); $middleware = new HandlePreferredTimezone($getSystemSettings); $request = Request::create('/', 'GET'); $request->setUserResolver(fn() => $user); $next = fn($req) => new Response(); $middleware->handle($request, $next); expect(config('app.display_timezone'))->toBe('Asia/Jakarta'); });