import React from 'react';
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import { renderWithProvider } from '../../../../test/lib/render-helpers';
import TransactionStatusLabel from '.';
describe('TransactionStatusLabel Component', () => {
const createMockStore = configureMockStore([thunk]);
const mockState = {
metamask: {
custodyStatusMaps: {},
identities: {},
selectedAddress: 'fakeAddress',
},
};
let store = createMockStore(mockState);
it('should render CONFIRMED properly', () => {
const confirmedProps = {
status: 'confirmed',
date: 'June 1',
};
const { container } = renderWithProvider(
,
store,
);
expect(container).toMatchSnapshot();
});
it('should render PENDING properly when status is APPROVED', () => {
const props = {
status: 'approved',
isEarliestNonce: true,
error: { message: 'test-title' },
};
const { container } = renderWithProvider(
,
store,
);
expect(container).toMatchSnapshot();
});
it('should render PENDING properly', () => {
const props = {
date: 'June 1',
status: 'submitted',
isEarliestNonce: true,
};
const { container } = renderWithProvider(
,
store,
);
expect(container).toMatchSnapshot();
});
it('should render QUEUED properly', () => {
const props = {
status: 'queued',
};
const { container } = renderWithProvider(
,
store,
);
expect(container).toMatchSnapshot();
});
it('should render UNAPPROVED properly', () => {
const props = {
status: 'unapproved',
};
const { container } = renderWithProvider(
,
store,
);
expect(container).toMatchSnapshot();
});
it('should render statusText properly when is custodyStatusDisplayText is defined', () => {
const props = {
custodyStatusDisplayText: 'test',
};
const { getByText } = renderWithProvider(
,
store,
);
expect(getByText(props.custodyStatusDisplayText)).toBeVisible();
});
it('should display the correct status text and tooltip', () => {
const mockShortText = 'Short Text Test';
const mockLongText = 'Long Text Test';
const props = {
status: 'approved',
custodyStatus: 'approved',
};
const customMockStore = {
metamask: {
custodyStatusMaps: {
jupiter: {
approved: {
shortText: mockShortText,
longText: mockLongText,
},
},
},
selectedAddress: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc',
identities: {
'0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc': {
address: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc',
name: 'Account 1',
},
},
keyrings: [
{
type: 'Custody - Jupiter',
accounts: ['0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc'],
},
],
},
};
store = createMockStore(customMockStore);
const { getByText } = renderWithProvider(
,
store,
);
expect(getByText(mockShortText)).toBeVisible();
});
it('should display the error message when there is an error', () => {
const mockShortText = 'Short Text Test';
const mockLongText = 'Long Text Test';
const props = {
status: 'approved',
custodyStatus: 'approved',
error: { message: 'An error occurred' },
};
const customMockStore = {
metamask: {
custodyStatusMaps: {
jupiter: {
approved: {
shortText: mockShortText,
longText: mockLongText,
},
},
},
selectedAddress: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc',
identities: {
'0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc': {
address: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc',
name: 'Account 1',
},
},
keyrings: [
{
type: 'Custody - Jupiter',
accounts: ['0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc'],
},
],
},
};
store = createMockStore(customMockStore);
const { getByText } = renderWithProvider(
,
store,
);
expect(getByText('Error')).toBeVisible();
});
it('should display correctly the error message when there is an error and custodyStatus is aborted', () => {
const mockShortText = 'Short Text Test';
const mockLongText = 'Long Text Test';
const props = {
status: 'approved',
custodyStatus: 'aborted',
error: { message: 'An error occurred' },
custodyStatusDisplayText: 'Test',
};
const customMockStore = {
metamask: {
custodyStatusMaps: {
jupiter: {
approved: {
shortText: mockShortText,
longText: mockLongText,
},
},
},
selectedAddress: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc',
identities: {
'0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc': {
address: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc',
name: 'Account 1',
},
},
keyrings: [
{
type: 'Custody - Jupiter',
accounts: ['0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc'],
},
],
},
};
store = createMockStore(customMockStore);
const { getByText } = renderWithProvider(
,
store,
);
expect(getByText(props.custodyStatusDisplayText)).toBeVisible();
});
});