From 736f2e94f13803837702db055802abda9a3dabf0 Mon Sep 17 00:00:00 2001 From: dena Date: Fri, 24 Jul 2026 14:01:44 +0200 Subject: [PATCH 1/9] drive-by cleanup --- tests/Routes/Policies/PolicyControllerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Routes/Policies/PolicyControllerTest.php b/tests/Routes/Policies/PolicyControllerTest.php index a973c769..74858ec5 100644 --- a/tests/Routes/Policies/PolicyControllerTest.php +++ b/tests/Routes/Policies/PolicyControllerTest.php @@ -1,6 +1,6 @@ Date: Fri, 24 Jul 2026 14:01:55 +0200 Subject: [PATCH 2/9] add PolicyResourceTest --- tests/Resources/PolicyResourceTest.php | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/Resources/PolicyResourceTest.php diff --git a/tests/Resources/PolicyResourceTest.php b/tests/Resources/PolicyResourceTest.php new file mode 100644 index 00000000..495a4e2c --- /dev/null +++ b/tests/Resources/PolicyResourceTest.php @@ -0,0 +1,27 @@ + 'terms-of-use', + 'content_vue_file' => 'terms-of-use/example.vue', + ]); + + $resource = new PolicyResource($policy); + $data = json_decode($resource->toJson()); + + $this->assertEquals( + data_get($data, 'metadata.active_from'), + null, + ); + } +} From 5f2c8cacd395d46fd4780e6812aab332b160b45e Mon Sep 17 00:00:00 2001 From: dena Date: Fri, 24 Jul 2026 14:11:36 +0200 Subject: [PATCH 3/9] guardrail for null activeFrom --- app/Http/Resources/PolicyResource.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/Http/Resources/PolicyResource.php b/app/Http/Resources/PolicyResource.php index 40b5fa8c..d2e2dfeb 100644 --- a/app/Http/Resources/PolicyResource.php +++ b/app/Http/Resources/PolicyResource.php @@ -15,11 +15,17 @@ class PolicyResource extends JsonResource { public static $wrap = null; public function toArray(Request $request): array { + $activeFrom = $this->active_from; + + if ($this->active_from !== null) { + $activeFrom = Carbon::parse($this->active_from)->format('Y-m-d'); + } + return [ 'metadata' => [ 'policy_id' => $this->id, 'type' => $this->policy_type, - 'active_from' => Carbon::parse($this->active_from)->format('Y-m-d'), + 'active_from' => $activeFrom, 'content_vue_file' => $this->content_vue_file, ], ]; From 5fe2d9bacf17a94bf183bb9f459b82033f681dc9 Mon Sep 17 00:00:00 2001 From: dena Date: Fri, 24 Jul 2026 14:12:47 +0200 Subject: [PATCH 4/9] extend test --- tests/Resources/PolicyResourceTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/Resources/PolicyResourceTest.php b/tests/Resources/PolicyResourceTest.php index 495a4e2c..b6ec9036 100644 --- a/tests/Resources/PolicyResourceTest.php +++ b/tests/Resources/PolicyResourceTest.php @@ -11,6 +11,22 @@ class PolicyResourceTest extends TestCase { use RefreshDatabase; public function testActiveFrom(): void { + $policy = Policy::create([ + 'policy_type' => 'terms-of-use', + 'content_vue_file' => 'terms-of-use/example.vue', + 'active_from' => '2022-02-02', + ]); + + $resource = new PolicyResource($policy); + $data = json_decode($resource->toJson()); + + $this->assertEquals( + data_get($data, 'metadata.active_from'), + '2022-02-02', + ); + } + + public function testActiveFromNull(): void { $policy = Policy::create([ 'policy_type' => 'terms-of-use', 'content_vue_file' => 'terms-of-use/example.vue', From 445adda1a5aa2ce182a1d8d83d78a5cceb81a32d Mon Sep 17 00:00:00 2001 From: dena Date: Fri, 24 Jul 2026 14:13:16 +0200 Subject: [PATCH 5/9] formatting --- app/Http/Resources/PolicyResource.php | 2 +- tests/Resources/PolicyResourceTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Resources/PolicyResource.php b/app/Http/Resources/PolicyResource.php index d2e2dfeb..a00e9f3a 100644 --- a/app/Http/Resources/PolicyResource.php +++ b/app/Http/Resources/PolicyResource.php @@ -20,7 +20,7 @@ public function toArray(Request $request): array { if ($this->active_from !== null) { $activeFrom = Carbon::parse($this->active_from)->format('Y-m-d'); } - + return [ 'metadata' => [ 'policy_id' => $this->id, diff --git a/tests/Resources/PolicyResourceTest.php b/tests/Resources/PolicyResourceTest.php index b6ec9036..c4f5af87 100644 --- a/tests/Resources/PolicyResourceTest.php +++ b/tests/Resources/PolicyResourceTest.php @@ -2,10 +2,10 @@ namespace Tests\Resources; -use Tests\TestCase; -use Illuminate\Foundation\Testing\RefreshDatabase; use App\Http\Resources\PolicyResource; use App\Policy; +use Illuminate\Foundation\Testing\RefreshDatabase; +use Tests\TestCase; class PolicyResourceTest extends TestCase { use RefreshDatabase; From aa7c259027f102aa35130d812b5d66313a09e3c3 Mon Sep 17 00:00:00 2001 From: dena <91744937+deer-wmde@users.noreply.github.com> Date: Fri, 24 Jul 2026 15:19:30 +0200 Subject: [PATCH 6/9] Update app/Http/Resources/PolicyResource.php Co-authored-by: Dat WMDE --- app/Http/Resources/PolicyResource.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Http/Resources/PolicyResource.php b/app/Http/Resources/PolicyResource.php index a00e9f3a..72b7ea46 100644 --- a/app/Http/Resources/PolicyResource.php +++ b/app/Http/Resources/PolicyResource.php @@ -25,7 +25,9 @@ public function toArray(Request $request): array { 'metadata' => [ 'policy_id' => $this->id, 'type' => $this->policy_type, - 'active_from' => $activeFrom, + 'active_from' => $this->active_from === null + ? null + : Carbon::parse($this->active_from)->format('Y-m-d'), 'content_vue_file' => $this->content_vue_file, ], ]; From a26d10d2be009a274451cc53761907c633598e0c Mon Sep 17 00:00:00 2001 From: dena Date: Fri, 24 Jul 2026 15:23:29 +0200 Subject: [PATCH 7/9] fixes --- tests/Resources/PolicyResourceTest.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/Resources/PolicyResourceTest.php b/tests/Resources/PolicyResourceTest.php index c4f5af87..dd3f5067 100644 --- a/tests/Resources/PolicyResourceTest.php +++ b/tests/Resources/PolicyResourceTest.php @@ -18,11 +18,11 @@ public function testActiveFrom(): void { ]); $resource = new PolicyResource($policy); - $data = json_decode($resource->toJson()); + $data = $resource->resolve(); - $this->assertEquals( - data_get($data, 'metadata.active_from'), + $this->assertSame( '2022-02-02', + data_get($data, 'metadata.active_from'), ); } @@ -33,11 +33,11 @@ public function testActiveFromNull(): void { ]); $resource = new PolicyResource($policy); - $data = json_decode($resource->toJson()); + $data = $resource->resolve(); - $this->assertEquals( - data_get($data, 'metadata.active_from'), + $this->assertSame( null, + data_get($data, 'metadata.active_from'), ); } } From fc00a0d479fd12fd1735c9010f268cf80633899e Mon Sep 17 00:00:00 2001 From: dena Date: Fri, 24 Jul 2026 15:28:18 +0200 Subject: [PATCH 8/9] add explicit null test case --- tests/Resources/PolicyResourceTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/Resources/PolicyResourceTest.php b/tests/Resources/PolicyResourceTest.php index dd3f5067..819061df 100644 --- a/tests/Resources/PolicyResourceTest.php +++ b/tests/Resources/PolicyResourceTest.php @@ -40,4 +40,20 @@ public function testActiveFromNull(): void { data_get($data, 'metadata.active_from'), ); } + + public function testActiveFromNullExplicit(): void { + $policy = Policy::create([ + 'policy_type' => 'terms-of-use', + 'content_vue_file' => 'terms-of-use/example.vue', + 'active_from' => null, + ]); + + $resource = new PolicyResource($policy); + $data = $resource->resolve(); + + $this->assertSame( + null, + data_get($data, 'metadata.active_from'), + ); + } } From 9be78941c7fa853a11567f07e1da8be5f9ea9df0 Mon Sep 17 00:00:00 2001 From: dena Date: Fri, 24 Jul 2026 15:30:09 +0200 Subject: [PATCH 9/9] cleanup --- app/Http/Resources/PolicyResource.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/Http/Resources/PolicyResource.php b/app/Http/Resources/PolicyResource.php index 72b7ea46..f5e030fa 100644 --- a/app/Http/Resources/PolicyResource.php +++ b/app/Http/Resources/PolicyResource.php @@ -15,12 +15,6 @@ class PolicyResource extends JsonResource { public static $wrap = null; public function toArray(Request $request): array { - $activeFrom = $this->active_from; - - if ($this->active_from !== null) { - $activeFrom = Carbon::parse($this->active_from)->format('Y-m-d'); - } - return [ 'metadata' => [ 'policy_id' => $this->id,