Skip to content

Commit 7c8ccda

Browse files
Use shared faker-registry package (#309)
1 parent e8584fd commit 7c8ccda

File tree

4 files changed

+13
-233
lines changed

4 files changed

+13
-233
lines changed

composer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
],
99
"license": "MIT",
1010
"require": {
11+
"laravel-shift/faker-registry": "^0.1",
1112
"symfony/yaml": "^4.3|^5.0",
1213
"illuminate/console": "^6.0|^7.0",
1314
"illuminate/filesystem": "^6.0|^7.0",
@@ -29,6 +30,9 @@
2930
"Tests\\": "tests/"
3031
}
3132
},
33+
"config": {
34+
"sort-packages": true
35+
},
3236
"extra": {
3337
"laravel": {
3438
"providers": [

src/Generators/FactoryGenerator.php

Lines changed: 6 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Blueprint\Contracts\Generator;
66
use Blueprint\Models\Column;
77
use Blueprint\Models\Model;
8+
use Shift\Faker\Registry as FakerRegistry;
89
use Blueprint\Tree;
910
use Illuminate\Support\Str;
1011

@@ -128,7 +129,7 @@ protected function buildDefinition(Model $model)
128129
$definition .= ','.PHP_EOL;
129130
} elseif (in_array($column->dataType(), ['enum', 'set']) && ! empty($column->attributes())) {
130131
$definition .= self::INDENT."'{$column->name()}' => ";
131-
$faker = $this->fakerData($column->name()) ?? $this->fakerDataType($column->dataType());
132+
$faker = FakerRegistry::fakerData($column->name()) ?? FakerRegistry::fakerDataType($column->dataType());
132133
$definition .= '$faker->'.$faker;
133134
$definition .= ','.PHP_EOL;
134135
$definition = str_replace(
@@ -138,7 +139,7 @@ protected function buildDefinition(Model $model)
138139
);
139140
} elseif (in_array($column->dataType(), ['decimal', 'double', 'float'])) {
140141
$definition .= self::INDENT."'{$column->name()}' => ";
141-
$faker = $this->fakerData($column->name()) ?? $this->fakerDataType($column->dataType());
142+
$faker = FakerRegistry::fakerData($column->name()) ?? FakerRegistry::fakerDataType($column->dataType());
142143
$definition .= '$faker->'.$faker;
143144
$definition .= ','.PHP_EOL;
144145

@@ -157,8 +158,8 @@ protected function buildDefinition(Model $model)
157158
if ($column->isNullable()) {
158159
continue;
159160
}
160-
$definition .= sprintf('%s%s => $faker->%s,%s', self::INDENT, "'{$column->name()}_id'", self::fakerDataType('id'), PHP_EOL);
161-
$definition .= sprintf('%s%s => $faker->%s,%s', self::INDENT, "'{$column->name()}_type'", self::fakerDataType('string'), PHP_EOL);
161+
$definition .= sprintf('%s%s => $faker->%s,%s', self::INDENT, "'{$column->name()}_id'", FakerRegistry::fakerDataType('id'), PHP_EOL);
162+
$definition .= sprintf('%s%s => $faker->%s,%s', self::INDENT, "'{$column->name()}_type'", FakerRegistry::fakerDataType('string'), PHP_EOL);
162163
} elseif ($column->dataType() === 'rememberToken') {
163164
$this->addImport($model, 'Illuminate\Support\Str');
164165
$definition .= self::INDENT."'{$column->name()}' => ";
@@ -172,7 +173,7 @@ protected function buildDefinition(Model $model)
172173
$type = 'unsigned'.$type;
173174
}
174175

175-
$faker = self::fakerData($column->name()) ?? (self::fakerDataType($type) ?? self::fakerDataType($column->dataType()));
176+
$faker = FakerRegistry::fakerData($column->name()) ?? (FakerRegistry::fakerDataType($type) ?? FakerRegistry::fakerDataType($column->dataType()));
176177

177178
if ($faker === null) {
178179
$faker = 'word';
@@ -211,104 +212,4 @@ private function fillableColumns(array $columns): array
211212
return ! in_array('nullable', $column->modifiers());
212213
});
213214
}
214-
215-
public static function fakerData(string $name)
216-
{
217-
static $fakeableNames = [
218-
'address1' => 'streetAddress',
219-
'address2' => 'secondaryAddress',
220-
'city' => 'city',
221-
'company' => 'company',
222-
'content' => 'paragraphs(3, true)',
223-
'country' => 'country',
224-
'description' => 'text',
225-
'email' => 'safeEmail',
226-
'first_name' => 'firstName',
227-
'firstname' => 'firstName',
228-
'guid' => 'uuid',
229-
'last_name' => 'lastName',
230-
'lastname' => 'lastName',
231-
'lat' => 'latitude',
232-
'latitude' => 'latitude',
233-
'lng' => 'longitude',
234-
'longitude' => 'longitude',
235-
'name' => 'name',
236-
'password' => 'password',
237-
'phone' => 'phoneNumber',
238-
'phone_number' => 'phoneNumber',
239-
'postal_code' => 'postcode',
240-
'postcode' => 'postcode',
241-
'slug' => 'slug',
242-
'ssn' => 'ssn',
243-
'street' => 'streetName',
244-
'summary' => 'text',
245-
'title' => 'sentence(4)',
246-
'url' => 'url',
247-
'user_name' => 'userName',
248-
'username' => 'userName',
249-
'uuid' => 'uuid',
250-
'zip' => 'postcode',
251-
];
252-
253-
return $fakeableNames[$name] ?? null;
254-
}
255-
256-
public static function fakerDataType(string $type)
257-
{
258-
$fakeableTypes = [
259-
'biginteger' => 'numberBetween(-100000, 100000)',
260-
'binary' => 'sha256',
261-
'boolean' => 'boolean',
262-
'char' => 'randomLetter',
263-
'date' => 'date()',
264-
'datetime' => 'dateTime()',
265-
'datetimetz' => 'dateTime()',
266-
'decimal' => 'randomFloat(/** decimal_attributes **/)',
267-
'double' => 'randomFloat(/** double_attributes **/)',
268-
'enum' => 'randomElement(/** enum_attributes **/)',
269-
'float' => 'randomFloat(/** float_attributes **/)',
270-
'geometry' => 'word',
271-
'geometrycollection' => 'word',
272-
'guid' => 'uuid',
273-
'id' => 'randomDigitNotNull',
274-
'integer' => 'numberBetween(-10000, 10000)',
275-
'ipaddress' => 'ipv4',
276-
'linestring' => 'word',
277-
'longtext' => 'text',
278-
'macaddress' => 'macAddress',
279-
'mediuminteger' => 'numberBetween(-10000, 10000)',
280-
'mediumtext' => 'text',
281-
'morphs_id' => 'randomDigitNotNull',
282-
'morphs_type' => 'word',
283-
'multilinestring' => 'word',
284-
'multipoint' => 'word',
285-
'multipolygon' => 'word',
286-
'nullablemorphs' => null,
287-
'nullabletimestamps' => null,
288-
'nullableuuidmorphs' => null,
289-
'point' => 'word',
290-
'polygon' => 'word',
291-
'set' => 'randomElement(/** set_attributes **/)',
292-
'smallint' => 'numberBetween(-1000, 1000)',
293-
'smallinteger' => 'numberBetween(-1000, 1000)',
294-
'string' => 'word',
295-
'text' => 'text',
296-
'time' => 'time()',
297-
'timestamp' => 'dateTime()',
298-
'timestamptz' => 'dateTime()',
299-
'timetz' => 'time()',
300-
'tinyinteger' => 'numberBetween(-8, 8)',
301-
'unsignedbiginteger' => 'randomNumber()',
302-
'unsigneddecimal' => 'randomNumber()',
303-
'unsignedinteger' => 'randomNumber()',
304-
'unsignedmediuminteger' => 'randomNumber()',
305-
'unsignedsmallinteger' => 'randomNumber()',
306-
'unsignedtinyinteger' => 'randomDigitNotNull',
307-
'uuid' => 'uuid',
308-
'uuidmorphs' => 'word',
309-
'year' => 'year()',
310-
];
311-
312-
return $fakeableTypes[strtolower($type)] ?? null;
313-
}
314215
}

