From bdd660bf426fdef52454973815e51df6c7ad484a Mon Sep 17 00:00:00 2001 From: Marcel Pociot Date: Fri, 30 Oct 2020 16:27:29 +0100 Subject: [PATCH 1/2] Allow calling faker methods with arguments --- .../Slimdump/Config/FakerReplacer.php | 24 ++++++++++++------- .../Slimdump/Config/FakerReplacerTest.php | 8 +++++++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/Webfactory/Slimdump/Config/FakerReplacer.php b/src/Webfactory/Slimdump/Config/FakerReplacer.php index 2ae2bb4..40216dd 100644 --- a/src/Webfactory/Slimdump/Config/FakerReplacer.php +++ b/src/Webfactory/Slimdump/Config/FakerReplacer.php @@ -51,41 +51,49 @@ public static function isFakerColumn($replacement) */ public function generateReplacement($replacementId) { + $replacementMethodArguments = []; + $replacementMethodName = str_replace(self::PREFIX, '', $replacementId); + if (strpos($replacementMethodName, ':') !== false) { + [$replacementMethodName, $replacementMethodArguments] = explode(':', $replacementMethodName, 2); + $replacementMethodArguments = str_getcsv(strtolower($replacementMethodArguments)); + } + if (false !== strpos($replacementMethodName, '->')) { [$modifierName, $replacementMethodName] = explode('->', $replacementMethodName); - $this->validateReplacementConfiguredModifier($modifierName, $replacementMethodName); + $this->validateReplacementConfiguredModifier($modifierName, $replacementMethodName, $replacementMethodArguments); - return (string) $this->faker->$modifierName->$replacementMethodName; + return (string) $this->faker->$modifierName->format($replacementMethodName, $replacementMethodArguments); } - $this->validateReplacementConfigured($replacementMethodName); + $this->validateReplacementConfigured($replacementMethodName, $replacementMethodArguments); - return (string) $this->faker->$replacementMethodName; + return (string) $this->faker->format($replacementMethodName, $replacementMethodArguments); } /** * validates if this type of replacement was configured. * * @param string $replacementName + * @param array $replacementArguments * * @throws InvalidReplacementOptionException if not a faker method */ - private function validateReplacementConfigured($replacementName) + private function validateReplacementConfigured($replacementName, $replacementArguments = []) { try { - $this->faker->__get($replacementName); + $this->faker->format($replacementName, $replacementArguments); } catch (InvalidArgumentException $exception) { throw new InvalidReplacementOptionException($replacementName.' is no valid faker replacement'); } } - private function validateReplacementConfiguredModifier($replacementModifier, $replacementName) + private function validateReplacementConfiguredModifier($replacementModifier, $replacementName, $replacementArguments = []) { try { - $this->faker->__get($replacementModifier)->__get($replacementName); + $this->faker->__get($replacementModifier)->format($replacementName, $replacementArguments); } catch (InvalidArgumentException $exception) { throw new InvalidReplacementOptionException($replacementModifier.'->'.$replacementName.' is no valid faker replacement'); } diff --git a/test/Webfactory/Slimdump/Config/FakerReplacerTest.php b/test/Webfactory/Slimdump/Config/FakerReplacerTest.php index 20f8b06..18cc30b 100644 --- a/test/Webfactory/Slimdump/Config/FakerReplacerTest.php +++ b/test/Webfactory/Slimdump/Config/FakerReplacerTest.php @@ -52,6 +52,10 @@ public function provideValidReplacementIds() return [ [FakerReplacer::PREFIX.'firstname'], // original faker property [FakerReplacer::PREFIX.'lastname'], // original faker property + [FakerReplacer::PREFIX.'randomDigitNot:0'], // faker method with single argument + [FakerReplacer::PREFIX.'numberBetween:1,20'], // faker method with two arguments + [FakerReplacer::PREFIX.'shuffle:"hello world"'], // faker property with single argument + [FakerReplacer::PREFIX.'numerify:"Helo ###"'], // faker property with single argument ]; } @@ -65,6 +69,10 @@ public function provideValidReplacementNames() return [ ['firstname'], // original faker property ['lastname'], // original faker property + ['randomDigitNot:0'], // original faker property + ['numberBetween:1,20'], // original faker property + ['shuffle:"hello world"'], // original faker property + ['numerify:"Helo ###"'], // original faker property ]; } } From 3ae35174f491d3910f140413cf34b83b280904d8 Mon Sep 17 00:00:00 2001 From: Sebastian Schlein Date: Fri, 30 Oct 2020 20:17:19 +0100 Subject: [PATCH 2/2] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 764531d..9182ce7 100644 --- a/README.md +++ b/README.md @@ -225,6 +225,9 @@ on a column containing personal information, like the email address. + + + ```