diff --git a/lib/discovery.js b/lib/discovery.js index 5963f3f1a..a9cf6c2ca 100644 --- a/lib/discovery.js +++ b/lib/discovery.js @@ -340,7 +340,6 @@ function mixinDiscovery(MySQL, mysql) { case 'MEDIUMTEXT': case 'LONGTEXT': case 'TEXT': - case 'ENUM': case 'SET': return 'String'; case 'TINYBLOB': @@ -380,6 +379,8 @@ function mixinDiscovery(MySQL, mysql) { case 'BOOL': case 'BOOLEAN': return 'Boolean'; + case 'ENUM': + return columnType; default: return 'String'; } diff --git a/test/mysql.discover.test.js b/test/mysql.discover.test.js index d2b97c3ea..4fd1f2900 100644 --- a/test/mysql.discover.test.js +++ b/test/mysql.discover.test.js @@ -257,6 +257,22 @@ describe('Discover LDL schema from a table', function() { }); }); +describe('Discover and handle enum', function() { + let schema; + before(function(done) { + db.discoverSchema('PATIENT', {owner: 'STRONGLOOP'}, function(err, schema_) { + schema = schema_; + done(err); + }); + }); + it('should validate enum type for PATIENT', function() { + assert.ok(/STRONGLOOP/i.test(schema.options.mysql.schema)); + assert.strictEqual(schema.options.mysql.table, 'PATIENT'); + assert.strictEqual(schema.name, 'Patient'); + assert.strictEqual(schema.properties.type.type, "enum('INPATIENT','OUTPATIENT')"); + }); +}); + describe('Discover and build models', function() { let models; before(function(done) { diff --git a/test/schema.sql b/test/schema.sql index c0bf5082c..dc5bfdcbb 100644 --- a/test/schema.sql +++ b/test/schema.sql @@ -49,6 +49,23 @@ LOCK TABLES `CUSTOMER` WRITE; /*!40000 ALTER TABLE `CUSTOMER` ENABLE KEYS */; UNLOCK TABLES; + +-- +-- Table structure for table `INVENTORY` +-- + +DROP TABLE IF EXISTS `PATIENT`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PATIENT` ( + `ID` varchar(20) NOT NULL, + `NAME` varchar(20) NOT NULL, + `TYPE` ENUM('INPATIENT', 'OUTPATIENT') DEFAULT NULL, + PRIMARY KEY (`ID`), +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + + -- -- Table structure for table `INVENTORY` -- @@ -67,7 +84,6 @@ CREATE TABLE `INVENTORY` ( PRIMARY KEY (`PRODUCT_ID`,`LOCATION_ID`), KEY `LOCATION_FK` (`LOCATION_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `INVENTORY`