@@ -296,8 +296,6 @@ describe('autoupdate', function() {
296296 keys : [ 'firstname' ] ,
297297 order : [ 'ASC' ] } ,
298298 } ) ;
299-
300- // console.log(err, result);
301299 done ( err , result ) ;
302300 } ) ;
303301 } ) ;
@@ -419,77 +417,7 @@ describe('autoupdate', function() {
419417 } ,
420418 } ;
421419
422- const customer3_schema = {
423- 'name' : 'CustomerTest3' ,
424- 'options' : {
425- 'idInjection' : false ,
426- 'postgresql' : {
427- 'schema' : 'myapp_test' ,
428- 'table' : 'customer_test3' ,
429- } ,
430- } ,
431- 'properties' : {
432- 'id' : {
433- 'type' : 'String' ,
434- 'length' : 20 ,
435- 'id' : 1 ,
436- } ,
437- 'name' : {
438- 'type' : 'String' ,
439- 'required' : false ,
440- 'length' : 40 ,
441- } ,
442- 'email' : {
443- 'type' : 'String' ,
444- 'required' : true ,
445- 'length' : 40 ,
446- } ,
447- 'age' : {
448- 'type' : 'Number' ,
449- 'required' : false ,
450- } ,
451- } ,
452- } ;
453-
454420 const orderTest_schema_v1 = {
455- 'name' : 'OrderTest' ,
456- 'options' : {
457- 'idInjection' : false ,
458- 'postgresql' : {
459- 'schema' : 'myapp_test' ,
460- 'table' : 'order_test' ,
461- } ,
462- 'foreignKeys' : {
463- 'fk_ordertest_customerId' : {
464- 'name' : 'fk_ordertest_customerId' ,
465- 'entity' : 'CustomerTest3' ,
466- 'entityKey' : 'id' ,
467- 'foreignKey' : 'customerId' ,
468- } ,
469- } ,
470- } ,
471- 'properties' : {
472- 'id' : {
473- 'type' : 'String' ,
474- 'length' : 20 ,
475- 'id' : 1 ,
476- } ,
477- 'customerId' : {
478- 'type' : 'String' ,
479- 'length' : 20 ,
480- 'postgresql' : {
481- 'columnName' : 'customerId' ,
482- } ,
483- } ,
484- 'description' : {
485- 'type' : 'String' ,
486- 'required' : false ,
487- 'length' : 40 ,
488- } ,
489- } ,
490- } ;
491-
492- const orderTest_schema_v2 = {
493421 'name' : 'OrderTest' ,
494422 'options' : {
495423 'idInjection' : false ,
@@ -512,10 +440,6 @@ describe('autoupdate', function() {
512440 'length' : 20 ,
513441 'id' : 1 ,
514442 } ,
515- 'subid' : {
516- 'type' : 'int' ,
517- 'id' : 1 ,
518- } ,
519443 'customerId' : {
520444 'type' : 'String' ,
521445 'length' : 20 ,
@@ -528,17 +452,10 @@ describe('autoupdate', function() {
528452 'required' : false ,
529453 'length' : 40 ,
530454 } ,
531- 'productId' : {
532- 'type' : 'String' ,
533- 'length' : 20 ,
534- 'postgresql' : {
535- 'columnName' : 'productId' ,
536- } ,
537- } ,
538455 } ,
539456 } ;
540457
541- const orderTest_schema_v3 = {
458+ const orderTest_schema_v2 = {
542459 'name' : 'OrderTest' ,
543460 'options' : {
544461 'idInjection' : false ,
@@ -547,12 +464,6 @@ describe('autoupdate', function() {
547464 'table' : 'order_test' ,
548465 } ,
549466 'foreignKeys' : {
550- 'fk_ordertest_customerId' : {
551- 'name' : 'fk_ordertest_customerId' ,
552- 'entity' : 'CustomerTest2' ,
553- 'entityKey' : 'id' ,
554- 'foreignKey' : 'customerId' ,
555- } ,
556467 'fk_ordertest_productId' : {
557468 'name' : 'fk_ordertest_productId' ,
558469 'entity' : 'Product' ,
@@ -589,7 +500,7 @@ describe('autoupdate', function() {
589500 } ,
590501 } ;
591502
592- const orderTest_schema_v4 = {
503+ const orderTest_schema_v3 = {
593504 'name' : 'OrderTest' ,
594505 'options' : {
595506 'idInjection' : false ,
@@ -630,9 +541,7 @@ describe('autoupdate', function() {
630541 } ,
631542 } ;
632543
633- ds . createModel ( product_schema . name , product_schema . properties , product_schema . options ) ;
634544 ds . createModel ( customer2_schema . name , customer2_schema . properties , customer2_schema . options ) ;
635- ds . createModel ( customer3_schema . name , customer3_schema . properties , customer3_schema . options ) ;
636545
637546 // Table create order is important. Referenced tables must exist before creating a reference.
638547 // do initial update/creation of referenced tables
@@ -642,7 +551,11 @@ describe('autoupdate', function() {
642551 return done ( err ) ;
643552 }
644553
554+ // do initial update/creation of of referenced tables for the next step
555+ // model OrderTest has a fk refers to model CustomerTest2
556+ ds . createModel ( product_schema . name , product_schema . properties , product_schema . options ) ;
645557 // do initial update/creation of table with fk
558+ // model OrderTest has a fk refers to model CustomerTest2
646559 ds . createModel ( orderTest_schema_v1 . name , orderTest_schema_v1 . properties , orderTest_schema_v1 . options ) ;
647560 ds . autoupdate ( function ( err ) {
648561 if ( err ) {
@@ -662,70 +575,48 @@ describe('autoupdate', function() {
662575 assert ( foreignKeys ) ;
663576 assert . equal ( foreignKeys . length , 1 ) ;
664577 assert . equal ( foreignKeys [ 0 ] . pkColumnName , 'id' ) ;
665- assert . equal ( foreignKeys [ 0 ] . pkTableName , 'customer_test3 ' ) ;
578+ assert . equal ( foreignKeys [ 0 ] . pkTableName , 'customer_test2 ' ) ;
666579 assert . equal ( foreignKeys [ 0 ] . fkColumnName , 'customerId' ) ;
667580 assert . equal ( foreignKeys [ 0 ] . fkName , 'fk_ordertest_customerId' ) ;
668581
669- // update and add another fk
670- ds . createModel ( orderTest_schema_v2 . name , orderTest_schema_v2 . properties , orderTest_schema_v2 . options ) ;
582+ // update the fk of model OrderTest from customerId to productId
583+ // productId refers to model Product
584+ ds . createModel ( orderTest_schema_v2 . name , orderTest_schema_v2 . properties ,
585+ orderTest_schema_v2 . options ) ;
671586 ds . autoupdate ( function ( err ) {
672587 if ( err ) {
673588 err . message += ' (while updating OrderTest schema v2)' ;
674589 return done ( err ) ;
675590 }
676- ds . discoverModelProperties ( 'order_test' , function ( err , props ) {
591+ // get the foreign keys for order_test
592+ ds . connector . discoverForeignKeys ( 'order_test' , { } , function ( err , foreignKeys ) {
677593 if ( err ) return done ( err ) ;
678- // validate that we have the correct number of properties
679- assert . equal ( props . length , 4 ) ;
680-
681- // get the foreign keys for order_test
682- ds . connector . discoverForeignKeys ( 'order_test' , { } , function ( err , foreignKeysUpdated ) {
683- if ( err ) return done ( err ) ;
684- // validate that the foreign keys exist and point to the new column
685- assert ( foreignKeysUpdated ) ;
686- assert . equal ( foreignKeysUpdated . length , 1 ) ;
687- assert . equal ( foreignKeysUpdated [ 0 ] . pkColumnName , 'id' ) ;
688- assert . equal ( foreignKeysUpdated [ 0 ] . pkTableName , 'customer_test2' ) ;
689- assert . equal ( foreignKeysUpdated [ 0 ] . fkColumnName , 'customerId' ) ;
690- assert . equal ( foreignKeysUpdated [ 0 ] . fkName , 'fk_ordertest_customerId' ) ;
691-
692- // create multiple fks on object
693- ds . createModel ( orderTest_schema_v3 . name , orderTest_schema_v3 . properties ,
694- orderTest_schema_v3 . options ) ;
695- ds . autoupdate ( function ( err ) {
696- if ( err ) {
697- err . message += ' (while updating OrderTest schema v3)' ;
698- return done ( err ) ;
699- }
594+ assert ( foreignKeys ) ;
595+ assert . equal ( foreignKeys . length , 1 ) ;
596+ assert . equal ( foreignKeys [ 0 ] . pkTableName , 'product_test' ) ;
597+ assert . equal ( foreignKeys [ 0 ] . fkColumnName , 'productId' ) ;
598+ assert . equal ( foreignKeys [ 0 ] . fkName , 'fk_ordertest_productId' ) ;
599+
600+ // remove fk from model OrderTest
601+ ds . createModel ( orderTest_schema_v3 . name , orderTest_schema_v3 . properties ,
602+ orderTest_schema_v3 . options ) ;
603+ ds . autoupdate ( function ( err ) {
604+ if ( err ) {
605+ err . message += ' (while updating OrderTest schema v3)' ;
606+ return done ( err ) ;
607+ }
608+ ds . discoverModelProperties ( 'order_test' , function ( err , props ) {
609+ if ( err ) return done ( err ) ;
610+
611+ // validate that we have the correct number of properties
612+ assert . equal ( props . length , 4 ) ;
613+
700614 // get the foreign keys for order_test
701- ds . connector . discoverForeignKeys ( 'order_test' , { } , function ( err , foreignKeysMulti ) {
615+ ds . connector . discoverForeignKeys ( 'order_test' , { } , function ( err , foreignKeysEmpty ) {
702616 if ( err ) return done ( err ) ;
703- assert ( foreignKeysMulti ) ;
704- assert . equal ( foreignKeysMulti . length , 2 ) ;
705-
706- // remove fk
707- ds . createModel ( orderTest_schema_v4 . name , orderTest_schema_v4 . properties ,
708- orderTest_schema_v4 . options ) ;
709- ds . autoupdate ( function ( err ) {
710- if ( err ) {
711- err . message += ' (while updating OrderTest schema v4)' ;
712- return done ( err ) ;
713- }
714- ds . discoverModelProperties ( 'order_test' , function ( err , props ) {
715- if ( err ) return done ( err ) ;
716-
717- // validate that we have the correct number of properties
718- assert . equal ( props . length , 4 ) ;
719-
720- // get the foreign keys for order_test
721- ds . connector . discoverForeignKeys ( 'order_test' , { } , function ( err , foreignKeysEmpty ) {
722- if ( err ) return done ( err ) ;
723- assert ( foreignKeysEmpty ) ;
724- assert . equal ( foreignKeysEmpty . length , 0 ) ;
725- done ( ) ;
726- } ) ;
727- } ) ;
728- } ) ;
617+ assert ( foreignKeysEmpty ) ;
618+ assert . equal ( foreignKeysEmpty . length , 0 ) ;
619+ done ( ) ;
729620 } ) ;
730621 } ) ;
731622 } ) ;
0 commit comments