Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor publication field definition name normalization #817

Merged
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
use Hyde\Support\Concerns\Serializable;
use Hyde\Support\Contracts\SerializableContract;
use Illuminate\Support\Str;
use function str_starts_with;
use function strtolower;

/**
Expand All @@ -37,7 +36,7 @@ public static function fromArray(array $array): static
public function __construct(PublicationFieldTypes|string $type, string $name, array $rules = [], ?string $tagGroup = null)
{
$this->type = $type instanceof PublicationFieldTypes ? $type : PublicationFieldTypes::from(strtolower($type));
$this->name = str_starts_with($name, '__') ? $name : Str::kebab($name);
$this->name = str_contains($name, ' ') ? Str::kebab($name) : Str::ascii($name);
$this->rules = $rules;
$this->tagGroup = $tagGroup;
}
Expand Down
16 changes: 8 additions & 8 deletions packages/framework/tests/Feature/ValidatesPublicationsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ public function testValidate()
{
$fieldDefinition = new PublicationFieldDefinition('string', 'myString');
$validated = (new ValidatesPublicationField($this->mockPublicationType(), $fieldDefinition))->validate('foo');
$this->assertSame(['my-string' => 'foo'], $validated);
$this->assertSame(['myString' => 'foo'], $validated);

$this->expectValidationException('The my-string must be a string.');
$this->expectValidationException('The my string must be a string.');
$fieldDefinition = new PublicationFieldDefinition('string', 'myString');
(new ValidatesPublicationField($this->mockPublicationType(), $fieldDefinition))->validate(1);
}
Expand All @@ -39,9 +39,9 @@ public function testValidateWithCustomTypeRules()
{
$fieldDefinition = new PublicationFieldDefinition('string', 'myString', ['min:3']);
$validated = (new ValidatesPublicationField($this->mockPublicationType(), $fieldDefinition))->validate('foo');
$this->assertSame(['my-string' => 'foo'], $validated);
$this->assertSame(['myString' => 'foo'], $validated);

$this->expectValidationException('The my-string must be at least 5 characters.');
$this->expectValidationException('The my string must be at least 5 characters.');
$fieldDefinition = new PublicationFieldDefinition('string', 'myString', ['min:5']);
(new ValidatesPublicationField($this->mockPublicationType(), $fieldDefinition))->validate('foo');
}
Expand Down Expand Up @@ -73,12 +73,12 @@ public function testValidateArrayPasses()
$validated = (new ValidatesPublicationField($this->mockPublicationType(), $fieldDefinition))->validate([
'foo', 'bar', 'baz',
]);
$this->assertSame(['my-array' => ['foo', 'bar', 'baz']], $validated);
$this->assertSame(['myArray' => ['foo', 'bar', 'baz']], $validated);
}

public function testValidateArrayFails()
{
$this->expectValidationException('The my-array must be an array.');
$this->expectValidationException('The my array must be an array.');
$fieldDefinition = new PublicationFieldDefinition('array', 'myArray');
(new ValidatesPublicationField($this->mockPublicationType(), $fieldDefinition))->validate('foo');
}
Expand All @@ -94,12 +94,12 @@ public function testValidateDatetimePasses()
{
$fieldDefinition = new PublicationFieldDefinition('datetime', 'myDatetime');
$validated = (new ValidatesPublicationField($this->mockPublicationType(), $fieldDefinition))->validate('2021-01-01');
$this->assertSame(['my-datetime' => '2021-01-01'], $validated);
$this->assertSame(['myDatetime' => '2021-01-01'], $validated);
}

public function testValidateDatetimeFailsForInvalidType()
{
$this->expectValidationException('The my-datetime is not a valid date.');
$this->expectValidationException('The my datetime is not a valid date.');
$fieldDefinition = new PublicationFieldDefinition('datetime', 'myDatetime');
(new ValidatesPublicationField($this->mockPublicationType(), $fieldDefinition))->validate('string');
}
Expand Down