diff --git a/packages/core/src/Base/BaseModel.php b/packages/core/src/Base/BaseModel.php index 2b8530008c..052c89a108 100644 --- a/packages/core/src/Base/BaseModel.php +++ b/packages/core/src/Base/BaseModel.php @@ -24,6 +24,11 @@ public function __construct(array $attributes = []) } } + public function setAttribute($key, $value): mixed + { + return parent::setAttribute($key, is_string($value) ? trim($value) : $value); + } + /** * {@inheritdoc} */ diff --git a/tests/core/Unit/Base/BaseModelTest.php b/tests/core/Unit/Base/BaseModelTest.php index d7e381693b..99a0d69ca7 100644 --- a/tests/core/Unit/Base/BaseModelTest.php +++ b/tests/core/Unit/Base/BaseModelTest.php @@ -5,6 +5,7 @@ use Lunar\Base\BaseModel; use Lunar\Base\Traits\HasModelExtending; use Lunar\Models\Collection as ModelsCollection; +use Lunar\Models\CustomerGroup; use Lunar\Models\Product; use Lunar\Models\Url; use Lunar\Tests\Core\TestCase; @@ -69,3 +70,11 @@ $uses = class_uses_recursive(BaseModel::class); expect(in_array(HasModelExtending::class, $uses))->toBeTrue(); }); + +test('trims leading and trailing whitespace from string attributes', function () { + $group = CustomerGroup::factory()->create([ + 'handle' => ' my-group ', + ]); + + expect($group->handle)->toBe('my-group'); +});