Skip to content

Commit 7a91445

Browse files
authored
Fix generating enum fields having values of uppercase letters (#79)
* add a failed test case. * stop converting consumption to lower case. * convert column type to lower case again.
1 parent 286fbaa commit 7a91445

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/Tokenizers/MySQL/ColumnTokenizer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,14 @@ protected function consumeZeroFill()
7272

7373
protected function consumeColumnType()
7474
{
75-
$originalColumnType = $columnType = strtolower($this->consume());
75+
$originalColumnType = $columnType = $this->consume();
7676
$hasConstraints = Str::contains($columnType, '(');
7777

7878
if ($hasConstraints) {
7979
$columnType = explode('(', $columnType)[0];
8080
}
8181

82-
$this->columnDataType = $columnType;
82+
$this->columnDataType = strtolower($columnType);
8383

8484
$this->resolveColumnMethod();
8585
if ($hasConstraints) {

tests/Unit/Tokenizers/MySQL/ColumnTokenizerTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -836,6 +836,21 @@ public function test_it_tokenizes_enum_column()
836836
$this->assertEquals('$table->enum(\'status_flag\', [\'1\', \'2\', \'3\', \'4\'])', $columnDefinition->render());
837837
}
838838

839+
public function test_it_tokenizes_enum_column_with_upper_case_values()
840+
{
841+
$columnTokenizer = ColumnTokenizer::parse('`film_rating` enum(\'G\',\'PG\',\'PG-13\',\'R\',\'NC-17\')');
842+
$columnDefinition = $columnTokenizer->definition();
843+
844+
$this->assertEquals('film_rating', $columnDefinition->getColumnName());
845+
$this->assertEquals('enum', $columnTokenizer->getColumnDataType());
846+
$this->assertEquals('enum', $columnDefinition->getMethodName());
847+
$this->assertCount(5, $columnDefinition->getMethodParameters()[0]);
848+
$this->assertEqualsCanonicalizing(['G', 'PG', 'PG-13', 'R', 'NC-17'], $columnDefinition->getMethodParameters()[0]);
849+
$this->assertNull($columnDefinition->isNullable());
850+
$this->assertNull($columnDefinition->getCollation());
851+
$this->assertEquals('$table->enum(\'film_rating\', [\'G\', \'PG\', \'PG-13\', \'R\', \'NC-17\'])', $columnDefinition->render());
852+
}
853+
839854
public function test_it_tokenizes_not_null_enum_column()
840855
{
841856
$columnTokenizer = ColumnTokenizer::parse('`status_flag` enum(\'1\',\'2\',\'3\',\'4\') NOT NULL');

0 commit comments

Comments
 (0)