@kiwicom/smart-faq
Version:
67 lines (61 loc) • 1.79 kB
JavaScript
// @flow
import * as React from 'react';
import { BrowserRouter } from 'react-router-dom';
import { mount } from 'enzyme';
import TrackedFAQArticle from '../TrackedFAQArticle';
import { SearchState } from '../../../SmartFAQ/context/SearchState';
import { track } from '../../cuckoo/tracker';
jest.mock('../../cuckoo/tracker', () => ({
track: jest.fn(),
}));
const mockRefType: any = null;
let queriesBeforeClick = 5; //eslint-disable-line
const article = {
id: 'asdsadsa342dfse',
originalId: '23',
perex: 'aa',
title: 'llk',
$refType: mockRefType,
};
const searchState = {
searchText: 'Hola hola',
isVisible: false,
resetQueriesCount: jest.fn(() => {
queriesBeforeClick = 0;
}),
queriesBeforeClick,
changeSearchText: jest.fn(),
incrementQueriesCount: jest.fn(),
toggleSearch: jest.fn(),
enableSearch: jest.fn(),
disableSearch: jest.fn(),
};
describe('TrackedFAQArticle', () => {
it('click should track queriesBeforeClick and reset queriesCounter', () => {
const result = mount(
<BrowserRouter>
<SearchState.Provider value={searchState}>
<TrackedFAQArticle
isSearchResult
article={article}
categoryId="444"
/>
</SearchState.Provider>
</BrowserRouter>,
);
result
.find('a[data-cy="faq-article-link"]')
.first()
.simulate('click');
// $FlowExpectedError: Expected
expect(track.mock.calls).toHaveLength(1);
// $FlowExpectedError: Expected
expect(track.mock.calls[0]).toEqual([
'FAQs',
'articleClicked',
{ articleId: '23', queriesBeforeClick: 5, searchText: 'Hola hola' },
]);
expect(queriesBeforeClick).toEqual(0);
expect(searchState.resetQueriesCount.mock.calls).toHaveLength(1);
});
});