diff --git a/backend/src/__tests__/api/difficulty-adjustment.test.ts b/backend/src/__tests__/api/difficulty-adjustment.test.ts index 4cee25c2f..eb774d445 100644 --- a/backend/src/__tests__/api/difficulty-adjustment.test.ts +++ b/backend/src/__tests__/api/difficulty-adjustment.test.ts @@ -1,60 +1,62 @@ import { calcDifficultyAdjustment, DifficultyAdjustment } from '../../api/difficulty-adjustment'; -test('should calculate Difficulty Adjustments properly', () => { - const dt = (dtString) => { - return Math.floor(new Date(dtString).getTime() / 1000); - }; +describe('Mempool Difficulty Adjustment', () => { + test('should calculate Difficulty Adjustments properly', () => { + const dt = (dtString) => { + return Math.floor(new Date(dtString).getTime() / 1000); + }; - const vectors = [ - [ // Vector 1 - [ // Inputs - dt('2022-08-18T11:07:00.000Z'), // Last DA time (in seconds) - dt('2022-08-19T14:03:53.000Z'), // Current time (now) (in seconds) - 750134, // Current block height - 0.6280047707459726, // Previous retarget % (Passed through) - 'mainnet', // Network (if testnet, next value is non-zero) - 0, // If not testnet, not used + const vectors = [ + [ // Vector 1 + [ // Inputs + dt('2022-08-18T11:07:00.000Z'), // Last DA time (in seconds) + dt('2022-08-19T14:03:53.000Z'), // Current time (now) (in seconds) + 750134, // Current block height + 0.6280047707459726, // Previous retarget % (Passed through) + 'mainnet', // Network (if testnet, next value is non-zero) + 0, // If not testnet, not used + ], + { // Expected Result + progressPercent: 9.027777777777777, + difficultyChange: 12.562233927411782, + estimatedRetargetDate: 1661895424692, + remainingBlocks: 1834, + remainingTime: 977591692, + previousRetarget: 0.6280047707459726, + nextRetargetHeight: 751968, + timeAvg: 533038, + timeOffset: 0, + }, ], - { // Expected Result - progressPercent: 9.027777777777777, - difficultyChange: 12.562233927411782, - estimatedRetargetDate: 1661895424692, - remainingBlocks: 1834, - remainingTime: 977591692, - previousRetarget: 0.6280047707459726, - nextRetargetHeight: 751968, - timeAvg: 533038, - timeOffset: 0, - }, - ], - [ // Vector 2 (testnet) - [ // Inputs - dt('2022-08-18T11:07:00.000Z'), // Last DA time (in seconds) - dt('2022-08-19T14:03:53.000Z'), // Current time (now) (in seconds) - 750134, // Current block height - 0.6280047707459726, // Previous retarget % (Passed through) - 'testnet', // Network - dt('2022-08-19T13:52:46.000Z'), // Latest block timestamp in seconds + [ // Vector 2 (testnet) + [ // Inputs + dt('2022-08-18T11:07:00.000Z'), // Last DA time (in seconds) + dt('2022-08-19T14:03:53.000Z'), // Current time (now) (in seconds) + 750134, // Current block height + 0.6280047707459726, // Previous retarget % (Passed through) + 'testnet', // Network + dt('2022-08-19T13:52:46.000Z'), // Latest block timestamp in seconds + ], + { // Expected Result is same other than timeOffset + progressPercent: 9.027777777777777, + difficultyChange: 12.562233927411782, + estimatedRetargetDate: 1661895424692, + remainingBlocks: 1834, + remainingTime: 977591692, + previousRetarget: 0.6280047707459726, + nextRetargetHeight: 751968, + timeAvg: 533038, + timeOffset: -667000, // 11 min 7 seconds since last block (testnet only) + // If we add time avg to abs(timeOffset) it makes exactly 1200000 ms, or 20 minutes + }, ], - { // Expected Result is same other than timeOffset - progressPercent: 9.027777777777777, - difficultyChange: 12.562233927411782, - estimatedRetargetDate: 1661895424692, - remainingBlocks: 1834, - remainingTime: 977591692, - previousRetarget: 0.6280047707459726, - nextRetargetHeight: 751968, - timeAvg: 533038, - timeOffset: -667000, // 11 min 7 seconds since last block (testnet only) - // If we add time avg to abs(timeOffset) it makes exactly 1200000 ms, or 20 minutes - }, - ], - ] as [[number, number, number, number, string, number], DifficultyAdjustment][]; + ] as [[number, number, number, number, string, number], DifficultyAdjustment][]; - for (const vector of vectors) { - const result = calcDifficultyAdjustment(...vector[0]); - // previousRetarget is passed through untouched - expect(result.previousRetarget).toStrictEqual(vector[0][3]); - expect(result).toStrictEqual(vector[1]); - } + for (const vector of vectors) { + const result = calcDifficultyAdjustment(...vector[0]); + // previousRetarget is passed through untouched + expect(result.previousRetarget).toStrictEqual(vector[0][3]); + expect(result).toStrictEqual(vector[1]); + } + }); }); diff --git a/backend/testSetup.ts b/backend/testSetup.ts index dda44ef6e..ca51bbbe6 100644 --- a/backend/testSetup.ts +++ b/backend/testSetup.ts @@ -1 +1,5 @@ jest.mock('./mempool-config.json', () => ({}), { virtual: true }); +jest.mock('./src/logger.ts', () => ({}), { virtual: true }); +jest.mock('./src/api/rbf-cache.ts', () => ({}), { virtual: true }); +jest.mock('./src/api/mempool.ts', () => ({}), { virtual: true }); +jest.mock('./src/api/memory-cache.ts', () => ({}), { virtual: true });