voicebot-react-native-expo
Version:
This is a voicebot-react-native package of Kipps AI voice bot for React Native Expo
78 lines (63 loc) • 2.66 kB
text/typescript
import { describe, test, expect } from 'vitest';
import { renderHook } from '@testing-library/react';
import usePagination from './usePagination';
import type { TrackReferenceOrPlaceholder } from '@livekit/components-core';
describe('Test hook', () => {
test('Test basic assumptions of the usePagination hook return values.', () => {
const itemPerPage = 4;
const totalTrackRefs = new Array(12) as TrackReferenceOrPlaceholder[];
const { result } = renderHook(() => usePagination(itemPerPage, totalTrackRefs));
expect(result.current.currentPage).toBe(1);
expect(result.current.totalPageCount).toBe(3);
expect(result.current.firstItemIndex).toBe(0);
expect(result.current.lastItemIndex).toBe(4);
expect(result.current.prevPage).toBeTypeOf('function');
expect(result.current.nextPage).toBeTypeOf('function');
});
test('Test moving to pages works as expected.', () => {
const itemPerPage = 4;
const totalTrackRefs = new Array(12) as TrackReferenceOrPlaceholder[];
const { result, rerender } = renderHook(() => usePagination(itemPerPage, totalTrackRefs));
expect(result.current.currentPage).toBe(1);
result.current.nextPage();
rerender();
expect(result.current.currentPage).toBe(2);
result.current.nextPage();
rerender();
expect(result.current.currentPage).toBe(3);
// Check top limit is working.
result.current.nextPage();
rerender();
expect(result.current.currentPage).toBe(3);
result.current.prevPage();
rerender();
expect(result.current.currentPage).toBe(2);
result.current.prevPage();
rerender();
expect(result.current.currentPage).toBe(1);
// Test bottom limit is working.
result.current.prevPage();
rerender();
expect(result.current.currentPage).toBe(1);
});
test('Test jumping to pages works as expected.', () => {
const itemPerPage = 4;
const totalTrackRefs = new Array(12) as TrackReferenceOrPlaceholder[];
const { result, rerender } = renderHook(() => usePagination(itemPerPage, totalTrackRefs));
expect(result.current.currentPage).toBe(1);
result.current.setPage(3);
rerender();
expect(result.current.currentPage).toBe(3);
result.current.setPage(2);
rerender();
expect(result.current.currentPage).toBe(2);
// Jumping to a index that is lower than 1 jumps to page 1.
result.current.setPage(0);
rerender();
expect(result.current.currentPage).toBe(1);
// Jumping to a index that is higher than the last page jumps to last page.
result.current.setPage(999999);
rerender();
expect(result.current.currentPage).toBe(3);
});
});