BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
cdc92d94
Unverified
Commit
cdc92d94
authored
May 25, 2018
by
Phil Hughes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed pipeline actions spec
parent
a83dd664
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
296 deletions
+73
-296
actions.js
...ssets/javascripts/ide/stores/modules/pipelines/actions.js
+1
-0
project_spec.js
spec/javascripts/ide/stores/actions/project_spec.js
+1
-110
actions_spec.js
.../javascripts/ide/stores/modules/pipelines/actions_spec.js
+71
-150
branch_spec.js
spec/javascripts/ide/stores/mutations/branch_spec.js
+0
-36
No files found.
app/assets/javascripts/ide/stores/modules/pipelines/actions.js
View file @
cdc92d94
...
...
@@ -8,6 +8,7 @@ import * as types from './mutation_types';
let
eTagPoll
;
export
const
clearEtagPoll
=
()
=>
(
eTagPoll
=
null
);
export
const
stopPipelinePolling
=
()
=>
eTagPoll
.
stop
();
export
const
restartPipelinePolling
=
()
=>
eTagPoll
.
restart
();
...
...
spec/javascripts/ide/stores/actions/project_spec.js
View file @
cdc92d94
import
Visibility
from
'visibilityjs'
;
import
MockAdapter
from
'axios-mock-adapter'
;
import
{
refreshLastCommitData
,
pollSuccessCallBack
}
from
'~/ide/stores/actions'
;
import
{
refreshLastCommitData
}
from
'~/ide/stores/actions'
;
import
store
from
'~/ide/stores'
;
import
service
from
'~/ide/services'
;
import
axios
from
'~/lib/utils/axios_utils'
;
import
{
fullPipelinesResponse
}
from
'../../mock_data'
;
import
{
resetStore
}
from
'../../helpers'
;
import
testAction
from
'../../../helpers/vuex_action_helper'
;
describe
(
'IDE store project actions'
,
()
=>
{
const
setProjectState
=
()
=>
{
store
.
state
.
currentProjectId
=
'abc/def'
;
store
.
state
.
currentBranchId
=
'master'
;
store
.
state
.
projects
[
'abc/def'
]
=
{
id
:
4
,
path_with_namespace
:
'abc/def'
,
branches
:
{
master
:
{
commit
:
{
id
:
'abc123def456ghi789jkl'
,
title
:
'example'
,
},
},
},
};
};
beforeEach
(()
=>
{
store
.
state
.
projects
[
'abc/def'
]
=
{};
});
...
...
@@ -101,92 +80,4 @@ describe('IDE store project actions', () => {
);
});
});
describe
(
'pipelinePoll'
,
()
=>
{
let
mock
;
beforeEach
(()
=>
{
setProjectState
();
jasmine
.
clock
().
install
();
mock
=
new
MockAdapter
(
axios
);
mock
.
onGet
(
'/abc/def/commit/abc123def456ghi789jkl/pipelines'
)
.
reply
(
200
,
{
data
:
{
foo
:
'bar'
}
},
{
'poll-interval'
:
'10000'
});
});
afterEach
(()
=>
{
jasmine
.
clock
().
uninstall
();
mock
.
restore
();
store
.
dispatch
(
'stopPipelinePolling'
);
});
it
(
'calls service periodically'
,
done
=>
{
spyOn
(
axios
,
'get'
).
and
.
callThrough
();
spyOn
(
Visibility
,
'hidden'
).
and
.
returnValue
(
false
);
store
.
dispatch
(
'pipelinePoll'
)
.
then
(()
=>
{
jasmine
.
clock
().
tick
(
1000
);
expect
(
axios
.
get
).
toHaveBeenCalled
();
expect
(
axios
.
get
.
calls
.
count
()).
toBe
(
1
);
})
.
then
(()
=>
new
Promise
(
resolve
=>
requestAnimationFrame
(
resolve
)))
.
then
(()
=>
{
jasmine
.
clock
().
tick
(
10000
);
expect
(
axios
.
get
.
calls
.
count
()).
toBe
(
2
);
})
.
then
(()
=>
new
Promise
(
resolve
=>
requestAnimationFrame
(
resolve
)))
.
then
(()
=>
{
jasmine
.
clock
().
tick
(
10000
);
expect
(
axios
.
get
.
calls
.
count
()).
toBe
(
3
);
})
.
then
(()
=>
new
Promise
(
resolve
=>
requestAnimationFrame
(
resolve
)))
.
then
(()
=>
{
jasmine
.
clock
().
tick
(
10000
);
expect
(
axios
.
get
.
calls
.
count
()).
toBe
(
4
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
});
describe
(
'pollSuccessCallBack'
,
()
=>
{
beforeEach
(()
=>
{
setProjectState
();
});
it
(
'commits correct pipeline'
,
done
=>
{
testAction
(
pollSuccessCallBack
,
fullPipelinesResponse
,
store
.
state
,
[
{
type
:
'SET_LAST_COMMIT_PIPELINE'
,
payload
:
{
projectId
:
'abc/def'
,
branchId
:
'master'
,
pipeline
:
{
id
:
'50'
,
commit
:
{
id
:
'abc123def456ghi789jkl'
,
},
details
:
{
status
:
{
icon
:
'status_passed'
,
text
:
'passed'
,
},
},
},
},
},
],
// mutations
[],
// action
done
,
);
});
});
});
spec/javascripts/ide/stores/modules/pipelines/actions_spec.js
View file @
cdc92d94
import
Visibility
from
'visibilityjs'
;
import
MockAdapter
from
'axios-mock-adapter'
;
import
axios
from
'~/lib/utils/axios_utils'
;
import
actions
,
{
...
...
@@ -5,15 +6,13 @@ import actions, {
receiveLatestPipelineError
,
receiveLatestPipelineSuccess
,
fetchLatestPipeline
,
requestStages
,
receiveStagesError
,
receiveStagesSuccess
,
fetchStages
,
stopPipelinePolling
,
clearEtagPoll
,
}
from
'~/ide/stores/modules/pipelines/actions'
;
import
state
from
'~/ide/stores/modules/pipelines/state'
;
import
*
as
types
from
'~/ide/stores/modules/pipelines/mutation_types'
;
import
testAction
from
'../../../../helpers/vuex_action_helper'
;
import
{
pipelines
,
stages
}
from
'../../../mock_data'
;
import
{
pipelines
}
from
'../../../mock_data'
;
describe
(
'IDE pipelines actions'
,
()
=>
{
let
mockedState
;
...
...
@@ -51,7 +50,7 @@ describe('IDE pipelines actions', () => {
null
,
mockedState
,
[{
type
:
types
.
RECEIVE_LASTEST_PIPELINE_ERROR
}],
[],
[
{
type
:
'stopPipelinePolling'
}
],
done
,
);
});
...
...
@@ -59,7 +58,7 @@ describe('IDE pipelines actions', () => {
it
(
'creates flash message'
,
()
=>
{
const
flashSpy
=
spyOnDependency
(
actions
,
'flash'
);
receiveLatestPipelineError
({
commit
()
{}
});
receiveLatestPipelineError
({
commit
()
{}
,
dispatch
()
{}
});
expect
(
flashSpy
).
toHaveBeenCalled
();
});
...
...
@@ -79,166 +78,88 @@ describe('IDE pipelines actions', () => {
});
describe
(
'fetchLatestPipeline'
,
()
=>
{
describe
(
'success'
,
()
=>
{
beforeEach
(()
=>
{
mock
.
onGet
(
/
\/
api
\/
v4
\/
projects
\/(
.*
)\/
pipelines
(
.*
)
/
).
replyOnce
(
200
,
pipelines
);
});
it
(
'dispatches request'
,
done
=>
{
testAction
(
fetchLatestPipeline
,
'123'
,
mockedState
,
[],
[{
type
:
'requestLatestPipeline'
},
{
type
:
'receiveLatestPipelineSuccess'
}],
done
,
);
});
it
(
'dispatches success with latest pipeline'
,
done
=>
{
testAction
(
fetchLatestPipeline
,
'123'
,
mockedState
,
[],
[
{
type
:
'requestLatestPipeline'
},
{
type
:
'receiveLatestPipelineSuccess'
,
payload
:
pipelines
[
0
]
},
],
done
,
);
});
it
(
'calls axios with correct params'
,
()
=>
{
const
apiSpy
=
spyOn
(
axios
,
'get'
).
and
.
callThrough
();
fetchLatestPipeline
({
dispatch
()
{},
rootState
:
state
},
'123'
);
expect
(
apiSpy
).
toHaveBeenCalledWith
(
jasmine
.
anything
(),
{
params
:
{
sha
:
'123'
,
per_page
:
'1'
,
},
});
});
});
describe
(
'error'
,
()
=>
{
beforeEach
(()
=>
{
mock
.
onGet
(
/
\/
api
\/
v4
\/
projects
\/(
.*
)\/
pipelines
(
.*
)
/
).
replyOnce
(
500
);
});
it
(
'dispatches error'
,
done
=>
{
testAction
(
fetchLatestPipeline
,
'123'
,
mockedState
,
[],
[{
type
:
'requestLatestPipeline'
},
{
type
:
'receiveLatestPipelineError'
}],
done
,
);
});
});
});
describe
(
'requestStages'
,
()
=>
{
it
(
'commits request'
,
done
=>
{
testAction
(
requestStages
,
null
,
mockedState
,
[{
type
:
types
.
REQUEST_STAGES
}],
[],
done
);
});
});
describe
(
'receiveJobsError'
,
()
=>
{
it
(
'commits error'
,
done
=>
{
testAction
(
receiveStagesError
,
null
,
mockedState
,
[{
type
:
types
.
RECEIVE_STAGES_ERROR
}],
[],
done
,
);
});
it
(
'creates flash message'
,
()
=>
{
const
flashSpy
=
spyOnDependency
(
actions
,
'flash'
);
receiveStagesError
({
commit
()
{}
});
expect
(
flashSpy
).
toHaveBeenCalled
();
});
});
describe
(
'receiveStagesSuccess'
,
()
=>
{
it
(
'commits jobs'
,
done
=>
{
testAction
(
receiveStagesSuccess
,
stages
,
mockedState
,
[{
type
:
types
.
RECEIVE_STAGES_SUCCESS
,
payload
:
stages
}],
[],
done
,
);
beforeEach
(()
=>
{
jasmine
.
clock
().
install
();
});
});
describe
(
'fetchStages'
,
()
=>
{
beforeEach
(()
=>
{
mockedState
.
latestPipeline
=
pipelines
[
0
];
afterEach
(()
=>
{
jasmine
.
clock
().
uninstall
();
stopPipelinePolling
();
clearEtagPoll
();
});
describe
(
'success'
,
()
=>
{
beforeEach
(()
=>
{
mock
.
onGet
(
/
\/(
.*
)\/
pipelines
\/(
.*
)\/
builds.json/
).
replyOnce
(
200
,
stages
);
mock
.
onGet
(
'/abc/def/commit/abc123def456ghi789jkl/pipelines'
)
.
reply
(
200
,
{
data
:
{
foo
:
'bar'
}
},
{
'poll-interval'
:
'10000'
});
});
it
(
'dispatches request'
,
done
=>
{
testAction
(
fetchStages
,
null
,
mockedState
,
[],
[{
type
:
'requestStages'
},
{
type
:
'receiveStagesSuccess'
}],
done
,
);
});
it
(
'dispatches success with latest pipeline'
,
done
=>
{
testAction
(
fetchStages
,
null
,
mockedState
,
[],
[{
type
:
'requestStages'
},
{
type
:
'receiveStagesSuccess'
,
payload
:
stages
}],
done
,
);
});
it
(
'calls axios with correct URL'
,
()
=>
{
const
apiSpy
=
spyOn
(
axios
,
'get'
).
and
.
callThrough
();
fetchStages
({
dispatch
()
{},
state
:
mockedState
,
rootState
:
mockedState
});
expect
(
apiSpy
).
toHaveBeenCalledWith
(
'/test/project/pipelines/1/builds.json'
,
jasmine
.
anything
(),
);
spyOn
(
axios
,
'get'
).
and
.
callThrough
();
spyOn
(
Visibility
,
'hidden'
).
and
.
returnValue
(
false
);
const
dispatch
=
jasmine
.
createSpy
(
'dispatch'
);
const
rootGetters
=
{
lastCommit
:
{
id
:
'abc123def456ghi789jkl'
},
currentProject
:
{
path_with_namespace
:
'abc/def'
},
};
fetchLatestPipeline
({
dispatch
,
rootGetters
});
expect
(
dispatch
.
calls
.
argsFor
(
0
)).
toEqual
([
'requestLatestPipeline'
]);
jasmine
.
clock
().
tick
(
1000
);
new
Promise
(
resolve
=>
requestAnimationFrame
(
resolve
))
.
then
(()
=>
{
expect
(
axios
.
get
).
toHaveBeenCalled
();
expect
(
axios
.
get
.
calls
.
count
()).
toBe
(
1
);
expect
(
dispatch
.
calls
.
argsFor
(
1
)).
toEqual
([
'receiveLatestPipelineSuccess'
,
jasmine
.
anything
(),
]);
jasmine
.
clock
().
tick
(
10000
);
})
.
then
(()
=>
new
Promise
(
resolve
=>
requestAnimationFrame
(
resolve
)))
.
then
(()
=>
{
expect
(
axios
.
get
).
toHaveBeenCalled
();
expect
(
axios
.
get
.
calls
.
count
()).
toBe
(
2
);
expect
(
dispatch
.
calls
.
argsFor
(
2
)).
toEqual
([
'receiveLatestPipelineSuccess'
,
jasmine
.
anything
(),
]);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
});
describe
(
'error'
,
()
=>
{
beforeEach
(()
=>
{
mock
.
onGet
(
/
\/(
.*
)\/
pipelines
\/(
.*
)\/
builds.json/
).
replyOnce
(
500
);
mock
.
onGet
(
'/abc/def/commit/abc123def456ghi789jkl/pipelines'
).
reply
(
500
);
});
it
(
'dispatches error'
,
done
=>
{
testAction
(
fetchStages
,
null
,
mockedState
,
[],
[{
type
:
'requestStages'
},
{
type
:
'receiveStagesError'
}],
done
,
);
const
dispatch
=
jasmine
.
createSpy
(
'dispatch'
);
const
rootGetters
=
{
lastCommit
:
{
id
:
'abc123def456ghi789jkl'
},
currentProject
:
{
path_with_namespace
:
'abc/def'
},
};
fetchLatestPipeline
({
dispatch
,
rootGetters
});
jasmine
.
clock
().
tick
(
1500
);
new
Promise
(
resolve
=>
requestAnimationFrame
(
resolve
))
.
then
(()
=>
{
expect
(
dispatch
.
calls
.
argsFor
(
1
)).
toEqual
([
'receiveLatestPipelineError'
]);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
});
});
...
...
spec/javascripts/ide/stores/mutations/branch_spec.js
View file @
cdc92d94
...
...
@@ -37,40 +37,4 @@ describe('Multi-file store branch mutations', () => {
expect
(
localState
.
projects
.
Example
.
branches
.
master
.
commit
.
title
).
toBe
(
'Example commit'
);
});
});
describe
(
'SET_LAST_COMMIT_PIPELINE'
,
()
=>
{
it
(
'sets the pipeline for the last commit on current project'
,
()
=>
{
localState
.
projects
=
{
Example
:
{
branches
:
{
master
:
{
commit
:
{},
},
},
},
};
mutations
.
SET_LAST_COMMIT_PIPELINE
(
localState
,
{
projectId
:
'Example'
,
branchId
:
'master'
,
pipeline
:
{
id
:
'50'
,
details
:
{
status
:
{
icon
:
'status_passed'
,
text
:
'passed'
,
},
},
},
});
expect
(
localState
.
projects
.
Example
.
branches
.
master
.
commit
.
pipeline
.
id
).
toBe
(
'50'
);
expect
(
localState
.
projects
.
Example
.
branches
.
master
.
commit
.
pipeline
.
details
.
status
.
text
).
toBe
(
'passed'
,
);
expect
(
localState
.
projects
.
Example
.
branches
.
master
.
commit
.
pipeline
.
details
.
status
.
icon
).
toBe
(
'status_passed'
,
);
});
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment