Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
errorReporting.test.ts 1.67 KiB
/* eslint-disable no-magic-numbers */
import { createErrorData } from '@/utils/error-report/errorReporting';
import { apiPath } from '@/redux/apiPath';
import { HttpStatusCode } from 'axios';
import { loginFixture } from '@/models/fixtures/loginFixture';
import { userPrivilegesFixture } from '@/models/fixtures/userPrivilegesFixture';
import { login } from '@/redux/user/user.thunks';
import { mockNetworkResponse } from '@/utils/mockNetworkResponse';
import { store } from '@/redux/store';

const mockedAxiosClient = mockNetworkResponse();

const CREDENTIALS = {
  login: 'test',
  password: 'password',
};

describe('createErrorData', () => {
  it('should add stacktrace', () => {
    const error = createErrorData(new Error('hello'));
    expect(error.stacktrace).not.toEqual('');
  });

  it('should add url', () => {
    const error = createErrorData(new Error('hello'));
    expect(error.url).not.toBeNull();
  });

  it('should add browser', () => {
    const error = createErrorData(new Error('hello'));
    expect(error.browser).not.toBeNull();
  });

  it('should add guest login when not logged', () => {
    const error = createErrorData(new Error('hello'));
    expect(error.login).toBe('anonymous');
  });

  it('should add login when logged', async () => {
    mockedAxiosClient.onPost(apiPath.postLogin()).reply(HttpStatusCode.Ok, loginFixture);
    mockedAxiosClient
      .onGet(apiPath.userPrivileges(loginFixture.login))
      .reply(HttpStatusCode.Ok, userPrivilegesFixture);
    await store.dispatch(login(CREDENTIALS));

    const error = createErrorData(new Error('hello'));
    expect(error.login).not.toBe('anonymous');
    expect(error.login).toBe(loginFixture.login);
  });
});