@cainiaofe/cn-ui-m
Version:
46 lines (45 loc) • 2.2 kB
JavaScript
import React from 'react';
import { render, screen, fireEvent } from '@testing-library/react';
import { CnScrollView } from '../index';
describe('CnScrollView', function () {
it('should render children correctly', function () {
render(React.createElement(CnScrollView, null,
React.createElement("div", null, "Child 1"),
React.createElement("div", null, "Child 2")));
expect(screen.getByText('Child 1')).toBeInTheDocument();
expect(screen.getByText('Child 2')).toBeInTheDocument();
});
// it('should call loadMore when intersection occurs', async () => {
// const loadMoreMock = jest.fn();
// render(
// <CnScrollView hasMore loadMore={loadMoreMock}>
// <div>Child 1</div>
// <div>Child 2</div>
// </CnScrollView>,
// );
// // Simulate intersection event
// await fireEvent.scroll(window, { target: { scrollY: 10000 } });
// expect(loadMoreMock).toHaveBeenCalledTimes(1);
// });
it('should not call loadMore when hasMore is false', function () {
var loadMoreMock = jest.fn();
render(React.createElement(CnScrollView, { hasMore: false, loadMore: loadMoreMock },
React.createElement("div", null, "Child 1"),
React.createElement("div", null, "Child 2")));
// Simulate intersection event
fireEvent.scroll(window, { target: { scrollY: 100 } });
expect(loadMoreMock).not.toHaveBeenCalled();
});
it('should render More component when hasMore is true', function () {
render(React.createElement(CnScrollView, { hasMore: true },
React.createElement("div", null, "Child 1"),
React.createElement("div", null, "Child 2")));
expect(screen.getByTestId('cn-scroll-view-more')).toBeInTheDocument();
});
it('should not render More component when hasMore is false', function () {
render(React.createElement(CnScrollView, { hasMore: false },
React.createElement("div", null, "Child 1"),
React.createElement("div", null, "Child 2")));
expect(screen.queryByTestId('cn-scroll-view-more')).not.toBeInTheDocument();
});
});