75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
|
// Copyright (C) 2021 Storj Labs, Inc.
|
||
|
// See LICENSE for copying information.
|
||
|
|
||
|
import Vuex from 'vuex';
|
||
|
|
||
|
import { RootState } from '@/app/store';
|
||
|
import { BandwidthRollup, BandwidthTraffic, Egress, Ingress } from '@/bandwidth';
|
||
|
import { createLocalVue } from '@vue/test-utils';
|
||
|
|
||
|
import store, { bandwidthService } from '../mock/store';
|
||
|
|
||
|
const state = store.state as RootState;
|
||
|
|
||
|
const mockedDate1 = new Date(Date.UTC(2020, 1, 30));
|
||
|
const mockedDate2 = new Date(1573562290000); // Tue Nov 12 2019
|
||
|
const traffic = new BandwidthTraffic(
|
||
|
[
|
||
|
new BandwidthRollup(
|
||
|
new Egress(1220000, 600000, 1245500000),
|
||
|
new Ingress(4000000, 1111),
|
||
|
80080080,
|
||
|
mockedDate1,
|
||
|
),
|
||
|
new BandwidthRollup(
|
||
|
new Egress(122000000, 23500000, 15500000),
|
||
|
new Ingress(40000, 11110000),
|
||
|
80080080,
|
||
|
mockedDate2,
|
||
|
),
|
||
|
],
|
||
|
700000000,
|
||
|
577700000000,
|
||
|
5000000,
|
||
|
);
|
||
|
|
||
|
describe('mutations', () => {
|
||
|
beforeEach(() => {
|
||
|
createLocalVue().use(Vuex);
|
||
|
});
|
||
|
|
||
|
it('populates traffic', () => {
|
||
|
store.commit('bandwidth/populate', traffic);
|
||
|
|
||
|
expect(state.bandwidth.traffic.bandwidthSummary).toBe(traffic.bandwidthSummary);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('actions', () => {
|
||
|
beforeEach(() => {
|
||
|
jest.resetAllMocks();
|
||
|
store.commit('bandwidth/populate', new BandwidthTraffic());
|
||
|
});
|
||
|
|
||
|
it('throws error on failed bandwidth fetch', async () => {
|
||
|
jest.spyOn(bandwidthService, 'fetch').mockImplementation(() => { throw new Error(); });
|
||
|
|
||
|
try {
|
||
|
await store.dispatch('bandwidth/fetch');
|
||
|
expect(true).toBe(false);
|
||
|
} catch (error) {
|
||
|
expect(state.bandwidth.traffic.bandwidthSummary).toBe(0);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
it('success fetches payouts summary', async () => {
|
||
|
jest.spyOn(bandwidthService, 'fetch').mockReturnValue(
|
||
|
Promise.resolve(traffic),
|
||
|
);
|
||
|
|
||
|
await store.dispatch('bandwidth/fetch');
|
||
|
|
||
|
expect(state.bandwidth.traffic.bandwidthDaily.length).toBe(traffic.bandwidthDaily.length);
|
||
|
});
|
||
|
});
|