import React from 'react';
import { render, cleanup, fireEvent } from '@testing-library/react';
import mockDate from 'mockdate';
import { NewsletterPuffButton } from '../NewsletterPuffButton';
import { TrackingContextProvider } from '../../../../helpers/tracking/TrackingContextProvider';
describe('NewsletterPuffButton', () => {
beforeEach(() => {
mockDate.set(1620000000000);
});
afterEach(() => {
mockDate.reset();
jest.clearAllMocks();
cleanup();
});
it('renders the button with the text `Sign up to newsletter`', () => {
const mockedOnPress = jest.fn();
const component = render(
);
expect(component.getByText('Sign up with one click'));
});
it('should track button viewed and clicked in analytics', () => {
const mockedAnalyticsStream = jest.fn();
const onPress = jest.fn();
const component = render(
);
const oneClickSignUp = component.getByText('Sign up with one click');
fireEvent.click(oneClickSignUp);
expect(onPress).toHaveBeenCalledTimes(1);
expect(mockedAnalyticsStream).toHaveBeenCalledWith({
action: 'Clicked',
component: 'ArticleSkeleton',
object: 'NewsletterPuffButton',
attrs: {
eventTime: '2021-05-03T00:00:00.000Z',
event_navigation_action: 'navigation',
event_navigation_browsing_method: 'click',
event_navigation_name: 'widget : puff : sign up now'
}
});
});
});