mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-08-13 13:31:19 +00:00
109 lines
3.1 KiB
JavaScript
109 lines
3.1 KiB
JavaScript
import PipelineStore from '~/ci/pipeline_details/stores/pipelines_store';
|
|
|
|
describe('Pipelines Store', () => {
|
|
let store;
|
|
|
|
beforeEach(() => {
|
|
store = new PipelineStore();
|
|
});
|
|
|
|
it('should be initialized with an empty state', () => {
|
|
expect(store.state.pipelines).toEqual([]);
|
|
expect(store.state.count).toEqual({});
|
|
expect(store.state.pageInfo).toEqual({});
|
|
});
|
|
|
|
describe('storePipelines', () => {
|
|
it('should use the default parameter if none is provided', () => {
|
|
store.storePipelines();
|
|
|
|
expect(store.state.pipelines).toEqual([]);
|
|
});
|
|
|
|
it('should store the provided array', () => {
|
|
const array = [
|
|
{ id: 1, status: 'running' },
|
|
{ id: 2, status: 'success' },
|
|
];
|
|
store.storePipelines(array);
|
|
|
|
expect(store.state.pipelines).toEqual(array);
|
|
});
|
|
|
|
describe('when pipeline creation is async', () => {
|
|
describe('when a new pipeline is added to the store', () => {
|
|
it('sets the value of `isRunningMergeRequestPipeline` to false', () => {
|
|
const existingPipelines = [{ created_at: '2023' }];
|
|
store.storePipelines(existingPipelines, true);
|
|
store.state.isRunningMergeRequestPipeline = true;
|
|
|
|
const updatedPipelines = [{ created_at: '2024' }, { created_at: '2023' }];
|
|
store.storePipelines(updatedPipelines, true);
|
|
|
|
expect(store.state.isRunningMergeRequestPipeline).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('when no new pipelines are added to the store', () => {
|
|
it('does not change the value of `isRunningMergeRequestPipeline`', () => {
|
|
const existingPipelines = [{ created_at: '2023' }];
|
|
store.storePipelines(existingPipelines, true);
|
|
store.state.isRunningMergeRequestPipeline = true;
|
|
|
|
const updatedPipelines = [{ created_at: '2023' }];
|
|
store.storePipelines(updatedPipelines, true);
|
|
|
|
expect(store.state.isRunningMergeRequestPipeline).toBe(true);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('storeCount', () => {
|
|
it('should use the default parameter if none is provided', () => {
|
|
store.storeCount();
|
|
|
|
expect(store.state.count).toEqual({});
|
|
});
|
|
|
|
it('should store the provided count', () => {
|
|
const count = { all: 20, finished: 10 };
|
|
store.storeCount(count);
|
|
|
|
expect(store.state.count).toEqual(count);
|
|
});
|
|
});
|
|
|
|
describe('storePagination', () => {
|
|
it('should use the default parameter if none is provided', () => {
|
|
store.storePagination();
|
|
|
|
expect(store.state.pageInfo).toEqual({});
|
|
});
|
|
|
|
it('should store pagination information normalized and parsed', () => {
|
|
const pagination = {
|
|
'X-nExt-pAge': '2',
|
|
'X-page': '1',
|
|
'X-Per-Page': '1',
|
|
'X-Prev-Page': '2',
|
|
'X-TOTAL': '37',
|
|
'X-Total-Pages': '2',
|
|
};
|
|
|
|
const expectedResult = {
|
|
perPage: 1,
|
|
page: 1,
|
|
total: 37,
|
|
totalPages: 2,
|
|
nextPage: 2,
|
|
previousPage: 2,
|
|
};
|
|
|
|
store.storePagination(pagination);
|
|
|
|
expect(store.state.pageInfo).toEqual(expectedResult);
|
|
});
|
|
});
|
|
});
|