Skip to content

Commit 32d65f6

Browse files
Fix faker data for double data type (#267)
1 parent bb0ff2c commit 32d65f6

File tree

4 files changed

+118
-19
lines changed

4 files changed

+118
-19
lines changed

src/Generators/FactoryGenerator.php

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ protected function buildDefinition(Model $model)
126126
json_encode($column->attributes()),
127127
$definition
128128
);
129-
} elseif (in_array($column->dataType(), ['decimal', 'float'])) {
129+
} elseif (in_array($column->dataType(), ['decimal', 'double', 'float'])) {
130130
$definition .= self::INDENT . "'{$column->name()}' => ";
131131
$faker = $this->fakerData($column->name()) ?? $this->fakerDataType($column->dataType());
132132
$definition .= '$faker->' . $faker;
@@ -235,28 +235,29 @@ public static function fakerData(string $name)
235235
public static function fakerDataType(string $type)
236236
{
237237
$fakeableTypes = [
238-
'id' => 'randomDigitNotNull',
239-
'string' => 'word',
240-
'text' => 'text',
238+
'biginteger' => 'randomNumber()',
239+
'boolean' => 'boolean',
241240
'date' => 'date()',
242-
'time' => 'time()',
243-
'guid' => 'uuid',
244-
'uuid' => 'uuid',
245-
'datetimetz' => 'dateTime()',
246241
'datetime' => 'dateTime()',
247-
'timestamp' => 'dateTime()',
248-
'integer' => 'randomNumber()',
249-
'unsignedsmallinteger' => 'randomDigitNotNull',
250-
'biginteger' => 'randomNumber()',
251-
'smallint' => 'randomNumber()',
252-
'tinyinteger' => 'randomNumber()',
253-
'smallinteger' => 'randomNumber()',
242+
'datetimetz' => 'dateTime()',
254243
'decimal' => 'randomFloat(/** decimal_attributes **/)',
244+
'double' => 'randomFloat(/** double_attributes **/)',
245+
'enum' => 'randomElement(/** enum_attributes **/)',
255246
'float' => 'randomFloat(/** float_attributes **/)',
247+
'guid' => 'uuid',
248+
'id' => 'randomDigitNotNull',
249+
'integer' => 'randomNumber()',
256250
'longtext' => 'text',
257-
'boolean' => 'boolean',
258251
'set' => 'randomElement(/** set_attributes **/)',
259-
'enum' => 'randomElement(/** enum_attributes **/)',
252+
'smallint' => 'randomNumber()',
253+
'smallinteger' => 'randomNumber()',
254+
'string' => 'word',
255+
'text' => 'text',
256+
'time' => 'time()',
257+
'timestamp' => 'dateTime()',
258+
'tinyinteger' => 'randomNumber()',
259+
'unsignedsmallinteger' => 'randomDigitNotNull',
260+
'uuid' => 'uuid',
260261
];
261262

262263
return $fakeableTypes[strtolower($type)] ?? null;
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
3+
namespace Tests\Unit\Generators;
4+
5+
use Blueprint\Generators\FactoryGenerator;
6+
use PHPUnit\Framework\TestCase;
7+
8+
/**
9+
* @covers \Blueprint\Generators\FactoryGenerator
10+
*/
11+
class FactoryGeneratorTest extends TestCase
12+
{
13+
/**
14+
* @test
15+
* @dataProvider commonNameDataProvider
16+
*/
17+
public function it_translates_a_common_name_to_fake_data($name, $faker)
18+
{
19+
$this->assertEquals(FactoryGenerator::fakerData($name), $faker);
20+
}
21+
22+
/**
23+
* @test
24+
* @dataProvider dataTypeDataProvider
25+
*/
26+
public function it_translates_a_data_type_to_fake_data($type, $faker)
27+
{
28+
$this->assertEquals(FactoryGenerator::fakerDataType($type), $faker);
29+
}
30+
31+
public function commonNameDataProvider()
32+
{
33+
return [
34+
['address1', 'streetAddress'],
35+
['address2', 'secondaryAddress'],
36+
['city', 'city'],
37+
['company', 'company'],
38+
['content', 'paragraphs(3, true)'],
39+
['country', 'country'],
40+
['description', 'text'],
41+
['email', 'safeEmail'],
42+
['first_name', 'firstName'],
43+
['firstname', 'firstName'],
44+
['guid', 'uuid'],
45+
['last_name', 'lastName'],
46+
['lastname', 'lastName'],
47+
['lat', 'latitude'],
48+
['latitude', 'latitude'],
49+
['lng', 'longitude'],
50+
['longitude', 'longitude'],
51+
['name', 'name'],
52+
['password', 'password'],
53+
['phone', 'phoneNumber'],
54+
['phone_number', 'phoneNumber'],
55+
['postal_code', 'postcode'],
56+
['postcode', 'postcode'],
57+
['slug', 'slug'],
58+
['ssn', 'ssn'],
59+
['street', 'streetName'],
60+
['summary', 'text'],
61+
['title', 'sentence(4)'],
62+
['url', 'url'],
63+
['user_name', 'userName'],
64+
['username', 'userName'],
65+
['uuid', 'uuid'],
66+
['zip', 'postcode'],
67+
];
68+
}
69+
70+
public function dataTypeDataProvider()
71+
{
72+
return [
73+
['biginteger', 'randomNumber()'],
74+
['boolean', 'boolean'],
75+
['date', 'date()'],
76+
['datetime', 'dateTime()'],
77+
['datetimetz', 'dateTime()'],
78+
['double', 'randomFloat(/** double_attributes **/)'],
79+
['decimal', 'randomFloat(/** decimal_attributes **/)'],
80+
['enum', 'randomElement(/** enum_attributes **/)'],
81+
['float', 'randomFloat(/** float_attributes **/)'],
82+
['guid', 'uuid'],
83+
['id', 'randomDigitNotNull'],
84+
['integer', 'randomNumber()'],
85+
['longtext', 'text'],
86+
['set', 'randomElement(/** set_attributes **/)'],
87+
['smallint', 'randomNumber()'],
88+
['smallinteger', 'randomNumber()'],
89+
['string', 'word'],
90+
['text', 'text'],
91+
['time', 'time()'],
92+
['timestamp', 'dateTime()'],
93+
['tinyinteger', 'randomNumber()'],
94+
['unsignedsmallinteger', 'randomDigitNotNull'],
95+
['uuid', 'uuid'],
96+
];
97+
}
98+
}

tests/fixtures/drafts/model-modifiers.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ models:
55
name: string:1000 unique charset:'utf8'
66
content: string default:''
77
amount: float:9,3
8-
total: decimal:10,2
8+
total: double:10,2
99
overflow: decimal:99,99
1010
ssn: char:11
1111
role: enum:user,admin,owner

tests/fixtures/migrations/model-modifiers.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public function up()
1919
$table->string('name', 1000)->unique()->charset('utf8');
2020
$table->string('content')->default('');
2121
$table->float('amount', 9, 3);
22-
$table->decimal('total', 10, 2);
22+
$table->double('total', 10, 2);
2323
$table->decimal('overflow', 99, 99);
2424
$table->char('ssn', 11);
2525
$table->enum('role', ["user","admin","owner"]);

0 commit comments

Comments
 (0)