From 14bd07d4a881356f9f4c3c25a01e4609f4a9b4aa Mon Sep 17 00:00:00 2001
From: Philipp Lang <philipp@aweos.de>
Date: Wed, 16 Nov 2022 16:30:23 +0100
Subject: [PATCH] Add test for activity

---
 database/factories/ActivityFactory.php    |  5 ++++
 database/factories/SubactivityFactory.php | 10 ++++++++
 tests/Feature/Member/IndexTest.php        | 28 +++++++++++++++++++++++
 3 files changed, 43 insertions(+)

diff --git a/database/factories/ActivityFactory.php b/database/factories/ActivityFactory.php
index 2202a642..01b8b1d3 100644
--- a/database/factories/ActivityFactory.php
+++ b/database/factories/ActivityFactory.php
@@ -29,4 +29,9 @@ class ActivityFactory extends Factory
     {
         return $this->state(['nami_id' => $namiId]);
     }
+
+    public function name(string $name): self
+    {
+        return $this->state(['name' => $name]);
+    }
 }
diff --git a/database/factories/SubactivityFactory.php b/database/factories/SubactivityFactory.php
index 030f719a..d53b75e2 100644
--- a/database/factories/SubactivityFactory.php
+++ b/database/factories/SubactivityFactory.php
@@ -34,4 +34,14 @@ class SubactivityFactory extends Factory
     {
         return $this->state(['is_age_group' => true]);
     }
+
+    public function name(string $name): self
+    {
+        return $this->state(['name' => $name]);
+    }
+
+    public function filterable(): self
+    {
+        return $this->state(['is_filterable' => true]);
+    }
 }
diff --git a/tests/Feature/Member/IndexTest.php b/tests/Feature/Member/IndexTest.php
index 016a93a1..d5532955 100644
--- a/tests/Feature/Member/IndexTest.php
+++ b/tests/Feature/Member/IndexTest.php
@@ -72,4 +72,32 @@ class IndexTest extends TestCase
         $this->assertInertiaHas(false, $response, 'data.data.1.is_leader');
         $this->assertInertiaHas(false, $response, 'data.data.2.is_leader');
     }
+
+    public function testItShowsAgeGroupIcon(): void
+    {
+        $this->withoutExceptionHandling();
+        $this->login()->loginNami();
+        $member = Member::factory()
+            ->defaults()
+            ->has(Membership::factory()->for(Subactivity::factory()->ageGroup()->name('Wölfling'))->for(Activity::factory()->state(['has_efz' => false])))
+            ->create();
+
+        $response = $this->get('/member');
+
+        $this->assertInertiaHas('woelfling', $response, 'data.data.0.age_group_icon');
+    }
+
+    public function testItShowsActivitiesAndSubactivities(): void
+    {
+        $this->withoutExceptionHandling();
+        $this->login()->loginNami();
+        $activity = Activity::factory()->hasAttached(Subactivity::factory()->name('SG Nahost')->ageGroup()->filterable())->name('Mitglied')->create();
+        $subactivity = $activity->subactivities->first();
+
+        $response = $this->get('/member');
+
+        $this->assertInertiaHas('SG Nahost', $response, "subactivities.{$activity->id}.{$subactivity->id}");
+        $this->assertInertiaHas('SG Nahost', $response, "filterSubactivities.{$subactivity->id}");
+        $this->assertInertiaHas('Mitglied', $response, "activities.{$activity->id}");
+    }
 }