'Limit Corp', 'contact_name' => 'Limit Admin', 'email' => 'admin@limitcorp.com', 'desired_subdomain' => $tenantId, 'employee_count' => 2, // Max 2 staff members 'requested_features' => ['payroll'], 'email_verified_at' => now(), 'status' => 'approved', ]); (new ProvisionTenantJob($inquiry))->handle(); $tenant = Tenant::find($tenantId); $tenant->run(function () use ($tenantId) { // Seed 2 active employees (reaching limit of 2) \App\Models\User::create(['name' => 'Staff 1', 'email' => 'staff1@limitcorp.com', 'type' => 'employee', 'password' => 'secret']); \App\Models\User::create(['name' => 'Staff 2', 'email' => 'staff2@limitcorp.com', 'type' => 'employee', 'password' => 'secret']); $middleware = new \App\Http\Middleware\EnforceEmployeeLimit(); $request = \Illuminate\Http\Request::create('/hr/employees', 'POST'); $request->headers->set('Accept', 'application/json'); $response = $middleware->handle($request, function () { return response()->json(['success' => true]); }); // 3rd employee attempt must be rejected with 403 Forbidden $this->assertEquals(403, $response->getStatusCode()); }); } }