[['key' => 'availability_location', 'type' => 'location', 'required' => true]]]; $location = ['province' => 'Província fictícia', 'district' => 'Distrito fictício', 'locality' => 'Localidade fictícia']; $answers = app(SubmissionAnswers::class)->validate($definition, ['availability_location' => $location]); expect($answers)->toBe(['availability_location' => $location]); expect(fn () => app(SubmissionAnswers::class)->validate($definition, ['availability_location' => ['province' => 'Província fictícia']]))->toThrow(ValidationException::class); expect(fn () => app(SubmissionAnswers::class)->validate($definition, ['availability_location' => $location, 'address' => 'Não solicitado']))->toThrow(ValidationException::class); expect(fn () => app(SubmissionAnswers::class)->validate($definition, []))->toThrow(ValidationException::class); }); test('optional availability can remain absent but partial locations are rejected', function () { $definition = ['fields' => [['key' => 'availability_location', 'type' => 'location', 'required' => false]]]; expect(app(SubmissionAnswers::class)->validate($definition, []))->toBe([]); expect(fn () => app(SubmissionAnswers::class)->validate($definition, ['availability_location' => ['locality' => 'Sem distrito']]))->toThrow(ValidationException::class); });