2020-12-22 10:09:51 -05:00
import { CI _CONFIG _STATUS _VALID } from '~/pipeline_editor/constants' ;
2021-01-06 16:10:18 -05:00
import { unwrapStagesWithNeeds } from '~/pipelines/components/unwrapping_utils' ;
2020-12-22 10:09:51 -05:00
2021-01-08 19:10:30 -05:00
export const mockProjectNamespace = 'user1' ;
export const mockProjectPath = 'project1' ;
export const mockProjectFullPath = ` ${ mockProjectNamespace } / ${ mockProjectPath } ` ;
2021-05-04 14:10:03 -04:00
export const mockDefaultBranch = 'main' ;
2021-06-15 14:09:57 -04:00
export const mockNewBranch = 'new-branch' ;
2020-11-20 16:09:12 -05:00
export const mockNewMergeRequestPath = '/-/merge_requests/new' ;
2020-12-22 07:10:09 -05:00
export const mockCommitSha = 'aabbccdd' ;
export const mockCommitNextSha = 'eeffgghh' ;
2020-12-22 10:09:51 -05:00
export const mockLintHelpPagePath = '/-/lint-help' ;
2021-01-06 16:10:18 -05:00
export const mockYmlHelpPagePath = '/-/yml-help' ;
2020-11-20 16:09:12 -05:00
export const mockCommitMessage = 'My commit message' ;
2020-10-30 17:08:52 -04:00
export const mockCiConfigPath = '.gitlab-ci.yml' ;
export const mockCiYml = `
2020-12-22 10:09:51 -05:00
stages :
- test
- build
job _test _1 :
2020-10-30 17:08:52 -04:00
stage : test
2020-12-22 10:09:51 -05:00
script :
- echo "test 1"
job _test _2 :
stage : test
script :
- echo "test 2"
job _build :
stage : build
2021-01-14 07:10:54 -05:00
script :
2020-12-22 10:09:51 -05:00
- echo "build"
needs : [ "job_test_2" ]
2020-10-30 17:08:52 -04:00
` ;
2021-06-23 14:07:10 -04:00
export const mockBlobContentQueryResponse = {
data : {
project : { repository : { blobs : { nodes : [ { rawBlob : mockCiYml } ] } } } ,
} ,
} ;
export const mockBlobContentQueryResponseNoCiFile = {
data : {
project : { repository : { blobs : { nodes : [ ] } } } ,
} ,
} ;
export const mockBlobContentQueryResponseEmptyCiFile = {
data : {
project : { repository : { blobs : { nodes : [ { rawBlob : '' } ] } } } ,
} ,
} ;
2020-11-27 07:09:14 -05:00
2021-01-13 10:10:40 -05:00
const mockJobFields = {
beforeScript : [ ] ,
afterScript : [ ] ,
environment : null ,
allowFailure : false ,
tags : [ ] ,
when : 'on_success' ,
only : { refs : [ 'branches' , 'tags' ] , _ _typename : 'CiJobLimitType' } ,
except : null ,
needs : { nodes : [ ] , _ _typename : 'CiConfigNeedConnection' } ,
_ _typename : 'CiConfigJob' ,
} ;
// Mock result of the graphql query at:
// app/assets/javascripts/pipeline_editor/graphql/queries/ci_config.graphql
2020-12-08 16:10:06 -05:00
export const mockCiConfigQueryResponse = {
data : {
ciConfig : {
errors : [ ] ,
2021-02-12 13:08:59 -05:00
mergedYaml : mockCiYml ,
2020-12-22 10:09:51 -05:00
status : CI _CONFIG _STATUS _VALID ,
stages : {
_ _typename : 'CiConfigStageConnection' ,
nodes : [
{
name : 'test' ,
groups : {
nodes : [
{
name : 'job_test_1' ,
2021-01-12 16:10:47 -05:00
size : 1 ,
2020-12-22 10:09:51 -05:00
jobs : {
nodes : [
{
name : 'job_test_1' ,
2021-01-13 10:10:40 -05:00
script : [ 'echo "test 1"' ] ,
... mockJobFields ,
2020-12-22 10:09:51 -05:00
} ,
] ,
_ _typename : 'CiConfigJobConnection' ,
} ,
_ _typename : 'CiConfigGroup' ,
} ,
{
name : 'job_test_2' ,
2021-01-12 16:10:47 -05:00
size : 1 ,
2020-12-22 10:09:51 -05:00
jobs : {
nodes : [
{
name : 'job_test_2' ,
2021-01-13 10:10:40 -05:00
script : [ 'echo "test 2"' ] ,
... mockJobFields ,
2020-12-22 10:09:51 -05:00
} ,
] ,
_ _typename : 'CiConfigJobConnection' ,
} ,
_ _typename : 'CiConfigGroup' ,
} ,
] ,
_ _typename : 'CiConfigGroupConnection' ,
} ,
_ _typename : 'CiConfigStage' ,
} ,
{
name : 'build' ,
groups : {
nodes : [
{
name : 'job_build' ,
2021-01-12 16:10:47 -05:00
size : 1 ,
2020-12-22 10:09:51 -05:00
jobs : {
nodes : [
{
name : 'job_build' ,
2021-01-13 10:10:40 -05:00
script : [ 'echo "build"' ] ,
... mockJobFields ,
2020-12-22 10:09:51 -05:00
} ,
] ,
_ _typename : 'CiConfigJobConnection' ,
} ,
_ _typename : 'CiConfigGroup' ,
} ,
] ,
_ _typename : 'CiConfigGroupConnection' ,
} ,
_ _typename : 'CiConfigStage' ,
} ,
] ,
} ,
_ _typename : 'CiConfig' ,
2020-12-08 16:10:06 -05:00
} ,
} ,
} ;
2021-01-06 16:10:18 -05:00
export const mergeUnwrappedCiConfig = ( mergedConfig ) => {
const { ciConfig } = mockCiConfigQueryResponse . data ;
return {
... ciConfig ,
stages : unwrapStagesWithNeeds ( ciConfig . stages . nodes ) ,
... mergedConfig ,
} ;
} ;
2021-08-20 08:09:31 -04:00
export const mockCommitShaResults = {
2021-07-12 08:09:39 -04:00
data : {
project : {
2021-09-13 23:11:17 -04:00
repository : {
tree : {
lastCommit : {
2021-08-20 08:09:31 -04:00
sha : mockCommitSha ,
2021-08-25 23:09:01 -04:00
} ,
2021-09-13 23:11:17 -04:00
} ,
2021-08-25 23:09:01 -04:00
} ,
} ,
} ,
} ;
export const mockNewCommitShaResults = {
data : {
project : {
2021-09-13 23:11:17 -04:00
repository : {
tree : {
lastCommit : {
2021-08-25 23:09:01 -04:00
sha : 'eeff1122' ,
} ,
2021-09-13 23:11:17 -04:00
} ,
2021-07-12 08:09:39 -04:00
} ,
} ,
} ,
} ;
2021-08-20 08:09:31 -04:00
export const mockEmptyCommitShaResults = {
data : {
project : {
2021-09-13 23:11:17 -04:00
repository : {
tree : {
lastCommit : {
sha : '' ,
} ,
} ,
2021-08-20 08:09:31 -04:00
} ,
} ,
} ,
} ;
2021-04-09 14:09:24 -04:00
export const mockProjectBranches = {
2021-05-13 14:10:32 -04:00
data : {
project : {
repository : {
branchNames : [
'main' ,
'develop' ,
'production' ,
'test' ,
'better-feature' ,
'feature-abc' ,
'update-ci' ,
'mock-feature' ,
'test-merge-request' ,
'staging' ,
] ,
} ,
} ,
2021-04-09 14:09:24 -04:00
} ,
} ;
2021-05-13 14:10:32 -04:00
export const mockTotalBranchResults =
mockProjectBranches . data . project . repository . branchNames . length ;
export const mockSearchBranches = {
data : {
project : {
repository : {
branchNames : [ 'test' , 'better-feature' , 'update-ci' , 'test-merge-request' ] ,
} ,
} ,
} ,
} ;
export const mockTotalSearchResults = mockSearchBranches . data . project . repository . branchNames . length ;
export const mockEmptySearchBranches = {
data : {
project : {
repository : {
branchNames : [ ] ,
} ,
} ,
} ,
} ;
export const mockBranchPaginationLimit = 10 ;
export const mockTotalBranches = 20 ; // must be greater than mockBranchPaginationLimit to test pagination
2021-10-13 08:12:20 -04:00
export const mockProjectPipeline = ( { hasStages = true } = { } ) => {
const stages = hasStages
? {
edges : [
{
node : {
id : 'gid://gitlab/Ci::Stage/605' ,
name : 'prepare' ,
status : 'success' ,
detailedStatus : {
detailsPath : '/root/sample-ci-project/-/pipelines/268#prepare' ,
group : 'success' ,
hasDetails : true ,
icon : 'status_success' ,
id : 'success-605-605' ,
label : 'passed' ,
text : 'passed' ,
tooltip : 'passed' ,
} ,
} ,
} ,
] ,
}
: null ;
return {
pipeline : {
commitPath : '/-/commit/aabbccdd' ,
id : 'gid://gitlab/Ci::Pipeline/118' ,
iid : '28' ,
shortSha : mockCommitSha ,
status : 'SUCCESS' ,
detailedStatus : {
detailsPath : '/root/sample-ci-project/-/pipelines/118' ,
group : 'success' ,
icon : 'status_success' ,
text : 'passed' ,
} ,
stages ,
2021-02-18 07:09:34 -05:00
} ,
2021-10-13 08:12:20 -04:00
} ;
2021-02-18 07:09:34 -05:00
} ;
2021-10-25 17:12:12 -04:00
export const mockLinkedPipelines = ( { hasDownstream = true , hasUpstream = true } = { } ) => {
let upstream = null ;
let downstream = {
nodes : [ ] ,
_ _typename : 'PipelineConnection' ,
} ;
if ( hasDownstream ) {
downstream = {
nodes : [
{
id : 'gid://gitlab/Ci::Pipeline/612' ,
path : '/root/job-log-sections/-/pipelines/612' ,
project : { name : 'job-log-sections' , _ _typename : 'Project' } ,
detailedStatus : {
group : 'success' ,
icon : 'status_success' ,
label : 'passed' ,
_ _typename : 'DetailedStatus' ,
} ,
_ _typename : 'Pipeline' ,
} ,
] ,
_ _typename : 'PipelineConnection' ,
} ;
}
if ( hasUpstream ) {
upstream = {
id : 'gid://gitlab/Ci::Pipeline/610' ,
path : '/root/trigger-downstream/-/pipelines/610' ,
project : { name : 'trigger-downstream' , _ _typename : 'Project' } ,
detailedStatus : {
group : 'success' ,
icon : 'status_success' ,
label : 'passed' ,
_ _typename : 'DetailedStatus' ,
} ,
_ _typename : 'Pipeline' ,
} ;
}
return {
data : {
project : {
pipeline : {
path : '/root/ci-project/-/pipelines/790' ,
downstream ,
upstream ,
} ,
_ _typename : 'Project' ,
} ,
} ,
} ;
} ;
2020-11-27 07:09:14 -05:00
export const mockLintResponse = {
valid : true ,
2021-02-12 13:08:59 -05:00
mergedYaml : mockCiYml ,
status : CI _CONFIG _STATUS _VALID ,
2020-11-27 07:09:14 -05:00
errors : [ ] ,
warnings : [ ] ,
jobs : [
{
name : 'job_1' ,
stage : 'test' ,
before _script : [ "echo 'before script 1'" ] ,
script : [ "echo 'script 1'" ] ,
after _script : [ "echo 'after script 1" ] ,
tag _list : [ 'tag 1' ] ,
environment : 'prd' ,
when : 'on_success' ,
allow _failure : false ,
only : null ,
2021-05-04 14:10:03 -04:00
except : { refs : [ 'main@gitlab-org/gitlab' , '/^release/.*$/@gitlab-org/gitlab' ] } ,
2020-11-27 07:09:14 -05:00
} ,
{
name : 'job_2' ,
stage : 'test' ,
before _script : [ "echo 'before script 2'" ] ,
script : [ "echo 'script 2'" ] ,
after _script : [ "echo 'after script 2" ] ,
tag _list : [ 'tag 2' ] ,
environment : 'stg' ,
when : 'on_success' ,
allow _failure : true ,
only : { refs : [ 'web' , 'chat' , 'pushes' ] } ,
2021-05-04 14:10:03 -04:00
except : { refs : [ 'main@gitlab-org/gitlab' , '/^release/.*$/@gitlab-org/gitlab' ] } ,
2020-11-27 07:09:14 -05:00
} ,
] ,
} ;
export const mockJobs = [
{
name : 'job_1' ,
stage : 'build' ,
beforeScript : [ ] ,
script : [ "echo 'Building'" ] ,
afterScript : [ ] ,
tagList : [ ] ,
environment : null ,
when : 'on_success' ,
allowFailure : true ,
only : { refs : [ 'web' , 'chat' , 'pushes' ] } ,
except : null ,
} ,
{
name : 'multi_project_job' ,
stage : 'test' ,
beforeScript : [ ] ,
script : [ ] ,
afterScript : [ ] ,
tagList : [ ] ,
environment : null ,
when : 'on_success' ,
allowFailure : false ,
only : { refs : [ 'branches' , 'tags' ] } ,
except : null ,
} ,
{
name : 'job_2' ,
stage : 'test' ,
beforeScript : [ "echo 'before script'" ] ,
script : [ "echo 'script'" ] ,
afterScript : [ "echo 'after script" ] ,
tagList : [ ] ,
environment : null ,
when : 'on_success' ,
allowFailure : false ,
only : { refs : [ 'branches@gitlab-org/gitlab' ] } ,
2021-05-04 14:10:03 -04:00
except : { refs : [ 'main@gitlab-org/gitlab' , '/^release/.*$/@gitlab-org/gitlab' ] } ,
2020-11-27 07:09:14 -05:00
} ,
] ;
export const mockErrors = [
'"job_1 job: chosen stage does not exist; available stages are .pre, build, test, deploy, .post"' ,
] ;
export const mockWarnings = [
'"jobs:multi_project_job may allow multiple pipelines to run for a single action due to `rules:when` clause with no `workflow:rules` - read more: https://docs.gitlab.com/ee/ci/troubleshooting.html#pipeline-warnings"' ,
] ;