diff --git a/packages/support/src/Concerns/Macroable.php b/packages/support/src/Concerns/Macroable.php index fe66b83770..cfdb7e16fc 100644 --- a/packages/support/src/Concerns/Macroable.php +++ b/packages/support/src/Concerns/Macroable.php @@ -39,6 +39,11 @@ trait Macroable static::$macros = []; } + public static function hasMacro(string $name): bool + { + return (bool) static::getMacro($name); + } + /** * @param array $parameters */ diff --git a/tests/src/Support/MacroableTest.php b/tests/src/Support/MacroableTest.php new file mode 100644 index 0000000000..594f600f0f --- /dev/null +++ b/tests/src/Support/MacroableTest.php @@ -0,0 +1,28 @@ +toBeFalse(); + + expect(ComponentContainer::hasMacro('someMacro')) + ->toBeFalse(); + + ComponentContainer::macro('someMacro', fn () => 'Hello'); + + expect(ComponentContainer::hasMacro('someMacro')) + ->toBeTrue(); + + expect(Form::hasMacro('someMacro')) + ->toBeTrue(); // Descendant of `Component`... + + expect(Field::hasMacro('someMacro')) + ->toBeFalse(); +});