2019-04-09 18:12:31 +01:00
import _ from 'lodash'
2019-04-09 20:58:46 +01:00
const apiClient = require ( '../../src/api-client' )
2019-04-09 18:12:31 +01:00
const methods = apiClient . default . methods
test ( 'it can get the application types' , ( ) => {
const data = {
types : {
drupal : {
id : 'drupal' ,
name : 'Drupal'
} ,
symfony : {
id : 'symfony' ,
name : 'Symfony'
}
}
}
methods . setData ( data )
expect ( methods . getTypes ( ) ) . toBe ( data . types )
} )
test ( 'it can get the applications' , ( ) => {
const data = {
applications : {
1 : {
id : 1 ,
name : 'Rebuilding Acquia' ,
machineName : 'rebuildingacquia' ,
type : 'drupal' ,
level : 'Enterprise' ,
environments : { } ,
tasks : { }
} ,
2 : {
id : 2 ,
name : 'Oliver Davies' ,
machineName : 'oliverdavies' ,
type : 'drupal' ,
level : 'Professional' ,
environments : { } ,
tasks : { }
}
}
}
methods . setData ( data )
expect ( methods . getApplications ( ) ) . toBe ( data . applications )
} )
test ( 'it can get a single application' , ( ) => {
const data = {
applications : {
1 : {
id : 1 ,
name : 'Rebuilding Acquia' ,
machineName : 'rebuildingacquia' ,
type : 'drupal' ,
level : 'Enterprise' ,
environments : { } ,
tasks : { }
} ,
2 : {
id : 2 ,
name : 'Oliver Davies' ,
machineName : 'oliverdavies' ,
type : 'drupal' ,
level : 'Professional' ,
environments : { } ,
tasks : { }
}
}
}
methods . setData ( data )
_ . forEach ( [ 1 , 2 ] , ( applicationId ) => {
expect ( methods . getApplication ( applicationId ) )
. toBe ( data . applications [ applicationId ] )
} )
} )
test ( 'it can get an environment for an application' , ( ) => {
const data = {
applications : {
1 : {
id : 1 ,
name : 'Rebuilding Acquia' ,
machineName : 'rebuildingacquia' ,
type : 'drupal' ,
level : 'Enterprise' ,
environments : {
dev : {
name : 'Dev' ,
url : 'dev.oliverdavies.uk' ,
label : 'develop' ,
versions : {
php : '7.2'
}
} ,
stage : {
name : 'Stage' ,
url : 'stg.oliverdavies.uk' ,
label : 'master' ,
versions : {
php : '7.2'
}
} ,
prod : {
name : 'Prod' ,
url : 'oliverdavies.uk' ,
label : 'tags/2018-12-21' ,
versions : {
php : '7.2'
}
} ,
tasks : { }
}
}
}
}
methods . setData ( data )
_ . forEach ( [ 'dev' , 'stage' , 'prod' ] , ( environmentName ) => {
expect ( methods . getEnvironment ( 1 , environmentName ) )
. toBe ( data . applications [ 1 ] . environments [ environmentName ] )
} )
} )
test ( 'it can get the type of an application' , ( ) => {
const data = {
types : {
drupal : {
id : 'drupal' ,
name : 'Drupal'
} ,
symfony : {
id : 'symfony' ,
name : 'Symfony'
}
}
}
methods . setData ( data )
const applications = {
drupal : {
type : 'drupal'
} ,
symfony : {
type : 'symfony'
} ,
}
_ . forEach ( applications , ( application , expected ) => {
expect ( methods . getApplicationType ( application ) ) . toBe ( data . types [ expected ] )
} )
} )
test ( 'it can get a version from an environment' , ( ) => {
const data = {
applications : {
1 : {
id : 1 ,
name : 'Rebuilding Acquia' ,
machineName : 'rebuildingacquia' ,
type : 'drupal' ,
level : 'Enterprise' ,
environments : {
dev : {
name : 'Dev' ,
url : 'dev.rebuilding-acquia.com' ,
label : 'develop' ,
versions : {
php : '5.6'
}
} ,
stage : {
name : 'Stage' ,
url : 'stg.rebuilding-acquia.com' ,
label : 'master' ,
versions : {
php : '7.1'
}
} ,
prod : {
name : 'Prod' ,
url : 'rebuilding-acquia.com' ,
label : 'tags/2018-12-21' ,
versions : {
php : '7.2'
}
}
}
}
}
}
methods . setData ( data )
const expected = {
dev : '5.6' ,
stage : '7.1' ,
prod : '7.2'
}
_ . forEach ( expected , ( version , environment ) => {
expect ( methods . getVersion ( 'php' , data . applications [ 1 ] . environments [ environment ] ) )
. toBe ( version )
} )
} )