@@ -11,6 +11,7 @@ var install = require('strong-cached-install');
1111var mysql = require ( 'mysql' ) ;
1212var path = require ( 'path' ) ;
1313var request = require ( 'supertest' ) ;
14+ var semver = require ( 'semver' ) ;
1415var debug = require ( 'debug' ) ( 'test:end-to-end' ) ;
1516var workspace = require ( '../' ) ;
1617var models = workspace . models ;
@@ -347,13 +348,13 @@ describe('end-to-end', function() {
347348 } ) ;
348349
349350 it ( 'provides create operation' , function ( done ) {
350- var sample = { title : 'myTitle' } ;
351+ var sample = { title : 'myTitle' } ;
351352 request ( app )
352353 . post ( '/api/Notes' )
353354 . send ( sample )
354355 . expect ( 200 , function ( err , res ) {
355- if ( err ) {
356- done ( err )
356+ if ( err ) {
357+ done ( err ) ;
357358 } else {
358359 expect ( res . body ) .
359360 to . have . property ( 'title' , 'myTitle' ) ;
@@ -363,13 +364,13 @@ describe('end-to-end', function() {
363364 } ) ;
364365
365366 it ( 'provides update operation' , function ( done ) {
366- var sample = { title : 'myTitle' } ;
367+ var sample = { title : 'myTitle' } ;
367368 request ( app )
368369 . put ( '/api/Notes' )
369370 . send ( sample )
370371 . expect ( 200 , function ( err , res ) {
371- if ( err ) {
372- done ( err )
372+ if ( err ) {
373+ done ( err ) ;
373374 } else {
374375 expect ( res . body ) .
375376 to . have . property ( 'title' , 'myTitle' ) ;
@@ -380,15 +381,15 @@ describe('end-to-end', function() {
380381
381382 it ( 'provides delete operation' , function ( done ) {
382383 var Note = app . models . Note ;
383- Note . create ( { title : 'myTitle' } , function ( error , note ) {
384- if ( error ) {
384+ Note . create ( { title : 'myTitle' } , function ( error , note ) {
385+ if ( error ) {
385386 done ( error ) ;
386387 } else {
387388 request ( app )
388389 . delete ( '/api/Notes/' + note . id )
389390 . expect ( 200 , function ( err , res ) {
390- if ( err ) {
391- done ( err )
391+ if ( err ) {
392+ done ( err ) ;
392393 } else {
393394 expect ( res . body ) .
394395 to . have . property ( 'count' , 1 ) ;
@@ -434,6 +435,69 @@ describe('end-to-end', function() {
434435 } ) ;
435436 } ) ;
436437
438+ describe ( 'scaffold 3.x loopback project with option 3.x' , function ( done ) {
439+ before ( resetWorkspace ) ;
440+ before ( function createWorkspace ( done ) {
441+ var options = { loopbackVersion : '3.x' } ;
442+ givenWorkspaceFromTemplate ( 'empty-server' , options , done ) ;
443+ } ) ;
444+
445+ it ( 'contains dependencies with 3.x version' , function ( done ) {
446+ var dependencies = readPackageJsonSync ( ) . dependencies ;
447+ expect ( semver . gtr ( '3.0.0' , dependencies . loopback ) ) . to . be . false ;
448+ done ( ) ;
449+ } ) ;
450+ } ) ;
451+
452+ describe ( 'scaffold 2.x loopback project with option 2.x' , function ( done ) {
453+ before ( resetWorkspace ) ;
454+ before ( function createWorkspace ( done ) {
455+ var options = { loopbackVersion : '2.x' } ;
456+ givenWorkspaceFromTemplate ( 'empty-server' , options , done ) ;
457+ } ) ;
458+
459+ it ( 'contains dependencies with 2.x version' , function ( done ) {
460+ var dependencies = readPackageJsonSync ( ) . dependencies ;
461+ expect ( semver . gtr ( '3.0.0' , dependencies . loopback ) ) . to . be . true ;
462+ expect ( semver . gtr ( '3.0.0' , dependencies [ 'loopback-datasource-juggler' ] ) )
463+ . to . be . true ;
464+ done ( ) ;
465+ } ) ;
466+ } ) ;
467+
468+ describe ( 'scaffold 2.x loopback project with default options' , function ( done ) {
469+ before ( resetWorkspace ) ;
470+ before ( function createWorkspace ( done ) {
471+ givenWorkspaceFromTemplate ( 'empty-server' , done ) ;
472+ } ) ;
473+
474+ it ( 'contains dependencies with 2.x version' , function ( done ) {
475+ var dependencies = readPackageJsonSync ( ) . dependencies ;
476+ expect ( semver . gtr ( '3.0.0' , dependencies . loopback ) ) . to . be . true ;
477+ expect ( semver . gtr ( '3.0.0' , dependencies [ 'loopback-datasource-juggler' ] ) )
478+ . to . be . true ;
479+ done ( ) ;
480+ } ) ;
481+ } ) ;
482+
483+ describe ( 'Check invalid version' , function ( done ) {
484+ before ( resetWorkspace ) ;
485+
486+ it ( 'throws error with invalid version' , function ( done ) {
487+ var options = { loopbackVersion : 'invalid-version' } ;
488+ givenWorkspaceFromTemplate ( 'empty-server' , options , function ( err ) {
489+ expect ( err ) . to . match ( / L o o p b a c k v e r s i o n s h o u l d b e e i t h e r 2 \. x o r 3 \. x / ) ;
490+ done ( ) ;
491+ } ) ;
492+ } ) ;
493+ } ) ;
494+
495+ function readPackageJsonSync ( ) {
496+ var filepath = SANDBOX + '/package.json' ;
497+ var content = fs . readFileSync ( filepath , 'utf-8' ) ;
498+ return JSON . parse ( content ) ;
499+ }
500+
437501 describe ( 'autoupdate' , function ( ) {
438502 this . timeout ( 10000 ) ;
439503 var connection ;
0 commit comments