createRuleSet(); $response = $this->getJson('/api/evaluation-rule-sets'); $response->assertStatus(200) ->assertJsonFragment(['id' => $item->id]); } public function test_show_returns_rule_set(): void { $item = $this->createRuleSet(); $response = $this->getJson("/api/evaluation-rule-sets/{$item->id}"); $response->assertStatus(200) ->assertJsonFragment(['id' => $item->id]); } public function test_admin_can_create_update_and_delete_rule_set(): void { $this->actingAsAdmin(); $createResponse = $this->postJson('/api/evaluation-rule-sets', [ 'name' => 'Test ruleset', 'code' => 'TEST_RULES', 'scoring_mode' => 'DISTANCE', 'multiplier_type' => 'WWL', 'dup_qso_policy' => 'ZERO_POINTS', 'nil_qso_policy' => 'ZERO_POINTS', 'busted_call_policy' => 'ZERO_POINTS', 'busted_exchange_policy' => 'ZERO_POINTS', ]); $createResponse->assertStatus(201); $itemId = $createResponse->json('id'); $updateResponse = $this->putJson("/api/evaluation-rule-sets/{$itemId}", [ 'name' => 'Updated ruleset', ]); $updateResponse->assertStatus(200) ->assertJsonFragment(['id' => $itemId]); $this->deleteJson("/api/evaluation-rule-sets/{$itemId}") ->assertStatus(204); } public function test_non_admin_cannot_create_rule_set(): void { $this->actingAsUser(); $this->postJson('/api/evaluation-rule-sets', [ 'name' => 'Test ruleset', 'code' => 'TEST_RULES', 'scoring_mode' => 'DISTANCE', 'multiplier_type' => 'WWL', 'dup_qso_policy' => 'ZERO_POINTS', 'nil_qso_policy' => 'ZERO_POINTS', 'busted_call_policy' => 'ZERO_POINTS', 'busted_exchange_policy' => 'ZERO_POINTS', ])->assertStatus(403); } }