2018-11-20 20:47:30 +05:30
import Vue from 'vue' ;
import component from '~/jobs/components/environments_block.vue' ;
import mountComponent from '../../helpers/vue_mount_component_helper' ;
2019-12-21 20:55:43 +05:30
const TEST _CLUSTER _NAME = 'test_cluster' ;
const TEST _CLUSTER _PATH = 'path/to/test_cluster' ;
2020-03-09 13:42:32 +05:30
const TEST _KUBERNETES _NAMESPACE = 'this-is-a-kubernetes-namespace' ;
2019-12-21 20:55:43 +05:30
2018-11-20 20:47:30 +05:30
describe ( 'Environments block' , ( ) => {
const Component = Vue . extend ( component ) ;
let vm ;
2018-12-05 23:21:45 +05:30
const status = {
2018-11-20 20:47:30 +05:30
group : 'success' ,
icon : 'status_success' ,
label : 'passed' ,
text : 'passed' ,
tooltip : 'passed' ,
} ;
2018-12-05 23:21:45 +05:30
2018-11-20 20:47:30 +05:30
const environment = {
2018-12-05 23:21:45 +05:30
environment _path : '/environment' ,
2018-11-20 20:47:30 +05:30
name : 'environment' ,
} ;
2019-12-04 20:38:33 +05:30
const lastDeployment = { iid : 'deployment' , deployable : { build _path : 'bar' } } ;
2019-12-21 20:55:43 +05:30
const createEnvironmentWithLastDeployment = ( ) => ( {
... environment ,
last _deployment : { ... lastDeployment } ,
} ) ;
2020-03-09 13:42:32 +05:30
const createDeploymentWithCluster = ( ) => ( { name : TEST _CLUSTER _NAME , path : TEST _CLUSTER _PATH } ) ;
const createDeploymentWithClusterAndKubernetesNamespace = ( ) => ( {
name : TEST _CLUSTER _NAME ,
path : TEST _CLUSTER _PATH ,
kubernetes _namespace : TEST _KUBERNETES _NAMESPACE ,
2019-12-21 20:55:43 +05:30
} ) ;
2020-03-09 13:42:32 +05:30
const createComponent = ( deploymentStatus = { } , deploymentCluster = { } ) => {
2019-12-21 20:55:43 +05:30
vm = mountComponent ( Component , {
deploymentStatus ,
2020-03-09 13:42:32 +05:30
deploymentCluster ,
2019-12-21 20:55:43 +05:30
iconStatus : status ,
} ) ;
} ;
const findText = ( ) => vm . $el . textContent . trim ( ) ;
const findJobDeploymentLink = ( ) => vm . $el . querySelector ( '.js-job-deployment-link' ) ;
const findEnvironmentLink = ( ) => vm . $el . querySelector ( '.js-environment-link' ) ;
const findClusterLink = ( ) => vm . $el . querySelector ( '.js-job-cluster-link' ) ;
2018-11-20 20:47:30 +05:30
afterEach ( ( ) => {
vm . $destroy ( ) ;
} ) ;
2018-12-05 23:21:45 +05:30
describe ( 'with last deployment' , ( ) => {
2018-11-20 20:47:30 +05:30
it ( 'renders info for most recent deployment' , ( ) => {
2019-12-21 20:55:43 +05:30
createComponent ( {
status : 'last' ,
environment ,
2018-11-20 20:47:30 +05:30
} ) ;
2019-12-21 20:55:43 +05:30
expect ( findText ( ) ) . toEqual ( 'This job is deployed to environment.' ) ;
} ) ;
2020-03-09 13:42:32 +05:30
describe ( 'when there is a cluster' , ( ) => {
it ( 'renders info with cluster' , ( ) => {
createComponent (
{
status : 'last' ,
environment : createEnvironmentWithLastDeployment ( ) ,
} ,
createDeploymentWithCluster ( ) ,
) ;
expect ( findText ( ) ) . toEqual (
` This job is deployed to environment using cluster ${ TEST _CLUSTER _NAME } . ` ,
) ;
2019-12-21 20:55:43 +05:30
} ) ;
2020-03-09 13:42:32 +05:30
describe ( 'when there is a kubernetes namespace' , ( ) => {
it ( 'renders info with cluster' , ( ) => {
createComponent (
{
status : 'last' ,
environment : createEnvironmentWithLastDeployment ( ) ,
} ,
createDeploymentWithClusterAndKubernetesNamespace ( ) ,
) ;
expect ( findText ( ) ) . toEqual (
` This job is deployed to environment using cluster ${ TEST _CLUSTER _NAME } and namespace ${ TEST _KUBERNETES _NAMESPACE } . ` ,
) ;
} ) ;
} ) ;
2018-11-20 20:47:30 +05:30
} ) ;
} ) ;
describe ( 'with out of date deployment' , ( ) => {
describe ( 'with last deployment' , ( ) => {
it ( 'renders info for out date and most recent' , ( ) => {
2019-12-21 20:55:43 +05:30
createComponent ( {
status : 'out_of_date' ,
environment : createEnvironmentWithLastDeployment ( ) ,
2018-11-20 20:47:30 +05:30
} ) ;
2019-12-21 20:55:43 +05:30
expect ( findText ( ) ) . toEqual (
'This job is an out-of-date deployment to environment. View the most recent deployment.' ,
2018-11-20 20:47:30 +05:30
) ;
2018-12-13 13:39:08 +05:30
2019-12-21 20:55:43 +05:30
expect ( findJobDeploymentLink ( ) . getAttribute ( 'href' ) ) . toEqual ( 'bar' ) ;
} ) ;
2020-03-09 13:42:32 +05:30
describe ( 'when there is a cluster' , ( ) => {
it ( 'renders info with cluster' , ( ) => {
createComponent (
{
status : 'out_of_date' ,
environment : createEnvironmentWithLastDeployment ( ) ,
} ,
createDeploymentWithCluster ( ) ,
) ;
expect ( findText ( ) ) . toEqual (
` This job is an out-of-date deployment to environment using cluster ${ TEST _CLUSTER _NAME } . View the most recent deployment. ` ,
) ;
2019-12-21 20:55:43 +05:30
} ) ;
2020-03-09 13:42:32 +05:30
describe ( 'when there is a kubernetes namespace' , ( ) => {
it ( 'renders info with cluster' , ( ) => {
createComponent (
{
status : 'out_of_date' ,
environment : createEnvironmentWithLastDeployment ( ) ,
} ,
createDeploymentWithClusterAndKubernetesNamespace ( ) ,
) ;
expect ( findText ( ) ) . toEqual (
` This job is an out-of-date deployment to environment using cluster ${ TEST _CLUSTER _NAME } and namespace ${ TEST _KUBERNETES _NAMESPACE } . View the most recent deployment. ` ,
) ;
} ) ;
} ) ;
2018-11-20 20:47:30 +05:30
} ) ;
} ) ;
describe ( 'without last deployment' , ( ) => {
it ( 'renders info about out of date deployment' , ( ) => {
2019-12-21 20:55:43 +05:30
createComponent ( {
status : 'out_of_date' ,
environment ,
2018-11-20 20:47:30 +05:30
} ) ;
2019-12-21 20:55:43 +05:30
expect ( findText ( ) ) . toEqual ( 'This job is an out-of-date deployment to environment.' ) ;
2018-11-20 20:47:30 +05:30
} ) ;
} ) ;
} ) ;
describe ( 'with failed deployment' , ( ) => {
it ( 'renders info about failed deployment' , ( ) => {
2019-12-21 20:55:43 +05:30
createComponent ( {
status : 'failed' ,
environment ,
2018-11-20 20:47:30 +05:30
} ) ;
2019-12-21 20:55:43 +05:30
expect ( findText ( ) ) . toEqual ( 'The deployment of this job to environment did not succeed.' ) ;
2018-11-20 20:47:30 +05:30
} ) ;
} ) ;
describe ( 'creating deployment' , ( ) => {
describe ( 'with last deployment' , ( ) => {
2018-12-05 23:21:45 +05:30
it ( 'renders info about creating deployment and overriding latest deployment' , ( ) => {
2019-12-21 20:55:43 +05:30
createComponent ( {
status : 'creating' ,
environment : createEnvironmentWithLastDeployment ( ) ,
2018-11-20 20:47:30 +05:30
} ) ;
2019-12-21 20:55:43 +05:30
expect ( findText ( ) ) . toEqual (
'This job is creating a deployment to environment. This will overwrite the latest deployment.' ,
2018-11-20 20:47:30 +05:30
) ;
2018-12-13 13:39:08 +05:30
2019-12-21 20:55:43 +05:30
expect ( findJobDeploymentLink ( ) . getAttribute ( 'href' ) ) . toEqual ( 'bar' ) ;
expect ( findEnvironmentLink ( ) . getAttribute ( 'href' ) ) . toEqual ( environment . environment _path ) ;
expect ( findClusterLink ( ) ) . toBeNull ( ) ;
2018-11-20 20:47:30 +05:30
} ) ;
} ) ;
describe ( 'without last deployment' , ( ) => {
2020-03-09 13:42:32 +05:30
it ( 'renders info about deployment being created' , ( ) => {
2019-12-21 20:55:43 +05:30
createComponent ( {
status : 'creating' ,
environment ,
2018-11-20 20:47:30 +05:30
} ) ;
2019-12-21 20:55:43 +05:30
expect ( findText ( ) ) . toEqual ( 'This job is creating a deployment to environment.' ) ;
2018-11-20 20:47:30 +05:30
} ) ;
2020-03-09 13:42:32 +05:30
describe ( 'when there is a cluster' , ( ) => {
it ( 'inclues information about the cluster' , ( ) => {
createComponent (
{
status : 'creating' ,
environment ,
} ,
createDeploymentWithCluster ( ) ,
) ;
expect ( findText ( ) ) . toEqual (
` This job is creating a deployment to environment using cluster ${ TEST _CLUSTER _NAME } . ` ,
) ;
} ) ;
} ) ;
2018-11-20 20:47:30 +05:30
} ) ;
2018-12-05 23:21:45 +05:30
describe ( 'without environment' , ( ) => {
it ( 'does not render environment link' , ( ) => {
2019-12-21 20:55:43 +05:30
createComponent ( {
status : 'creating' ,
environment : null ,
2018-12-05 23:21:45 +05:30
} ) ;
2018-12-13 13:39:08 +05:30
2019-12-21 20:55:43 +05:30
expect ( findEnvironmentLink ( ) ) . toBeNull ( ) ;
2018-12-05 23:21:45 +05:30
} ) ;
} ) ;
2018-11-20 20:47:30 +05:30
} ) ;
2019-12-04 20:38:33 +05:30
describe ( 'with a cluster' , ( ) => {
it ( 'renders the cluster link' , ( ) => {
2020-03-09 13:42:32 +05:30
createComponent (
{
status : 'last' ,
environment : createEnvironmentWithLastDeployment ( ) ,
} ,
createDeploymentWithCluster ( ) ,
) ;
2019-12-04 20:38:33 +05:30
2019-12-21 20:55:43 +05:30
expect ( findText ( ) ) . toEqual (
` This job is deployed to environment using cluster ${ TEST _CLUSTER _NAME } . ` ,
2019-12-04 20:38:33 +05:30
) ;
2019-12-21 20:55:43 +05:30
expect ( findClusterLink ( ) . getAttribute ( 'href' ) ) . toEqual ( TEST _CLUSTER _PATH ) ;
2019-12-04 20:38:33 +05:30
} ) ;
describe ( 'when the cluster is missing the path' , ( ) => {
it ( 'renders the name without a link' , ( ) => {
2020-03-09 13:42:32 +05:30
createComponent (
{
status : 'last' ,
environment : createEnvironmentWithLastDeployment ( ) ,
} ,
{ name : 'the-cluster' } ,
) ;
2019-12-21 20:55:43 +05:30
expect ( findText ( ) ) . toContain ( 'using cluster the-cluster.' ) ;
2019-12-04 20:38:33 +05:30
2019-12-21 20:55:43 +05:30
expect ( findClusterLink ( ) ) . toBeNull ( ) ;
} ) ;
2019-12-04 20:38:33 +05:30
} ) ;
} ) ;
2018-11-20 20:47:30 +05:30
} ) ;