praytime
Version:
A JavaScript library for calculating prayer times.
75 lines (55 loc) • 2.05 kB
JavaScript
// PrayTime Test
// By Hamid Zarrabi-Zadeh
;
const { PrayTime } = require('../src/praytime');
// ----------------------- Initialize Test Data ---------------------
// Test Location: Waterloo, ON, Canada
const latitude = 43.4643;
const longitude = -80.5204;
// Test Date: Fab 21, 2025
const date = [2025, 2, 21];
const timezone = 'America/Toronto';
// ----------------------- Run Test and Validate --------------------
const praytime = new PrayTime();
praytime.method('ISNA')
.location([latitude, longitude])
.timezone(timezone);
test('Test prayer times', () => {
const times = praytime.getTimes(date);
expect(times.fajr).toBe('05:52');
expect(times.dhuhr).toBe('12:36');
expect(times.asr).toBe('15:32');
expect(times.maghrib).toBe('18:02');
});
test('Test time formats', () => {
expect(praytime.format('x').getTimes(date).asr).toBe(1740169920000);
expect(praytime.format('X').getTimes(date).asr).toBe(1740169920);
expect(praytime.format('12h').getTimes(date).asr).toBe('3:32 PM');
expect(praytime.format('12H').getTimes(date).asr).toBe('3:32');
expect(praytime.format('24h').getTimes(date).asr).toBe('15:32');
});
test('Test timezones', () => {
expect(praytime.utcOffset(-4.5).getTimes(date).fajr).toBe('06:22');
expect(praytime.utcOffset(-300).getTimes(date).fajr).toBe('05:52');
});
test('Test rounding method', () => {
expect(praytime.round('down').getTimes(date).asr).toBe('15:32');
expect(praytime.round('up').getTimes(date).asr).toBe('15:33');
expect(praytime.round('nearest').getTimes(date).asr).toBe('15:32');
});
test('Test adjust method', () => {
const times = praytime.adjust({
fajr: 19.7,
dhuhr: "11 min",
}).getTimes(date);
expect(times.fajr).toBe('05:26');
expect(times.dhuhr).toBe('12:47');
});
test('Test tuning method', () => {
const times = praytime.tune({
asr: 11,
maghrib: 4.5,
}).getTimes(date);
expect(times.asr).toBe('15:43');
expect(times.maghrib).toBe('18:07');
});