import React from 'react';
import { renderWithProvider } from '../../../test/lib/render-helpers';
import configureStore from '../../store/store';
import Notifications, { NotificationItem } from './notifications';
describe('Notifications', () => {
const render = (params) => {
const store = configureStore({
...params,
});
return renderWithProvider(, store);
};
it('can render a list of notifications', () => {
const mockStore = {
metamask: {
notifications: {
test: {
id: 'test',
origin: 'test',
createdDate: 1652967897732,
readDate: null,
message: 'foo',
},
test2: {
id: 'test2',
origin: 'test',
createdDate: 1652967897732,
readDate: null,
message: 'bar',
},
},
snaps: {
test: {
enabled: true,
id: 'test',
manifest: {
proposedName: 'Notification Example Snap',
description: 'A notification example snap.',
},
},
},
},
};
const { getByText } = render(mockStore);
expect(
getByText(mockStore.metamask.notifications.test.message),
).toBeDefined();
expect(
getByText(mockStore.metamask.notifications.test2.message),
).toBeDefined();
});
it('can render an empty list of notifications', () => {
const mockStore = {
metamask: {
notifications: {},
snaps: {},
},
};
const { getByText, getByRole } = render(mockStore);
expect(getByText('Nothing to see here.')).toBeDefined();
expect(getByRole('button', { name: 'Mark all as read' })).toBeDisabled();
});
});
describe('NotificationItem', () => {
const render = (props) => renderWithProvider();
it('can render notification item', () => {
const props = {
notification: {
id: 'test',
origin: 'test',
createdDate: 1652967897732,
readDate: null,
message: 'Hello, http://localhost:8086!',
},
snaps: [
{
id: 'test',
tabMessage: () => 'test snap name',
descriptionMessage: () => 'test description',
sectionMessage: () => 'test section Message',
route: '/test',
icon: 'test',
},
],
onItemClick: jest.fn(),
};
const { getByText } = render(props);
expect(getByText(props.notification.message)).toBeDefined();
});
});