Skip to content

Commit

Permalink
fix: 🐛 fix time object being mutated
Browse files Browse the repository at this point in the history
  • Loading branch information
thkruz committed Jan 13, 2024
1 parent 4248aba commit dd51ed2
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 20 deletions.
23 changes: 11 additions & 12 deletions src/body/Moon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -310,33 +310,32 @@ export class Moon {
* calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article
*/
static getMoonTimes(date: Date, lat: Degrees, lon: Degrees, isUtc = false) {
// Clone the date so we don't change the original
const date_ = new Date(date);

if (isUtc) {
date.setUTCHours(0, 0, 0, 0);
date_.setUTCHours(0, 0, 0, 0);
} else {
date.setHours(0, 0, 0, 0);
date_.setHours(0, 0, 0, 0);
}

const { rise, set, ye } = Moon.calculateRiseSetTimes_(date, lat, lon);
const { rise, set, ye } = Moon.calculateRiseSetTimes_(date_, lat, lon);

const result = {
rise: NaN as Date | number,
set: NaN as Date | number,
rise: null as Date | null,
set: null as Date | null,
ye: null as number | null,
alwaysUp: null as boolean | null,
alwaysDown: null as boolean | null,
highest: null as Date | null,
};

if (rise) {
result.rise = new Date(Moon.hoursLater_(date, rise));
} else {
result.rise = NaN;
result.rise = new Date(Moon.hoursLater_(date_, rise));
}

if (set) {
result.set = new Date(Moon.hoursLater_(date, set));
} else {
result.set = NaN;
result.set = new Date(Moon.hoursLater_(date_, set));
}

if (!rise && !set) {
Expand All @@ -350,7 +349,7 @@ export class Moon {
} else if (rise && set) {
result.alwaysUp = false;
result.alwaysDown = false;
result.highest = new Date(Moon.hoursLater_(date, Math.min(rise, set) + Math.abs(set - rise) / 2));
result.highest = new Date(Moon.hoursLater_(date_, Math.min(rise, set) + Math.abs(set - rise) / 2));
} else {
result.alwaysUp = false;
result.alwaysDown = false;
Expand Down
6 changes: 3 additions & 3 deletions test/sun-moon/__snapshots__/sun-moon.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ Object {

exports[`Sun and Moon getMoonIllumination returns fraction and angle of moons illuminated limb and phase 1`] = `
Object {
"angle": 1.870981046981252,
"fraction": 0.09702945670419616,
"angle": 2.0187380462851525,
"fraction": 0.04918501150967336,
"next": Object {
"date": "2022-08-27T06:46:57.840Z",
"firstQuarter": Object {
Expand Down Expand Up @@ -74,6 +74,6 @@ Object {
"to": 0.966136806691289,
"weight": 6.3825,
},
"phaseValue": 0.8991701089962825,
"phaseValue": 0.9288143180691704,
}
`;
10 changes: 8 additions & 2 deletions test/sun-moon/sun-moon.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,15 @@ describe('Sun and Moon', () => {
test('Moon Unit Tests', () => {
expect(Moon.getMoonIllumination(dateObj)).toMatchSnapshot();

// eslint-disable-next-line no-console
console.log('dateObj', dateObj);

Moon.rae(dateObj, 0 as Degrees, 0 as Degrees);
Moon.getMoonTimes(dateObj, 0 as Degrees, 0 as Degrees, true);
Moon.getMoonTimes(dateObj, -10 as Degrees, -10 as Degrees, false);

// eslint-disable-next-line no-console
console.log('dateObj', dateObj);
});

test('getMoonIllumination returns fraction and angle of moons illuminated limb and phase', () => {
Expand Down Expand Up @@ -170,8 +176,8 @@ describe('Suncalc.js tests', () => {
test('getMoonTimes returns moon rise and set times', () => {
const moonTimes = Moon.getMoonTimes(new Date('2013-03-04UTC'), lat as Degrees, lon as Degrees, true);

expect(moonTimes.rise.toUTCString()).toEqual('Mon, 04 Mar 2013 23:54:29 GMT');
expect(moonTimes.set.toUTCString()).toEqual('Mon, 04 Mar 2013 07:47:58 GMT');
expect(moonTimes.rise?.toUTCString()).toEqual('Mon, 04 Mar 2013 23:54:29 GMT');
expect(moonTimes.set?.toUTCString()).toEqual('Mon, 04 Mar 2013 07:47:58 GMT');
});
});

Expand Down
3 changes: 0 additions & 3 deletions test/transforms/transforms.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,6 @@ describe('Rae2Ecf', () => {
};
const rae = ecf2rae(lla, ecf);

// eslint-disable-next-line no-console
console.warn(rae);

const ecfCoordinates = rae2ecf(rae, lla);

expect(ecfCoordinates.x).toBeCloseTo(ecf.x);
Expand Down

0 comments on commit dd51ed2

Please sign in to comment.