Skip to content

Commit 627fc8d

Browse files
committed
Added faker for better dummy data
1 parent 0aeacb5 commit 627fc8d

File tree

4 files changed

+30
-6
lines changed

4 files changed

+30
-6
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"php": ">=7.0.0",
1515
"laravel/framework": "~5.0",
1616
"phpdocumentor/reflection-docblock": "~2.0",
17-
"mpociot/documentarian": "^0.2.0"
17+
"mpociot/documentarian": "^0.2.0",
18+
"fzaninotto/faker": "^1.6"
1819
},
1920
"require-dev": {
2021
"phpunit/phpunit": "~5.0",

src/Mpociot/ApiDoc/ApiDocGenerator.php

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Mpociot\ApiDoc;
44

5+
use Faker\Factory;
56
use Illuminate\Foundation\Http\FormRequest;
67
use Illuminate\Routing\Route;
78
use Illuminate\Support\Facades\App;
@@ -38,6 +39,7 @@ public function processRoute(Route $route)
3839
'required' => false,
3940
'type' => 'string',
4041
'default' => '',
42+
'value' => '',
4143
'description' => []
4244
];
4345
foreach ($rules as $rule) {
@@ -128,6 +130,8 @@ protected function fancyImplode($arr, $first, $last)
128130
*/
129131
protected function parseRule($rule, &$attributeData)
130132
{
133+
$faker = Factory::create();
134+
131135
$parsedRule = $this->parseStringRule($rule);
132136
$parsedRule[0] = $this->normalizeRule($parsedRule[0]);
133137
list($rule, $parameters) = $parsedRule;
@@ -139,13 +143,16 @@ protected function parseRule($rule, &$attributeData)
139143
case 'accepted':
140144
$attributeData['required'] = true;
141145
$attributeData['type'] = 'boolean';
146+
$attributeData['value'] = $faker->url;
142147
break;
143148
case 'after':
144149
$attributeData['type'] = 'date';
145150
$attributeData['description'][] = 'Must be a date after: `' . date(DATE_RFC850, strtotime($parameters[0])) . '`';
151+
$attributeData['value'] = date(DATE_RFC850, strtotime('+1 day',strtotime($parameters[0])));
146152
break;
147153
case 'alpha':
148154
$attributeData['description'][] = 'Only alphabetic characters allowed';
155+
$attributeData['value'] = $faker->word;
149156
break;
150157
case 'alpha_dash':
151158
$attributeData['description'][] = 'Allowed: alpha-numeric characters, as well as dashes and underscores.';
@@ -155,9 +162,11 @@ protected function parseRule($rule, &$attributeData)
155162
break;
156163
case 'in':
157164
$attributeData['description'][] = $this->fancyImplode($parameters, ', ', ' or ');
165+
$attributeData['value'] = $faker->randomElement($parameters);
158166
break;
159167
case 'not_in':
160168
$attributeData['description'][] = 'Not in: ' . $this->fancyImplode($parameters, ', ', ' or ');
169+
$attributeData['value'] = $faker->word;
161170
break;
162171
case 'min':
163172
$attributeData['description'][] = 'Minimum: `' . $parameters[0] . '`';
@@ -168,10 +177,12 @@ protected function parseRule($rule, &$attributeData)
168177
case 'between':
169178
$attributeData['type'] = 'numeric';
170179
$attributeData['description'][] = 'Between: `' . $parameters[0] . '` and `' . $parameters[1] . '`';
180+
$attributeData['value'] = $faker->numberBetween($parameters[0], $parameters[1]);
171181
break;
172182
case 'before':
173183
$attributeData['type'] = 'date';
174184
$attributeData['description'][] = 'Must be a date preceding: `' . date(DATE_RFC850, strtotime($parameters[0])) . '`';
185+
$attributeData['value'] = date(DATE_RFC850, strtotime('-1 day',strtotime($parameters[0])));
175186
break;
176187
case 'date_format':
177188
$attributeData['type'] = 'date';
@@ -183,17 +194,20 @@ protected function parseRule($rule, &$attributeData)
183194
case 'digits':
184195
$attributeData['type'] = 'numeric';
185196
$attributeData['description'][] = 'Must have an exact length of `' . $parameters[0] . '`';
197+
$attributeData['value'] = $faker->randomNumber($parameters[0], true);
186198
break;
187199
case 'digits_between':
188200
$attributeData['type'] = 'numeric';
189201
$attributeData['description'][] = 'Must have a length between `' . $parameters[0] . '` and `' . $parameters[1] . '`';
190202
break;
191203
case 'image':
204+
$attributeData['type'] = 'image';
192205
$attributeData['description'][] = 'Must be an image (jpeg, png, bmp, gif, or svg)';
193206
break;
194207
case 'json':
195208
$attributeData['type'] = 'string';
196209
$attributeData['description'][] = 'Must be a valid JSON string.';
210+
$attributeData['value'] = json_encode(['foo','bar','baz']);
197211
break;
198212
case 'mimetypes':
199213
case 'mimes':
@@ -225,29 +239,41 @@ protected function parseRule($rule, &$attributeData)
225239
break;
226240
case 'timezone':
227241
$attributeData['description'][] = 'Must be a valid timezone identifier';
242+
$attributeData['value'] = $faker->timezone;
228243
break;
229244
case 'exists':
230245
$attributeData['description'][] = 'Valid ' . Str::singular($parameters[0]) . ' ' . $parameters[1];
231246
break;
232247
case 'active_url':
233248
$attributeData['type'] = 'url';
249+
$attributeData['value'] = $faker->url;
234250
break;
235251
case 'regex':
236252
$attributeData['type'] = 'string';
237253
$attributeData['description'][] = 'Must match this regular expression: `' . $parameters[0] . '`';
238254
break;
239255
case 'boolean':
256+
$attributeData['value'] = $faker->boolean();
240257
case 'array':
258+
$attributeData['value'] = $faker->word;
241259
case 'date':
260+
$attributeData['value'] = $faker->date();
242261
case 'email':
243-
case 'image':
262+
$attributeData['value'] = $faker->safeEmail;
244263
case 'string':
264+
$attributeData['value'] = $faker->word;
245265
case 'integer':
266+
$attributeData['value'] = $faker->randomNumber();
246267
case 'numeric':
268+
$attributeData['value'] = $faker->randomNumber();
247269
case 'url':
270+
$attributeData['value'] = $faker->url;
248271
case 'ip':
249272
$attributeData['type'] = $rule;
250273
break;
274+
default:
275+
$attributeData['value'] = $faker->word;
276+
break;
251277
}
252278
}
253279

src/resources/views/documentarian.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
curl "{{config('app.url')}}/{{$parsedRoute['uri']}}" \
3434
-H "Accept: application/json"@if(count($parsedRoute['parameters'])) \
3535
@foreach($parsedRoute['parameters'] as $attribute => $parameter)
36-
-d "{{$attribute}}"="dummy" \
36+
-d "{{$attribute}}"="{{$parameter['value']}}" \
3737
@endforeach
3838
@endif
3939

tests/ApiDocGeneratorTest.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,11 @@ public function testCanParseFormRequestRules()
7676
$this->assertEquals( 'string', $attribute['type'] );
7777
$this->assertCount( 0, $attribute['description'] );
7878
break;
79-
80-
8179
case 'accepted':
8280
$this->assertTrue( $attribute['required'] );
8381
$this->assertEquals( 'boolean', $attribute['type'] );
8482
$this->assertCount( 0, $attribute['description'] );
8583
break;
86-
8784
case 'active_url':
8885
$this->assertFalse( $attribute['required'] );
8986
$this->assertEquals( 'url', $attribute['type'] );

0 commit comments

Comments
 (0)