All files / nanakshahi-js/lib findMovableGurpurab.js

77.77% Statements 7/9
57.14% Branches 4/7
100% Functions 1/1
77.77% Lines 7/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 433x                                   54x       54x         54x 54x   54x                     3x  
const { movableGurpurabs } = require( './consts' )
 
/**
 * Returns Gregorian Date of Movable Gurpurab from 2003CE - 2100CE
 * @param {string} gurpurab
 * Movable Gurpurabs:<br>
 * `gurunanak` - Parkash Guru Nanak Dev Ji<br>
 * `bandichhorr` - Bandi Chhorr Divas / Diwali<br>
 * `holla` - Holla Mahalla<br>
 * `kabeer` - Birthday Bhagat Kabeer Ji<br>
 * `ravidaas` - Birthday Bhagat Ravidaas Ji<br>
 * `naamdev` - Birthday Bhagat Naamdev Ji
 * @param {!number} [year] Gregorian year, default is current year. Range [2003...2100]
 * @return {Object} Gurpurab Date with Name in English and Punjabi
 * @example findMovableGurpurab( 'gurunanak' )
 */
function findMovableGurpurab( gurpurab, year = new Date().getFullYear() ) {
  // Check if gurpurab in array
  Iif ( !( gurpurab in movableGurpurabs ) ) {
    throw Error( `String "${gurpurab}" not found in list of movable Gurpurabs.` )
  }
 
  Iif ( year < 2003 || year > 2100 ) {
    throw new RangeError( 'Year not in range [2003...2100].' )
  }
 
  // Get data for event
  const { name, dates } = movableGurpurabs[ gurpurab ]
  const { month, day } = dates[ year - 2003 ]
 
  return {
    gregorianDate: new Date( year, month - 1, day ),
    name: {
      en: `${name.en} (${year})`,
      pa: `${name.pa} (${year})`,
      type: name.type,
      movable: true,
    },
  }
}
 
module.exports = findMovableGurpurab