pipelines_store_spec.js 1.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
import PipelineStore from '~/vue_pipelines_index/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('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);
    });
  });
});