src/Generators/TestGenerator.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Blueprint\Models\Statements\SendStatement;
1818
use Blueprint\Models\Statements\SessionStatement;
1919
use Blueprint\Models\Statements\ValidateStatement;
20+
use Shift\Faker\Registry as FakerRegistry;
2021
use Blueprint\Tree;
2122
use Illuminate\Support\Str;
2223

@@ -236,7 +237,7 @@ protected function buildTestCases(Controller $controller)
236237
if ($factory) {
237238
[$faker, $variable_name] = $factory;
238239
} else {
239-
$faker = sprintf('$%s = $this->faker->%s;', $data, FactoryGenerator::fakerData($local_column->name()) ?? FactoryGenerator::fakerDataType($local_model->column($column)->dataType()));
240+
$faker = sprintf('$%s = $this->faker->%s;', $data, FakerRegistry::fakerData($local_column->name()) ?? FakerRegistry::fakerDataType($local_model->column($column)->dataType()));
240241
}
241242

242243
$setup['data'][] = $faker;
@@ -255,7 +256,7 @@ protected function buildTestCases(Controller $controller)
255256
if ($factory) {
256257
[$faker, $variable_name] = $factory;
257258
} else {
258-
$faker = sprintf('$%s = $this->faker->%s;', $local_column->name(), FactoryGenerator::fakerData($local_column->name()) ?? FactoryGenerator::fakerDataType($local_column->dataType()));
259+
$faker = sprintf('$%s = $this->faker->%s;', $local_column->name(), FakerRegistry::fakerData($local_column->name()) ?? FakerRegistry::fakerDataType($local_column->dataType()));
259260
$variable_name = $local_column->name();
260261
}
261262

tests/Unit/Generators/FactoryGeneratorTest.php

Lines changed: 0 additions & 126 deletions
This file was deleted.

0 commit comments

Comments
 (0)