import { describe, expect, it } from 'bun:test'; import { dateUtils } from '../src/dateUtils'; describe('dateUtils', () => { describe('isTradingDay', () => { it('should return true for weekdays (Monday-Friday)', () => { // Monday (June 2, 2025) expect(dateUtils.isTradingDay(new Date(2025, 5, 2))).toBe(true); // Tuesday (June 3, 2025) expect(dateUtils.isTradingDay(new Date(2025, 5, 3))).toBe(true); // Wednesday (June 4, 2025) expect(dateUtils.isTradingDay(new Date(2025, 5, 4))).toBe(true); // Thursday (June 5, 2025) expect(dateUtils.isTradingDay(new Date(2025, 5, 5))).toBe(true); // Friday (June 6, 2025) expect(dateUtils.isTradingDay(new Date(2025, 5, 6))).toBe(true); }); it('should return false for weekends (Saturday-Sunday)', () => { // Saturday (June 7, 2025) expect(dateUtils.isTradingDay(new Date(2025, 5, 7))).toBe(false); // Sunday (June 8, 2025) expect(dateUtils.isTradingDay(new Date(2025, 5, 8))).toBe(false); }); }); describe('getNextTradingDay', () => { it('should return the next day when current day is a weekday and next day is a weekday', () => { // Monday -> Tuesday const monday = new Date(2025, 5, 2); const tuesday = new Date(2025, 5, 3); expect(dateUtils.getNextTradingDay(monday).toDateString()).toBe(tuesday.toDateString()); }); it('should skip weekends when getting next trading day', () => { // Friday -> Monday const friday = new Date(2025, 5, 6); const monday = new Date(2025, 5, 9); expect(dateUtils.getNextTradingDay(friday).toDateString()).toBe(monday.toDateString()); }); it('should handle weekends as input correctly', () => { // Saturday -> Monday const saturday = new Date(2025, 5, 7); const monday = new Date(2025, 5, 9); expect(dateUtils.getNextTradingDay(saturday).toDateString()).toBe(monday.toDateString()); // Sunday -> Monday const sunday = new Date(2025, 5, 8); expect(dateUtils.getNextTradingDay(sunday).toDateString()).toBe(monday.toDateString()); }); }); describe('getPreviousTradingDay', () => { it('should return the previous day when current day is a weekday and previous day is a weekday', () => { // Tuesday -> Monday const tuesday = new Date(2025, 5, 3); const monday = new Date(2025, 5, 2); expect(dateUtils.getPreviousTradingDay(tuesday).toDateString()).toBe(monday.toDateString()); }); it('should skip weekends when getting previous trading day', () => { // Monday -> Friday const monday = new Date(2025, 5, 9); const friday = new Date(2025, 5, 6); expect(dateUtils.getPreviousTradingDay(monday).toDateString()).toBe(friday.toDateString()); }); it('should handle weekends as input correctly', () => { // Saturday -> Friday const saturday = new Date(2025, 5, 7); const friday = new Date(2025, 5, 6); expect(dateUtils.getPreviousTradingDay(saturday).toDateString()).toBe(friday.toDateString()); // Sunday -> Friday const sunday = new Date(2025, 5, 8); expect(dateUtils.getPreviousTradingDay(sunday).toDateString()).toBe(friday.toDateString()); }); }); });