tenant->update(['event_credits_balance' => 0]); $eventType = EventType::factory()->create(); $package = Package::factory()->create([ 'type' => 'endcustomer', 'price' => 0, 'gallery_days' => 30, ]); $this->tenant->tenantPackages()->create([ 'package_id' => $package->id, 'price' => $package->price, 'purchased_at' => now()->subDay(), 'expires_at' => now()->addMonth(), 'active' => true, ]); $payload = [ 'name' => 'Sample Event', 'description' => 'Test description', 'event_date' => Carbon::now()->addDays(3)->toDateString(), 'event_type_id' => $eventType->id, ]; $response = $this->authenticatedRequest('POST', '/api/v1/tenant/events', $payload); $response->assertStatus(402) ->assertJsonPath('error.code', 'event_credits_exhausted') ->assertJsonPath('error.meta.balance', 0); $this->tenant->update(['event_credits_balance' => 2]); $createResponse = $this->authenticatedRequest('POST', '/api/v1/tenant/events', $payload); $createResponse->assertStatus(201) ->assertJsonPath('message', 'Event created successfully') ->assertJsonPath('data.package.id', $package->id); $createdEventId = $createResponse->json('data.id'); $this->assertNotNull($createdEventId); $this->assertDatabaseHas('event_packages', [ 'event_id' => $createdEventId, 'package_id' => $package->id, ]); } }