diff --git a/src/Actions/WriteRelationship.php b/src/Actions/WriteRelationship.php index dbe9e95..d6a54f0 100644 --- a/src/Actions/WriteRelationship.php +++ b/src/Actions/WriteRelationship.php @@ -32,8 +32,8 @@ public function __invoke(array $relation, string $indent = '', bool $jsonOutput $relatedModel = $this->getClassName($relation['related']); $relationType = match ($relation['type']) { - 'BelongsToMany', 'HasMany', 'HasManyThrough', 'MorphToMany', 'MorphMany', 'MorphedByMany' => $plurals === true ? Str::plural($relatedModel) : (Str::singular($relatedModel) . '[]'), - 'BelongsTo', 'HasOne', 'HasOneThrough', 'MorphOne', 'MorphTo' => Str::singular($relatedModel), + 'BelongsToMany', 'HasMany', 'HasManyThrough', 'MorphToMany', 'MorphMany', 'MorphedByMany' => $plurals === true ? Str::plural($relatedModel) : ($relatedModel . '[]'), + 'BelongsTo', 'HasOne', 'HasOneThrough', 'MorphOne', 'MorphTo' => $relatedModel, default => $relatedModel, }; } diff --git a/test/Tests/Feature/Actions/WriteRelationshipTest.php b/test/Tests/Feature/Actions/WriteRelationshipTest.php index 50f702f..befde2e 100644 --- a/test/Tests/Feature/Actions/WriteRelationshipTest.php +++ b/test/Tests/Feature/Actions/WriteRelationshipTest.php @@ -176,6 +176,33 @@ public function test_action_can_return_nullable_plural_relationships() $this->assertStringContainsString('tags: Tag[] | null', $result); } + public function test_plural_class_name_is_not_singularized_in_array_relation(): void + { + $relation = [ + 'name' => 'customer_tests', + 'type' => 'HasMany', + 'related' => 'App\Models\CustomerTests', + ]; + + $result = app(WriteRelationship::class)($relation); + + $this->assertStringContainsString('customer_tests: CustomerTests[]', $result); + $this->assertStringNotContainsString('CustomerTest[]', $result); + } + + public function test_plural_class_name_is_not_singularized_in_singular_relation(): void + { + $relation = [ + 'name' => 'primary_address', + 'type' => 'BelongsTo', + 'related' => 'App\Models\UserAddresses', + ]; + + $result = app(WriteRelationship::class)($relation); + + $this->assertStringContainsString('primary_address: UserAddresses', $result); + } + public function test_action_can_return_morph_to_union_type_relationships() { $morphToRelation = [