create(); Event::factory()->count(3)->create(['tenant_id' => $tenant->id]); $this->assertCount(3, $tenant->events()->get()); } public function testTenantHasPhotosThroughEvents(): void { $tenant = Tenant::factory()->create(); $event = Event::factory()->create(['tenant_id' => $tenant->id]); Photo::factory()->count(2)->create(['event_id' => $event->id]); $this->assertCount(2, $tenant->photos()->get()); } public function testTenantHasManyPackagePurchases(): void { $tenant = Tenant::factory()->create(); $package = Package::factory()->create(); PackagePurchase::factory()->count(2)->create([ 'tenant_id' => $tenant->id, 'package_id' => $package->id, ]); $this->assertCount(2, $tenant->purchases()->get()); } public function testActiveSubscriptionAccessorReturnsTrueWhenActivePackageExists(): void { $tenant = Tenant::factory()->create(); $package = Package::factory()->create(['type' => 'reseller']); TenantPackage::factory()->create([ 'tenant_id' => $tenant->id, 'package_id' => $package->id, 'active' => true, ]); $this->assertTrue($tenant->fresh()->active_subscription); } public function testActiveSubscriptionAccessorReturnsFalseWithoutActivePackage(): void { $tenant = Tenant::factory()->create(); $this->assertFalse($tenant->fresh()->active_subscription); } public function testIncrementUsedEventsReturnsFalseWithoutActivePackage(): void { $tenant = Tenant::factory()->create(); $this->assertFalse($tenant->incrementUsedEvents()); } public function testIncrementUsedEventsUpdatesActivePackage(): void { $tenant = Tenant::factory()->create(); $package = Package::factory()->create(['type' => 'reseller']); $tenantPackage = TenantPackage::factory()->create([ 'tenant_id' => $tenant->id, 'package_id' => $package->id, 'active' => true, 'used_events' => 1, ]); $this->assertTrue($tenant->incrementUsedEvents(2)); $this->assertEquals(3, $tenantPackage->fresh()->used_events); } public function testSettingsCastToArray(): void { $tenant = Tenant::factory()->create([ 'settings' => ['theme' => 'dark', 'logo' => 'logo.png'], ]); $this->assertIsArray($tenant->settings); $this->assertSame('dark', $tenant->settings['theme']); } public function testFeaturesCastToArray(): void { $tenant = Tenant::factory()->create([ 'features' => ['photo_likes' => true, 'analytics' => false], ]); $this->assertIsArray($tenant->features); $this->assertTrue($tenant->features['photo_likes']); $this->assertFalse($tenant->features['analytics']); } }