Skip to content

Commit

Permalink
fix: returning empty object on db utils and added test for services i…
Browse files Browse the repository at this point in the history
…ncluding db
  • Loading branch information
andreabadesso committed Jul 30, 2024
1 parent b67edfc commit 402ee17
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 0 deletions.
64 changes: 64 additions & 0 deletions packages/daemon/__tests__/services/services_with_db.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/**
* Copyright (c) Hathor Labs and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

import * as db from '../../src/db';
import { handleVoidedTx } from '../../src/services';
import { LRU } from '../../src/utils';

/**
* @jest-environment node
*/

describe('handleVoidedTx (db)', () => {
beforeEach(() => {
jest.clearAllMocks();
});

it('should handle transactions with an empty list of inputs', async () => {
const voidTxSpy = jest.spyOn(db, 'voidTransaction');
voidTxSpy.mockResolvedValue();

const context = {
socket: expect.any(Object),
healthcheck: expect.any(Object),
retryAttempt: expect.any(Number),
initialEventId: expect.any(Number),
txCache: expect.any(LRU),
event: {
stream_id: 'stream-id',
peer_id: 'peer_id',
network: 'testnet',
type: 'FULLNODE_EVENT',
latest_event_id: 4,
event: {
id: 5,
data: {
hash: 'random-hash',
outputs: [],
inputs: [],
tokens: [],
},
},
},
};

const mysql = await db.getDbConnection();
const lastEvent = await db.getLastSyncedEvent(mysql);

await expect(handleVoidedTx(context as any)).resolves.not.toThrow();
expect(db.voidTransaction).toHaveBeenCalledWith(
expect.any(Object),
'random-hash',
expect.any(Object),
);
expect(lastEvent).toStrictEqual({
id: expect.any(Number),
last_event_id: 5,
updated_at: expect.any(String),
});
});
});
8 changes: 8 additions & 0 deletions packages/daemon/src/db/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1413,6 +1413,10 @@ export const fetchAddressBalance = async (
mysql: MysqlConnection,
addresses: string[],
): Promise<AddressBalance[]> => {
if (addresses.length === 0) {
return [];
}

const [results] = await mysql.query<AddressBalanceRow[]>(
`SELECT *
FROM \`address_balance\`
Expand Down Expand Up @@ -1443,6 +1447,10 @@ export const fetchAddressTxHistorySum = async (
mysql: MysqlConnection,
addresses: string[],
): Promise<AddressTotalBalance[]> => {
if (addresses.length === 0) {
return [];
}

const [results] = await mysql.query<AddressTxHistorySumRow[]>(
`SELECT address,
token_id,
Expand Down
4 changes: 4 additions & 0 deletions packages/daemon/src/utils/wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ import { stringMapIterator } from './helpers';
* metadata.
*/
export const prepareOutputs = (outputs: EventTxOutput[], tokens: string[]): TxOutputWithIndex[] => {
if (outputs.length === 0) {
return [];
}

const preparedOutputs: [number, TxOutputWithIndex[]] = outputs.reduce(
([currIndex, newOutputs]: [number, TxOutputWithIndex[]], _output: EventTxOutput): [number, TxOutputWithIndex[]] => {
const output = new Output(_output.value, Buffer.from(_output.script, 'base64'), {
Expand Down

0 comments on commit 402ee17

Please sign in to comment.