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.
+
+
+
```
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
];
}
}