Files
2025-06-11 19:20:11 -05:00

65 lines
1.8 KiB
JavaScript

import {
describe, expect, test, beforeEach, afterEach,
} from 'vitest';
import axios from 'axios';
import sinon from 'sinon';
import generateStore from '@/store';
const sandbox = sinon.createSandbox();
describe('user actions', () => {
let store;
beforeEach(() => {
store = generateStore();
});
afterEach(() => {
if (axios.get && axios.get.restore) axios.get.restore();
});
describe('fetch', () => {
test('loads the user', async () => {
expect(store.state.user.loadingStatus).to.equal('NOT_LOADED');
const user = { _id: 1 };
sandbox.stub(axios, 'get').withArgs('/api/v4/user').returns(Promise.resolve({ data: { data: user } }));
await store.dispatch('user:fetch');
expect(store.state.user.data).to.equal(user);
expect(store.state.user.loadingStatus).to.equal('LOADED');
});
test('does not reload user by default', async () => {
const originalUser = { _id: 1 };
store.state.user = {
loadingStatus: 'LOADED',
data: originalUser,
};
const user = { _id: 2 };
sandbox.stub(axios, 'get').withArgs('/api/v4/user').returns(Promise.resolve({ data: { data: user } }));
await store.dispatch('user:fetch');
expect(store.state.user.data).to.equal(originalUser);
expect(store.state.user.loadingStatus).to.equal('LOADED');
});
test('can reload user if forceLoad is true', async () => {
store.state.user = {
loadingStatus: 'LOADED',
data: { _id: 1 },
};
const user = { _id: 2 };
sandbox.stub(axios, 'get').withArgs('/api/v4/user').returns(Promise.resolve({ data: { data: user } }));
await store.dispatch('user:fetch', { forceLoad: true });
expect(store.state.user.data).to.equal(user);
expect(store.state.user.loadingStatus).to.equal('LOADED');
});
});
});