UNPKG

react-native-lunar-calendars

Version:

React Native Calendar Components with Lunar Calendar Support - Fork of react-native-calendars with Vietnamese lunar calendar functionality

118 lines (117 loc) 4.55 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = __importDefault(require("react")); var enzyme_1 = require("enzyme"); var index_1 = __importDefault(require("../index")); var calendar_list_1 = __importDefault(require("../../calendar-list")); var xdate_1 = __importDefault(require("xdate")); describe('Agenda Component', function () { var wrapper; var onDayPress = jest.fn(); var onDayChange = jest.fn(); var loadItemsForMonth = jest.fn(); var renderItem = jest.fn(); var renderEmptyDate = jest.fn(); var items = { '2024-03-19': [{ text: 'First Event' }], '2024-03-20': [{ text: 'Second Event' }], '2024-03-21': [] }; var defaultProps = { items: items, selected: '2024-03-19', onDayPress: onDayPress, onDayChange: onDayChange, loadItemsForMonth: loadItemsForMonth, renderItem: renderItem, renderEmptyDate: renderEmptyDate }; beforeEach(function () { wrapper = (0, enzyme_1.shallow)(<index_1.default {...defaultProps}/>); }); afterEach(function () { jest.clearAllMocks(); }); it('should render correctly', function () { expect(wrapper).toBeDefined(); }); it('should render CalendarList', function () { expect(wrapper.find(calendar_list_1.default)).toHaveLength(1); }); it('should render FlatList for items', function () { expect(wrapper.find('FlatList')).toHaveLength(1); }); it('should initialize with correct selected date', function () { expect(wrapper.instance().state.selectedDay).toBeDefined(); expect(new xdate_1.default(wrapper.instance().state.selectedDay).toString('yyyy-MM-dd')).toBe('2024-03-19'); }); it('should call loadItemsForMonth when month changes', function () { var date = new xdate_1.default(2024, 2, 1); wrapper.instance().loadItems(date); expect(loadItemsForMonth).toHaveBeenCalledWith(date); }); it('should call onDayPress when a day is pressed', function () { var day = { year: 2024, month: 3, day: 19, timestamp: new Date(2024, 2, 19).getTime(), dateString: '2024-03-19' }; wrapper.instance().chooseDay(day); expect(onDayPress).toHaveBeenCalledWith(day); }); it('should call onDayChange when selected day changes', function () { var day = { year: 2024, month: 3, day: 20, timestamp: new Date(2024, 2, 20).getTime(), dateString: '2024-03-20' }; wrapper.instance().chooseDay(day); expect(onDayChange).toHaveBeenCalledWith(day.dateString); }); it('should handle theme changes', function () { var theme = { agendaDayTextColor: 'red', agendaDayNumColor: 'green', agendaTodayColor: 'blue', agendaKnobColor: 'yellow' }; wrapper.setProps({ theme: theme }); expect(wrapper.find(calendar_list_1.default).prop('theme')).toMatchObject(theme); }); it('should handle calendar toggling', function () { var onCalendarToggled = jest.fn(); wrapper.setProps({ onCalendarToggled: onCalendarToggled }); wrapper.instance().toggleCalendar(); expect(onCalendarToggled).toHaveBeenCalled(); }); it('should handle knob toggling', function () { wrapper.instance().toggleCalendarPosition(); expect(wrapper.state('calendarScrollable')).toBe(true); }); it('should handle item rendering', function () { var item = { text: 'Test Event' }; wrapper.instance().renderItem({ item: item }); expect(renderItem).toHaveBeenCalledWith(item); }); it('should handle empty date rendering', function () { wrapper.instance().renderEmptyDate(); expect(renderEmptyDate).toHaveBeenCalled(); }); it('should handle row comparison', function () { var r1 = { text: 'Event 1' }; var r2 = { text: 'Event 2' }; var rowHasChanged = wrapper.instance().rowHasChanged(r1, r2); expect(rowHasChanged).toBe(true); }); it('should handle calendar scrolling', function () { wrapper.setProps({ calendarScrollable: true }); expect(wrapper.state('calendarScrollable')).toBe(true); }); });