Skip to content

Commit

Permalink
Merge pull request #883 from MoralisWeb3/fix/get-nft-trades
Browse files Browse the repository at this point in the history
Fixed getNFTTrades() method
  • Loading branch information
ErnoW authored Dec 8, 2022
2 parents 48781f4 + 31ef229 commit cfebb16
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 24 deletions.
6 changes: 6 additions & 0 deletions .changeset/shaggy-hats-punch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@moralisweb3/common-evm-utils': patch
'@moralisweb3/evm-api': patch
---

Fixed the `getNFTTrades()` method.
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ function deserializeResponse(jsonResponse: GetNFTTradesJSONResponse, request: Ge
buyerAddress: EvmAddress.create(trade.buyer_address, core),
marketplaceAddress: EvmAddress.create(trade.marketplace_address, core),
tokenAddress: EvmAddress.create(trade.token_address as string, core),
price: EvmNative.create(trade.price),
price: EvmNative.create(trade.price, 'wei'),
blockTimestamp: new Date(trade.block_timestamp),
tokenIds: trade.token_ids as string[],
}),
Expand Down
31 changes: 18 additions & 13 deletions packages/evmApi/integration/mocks/endpoints/getNFTTrades.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,34 @@ export const mockGetNFTTrades = MockScenarios.create(
url: `/nft/:address/trades`,
getParams: (req) => ({
address: req.params.address,
limit: req.url.searchParams.get('limit'),
}),
},
[
{
condition: {
address: '0x75e3e9c92162e62000425c98769965a76c2e387a',
address: '0x9c57d0278199c931cf149cc769f37bb7847091e7',
limit: '1',
},
response: {
total: 2000,
page: 2,
page_size: 100,
page: 0,
page_size: 1,
cursor: '0x12345',
result: [
{
transaction_hash: '0x057Ec652A4F150f7FF94f089A38008f49a0DF88e',
transaction_index: 'string',
token_ids: ['15', '54'],
seller_address: '0x057Ec652A4F150f7FF94f089A38008f49a0DF88e',
buyer_address: '0x057Ec652A4F150f7FF94f089A38008f49a0DF88e',
marketplace_address: '0x057Ec652A4F150f7FF94f089A38008f49a0DF88e',
price: '1000000000000000',
block_timestamp: '2021-06-04T16:00:15',
block_number: '13680123',
block_hash: '0x4a7c916ca4a970358b9df90051008f729685ff05e9724a9dddba32630c37cb96',
transaction_hash: '0xb30df59495a8a432b8e3d38f406aaeaad363592dbd02cf2ef4ada7643fc3861c',
transaction_index: '254',
token_ids: ['7781'],
seller_address: '0xc970bd05d27466f10e0d1c8653d6bca217ef04f2',
buyer_address: '0x9f7509cdc8b846c65482f5d2829ab47360095d82',
token_address: '0x9c57d0278199c931cf149cc769f37bb7847091e7',
marketplace_address: '0x00000000006c3852cbef3e08e8df289169ede581',
price: '69990000000000000',
price_token_address: null,
block_timestamp: '2022-12-06T00:32:11.000Z',
block_number: '16122185',
block_hash: '0xd01990eb290c77fe3e7db77a83c0ff465cc3dd5f74b9eb53d9b2c2ea178c7009',
},
],
},
Expand Down
30 changes: 20 additions & 10 deletions packages/evmApi/integration/test/getNFTTrades.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,28 @@ describe('getNFTTrades', () => {
describe('Get NFT Trades', () => {
it('should get trades of NFTs for a given contract and marketplace', async () => {
const result = await EvmApi.nft.getNFTTrades({
address: '0x75e3e9c92162e62000425c98769965a76c2e387a',
address: '0x9c57d0278199c931cf149cc769f37bb7847091e7',
limit: 1,
});

const response = result.raw.result?.at(0);

expect(result).toBeDefined();
expect(result).toEqual(expect.objectContaining({}));
expect(result.raw.total).toBe(2000);
expect(response?.transaction_hash).toBe('0x057Ec652A4F150f7FF94f089A38008f49a0DF88e');
expect(response?.block_number).toBe('13680123');
expect(response?.block_hash).toBe('0x4a7c916ca4a970358b9df90051008f729685ff05e9724a9dddba32630c37cb96');
expect(response?.transaction_hash).toBe('0x057Ec652A4F150f7FF94f089A38008f49a0DF88e');
expect(result.result.length).toBe(1);
expect(result.pagination.page).toBe(0);
expect(result.pagination.pageSize).toBe(1);
expect(result.pagination.total).toBe(2000);
expect(result.hasNext()).toBe(true);

const trade = result.result[0];
expect(trade.transactionHash).toBe('0xb30df59495a8a432b8e3d38f406aaeaad363592dbd02cf2ef4ada7643fc3861c');
expect(trade.transactionIndex).toBe(254);
expect(trade.tokenIds).toContain('7781');
expect(trade.sellerAddress.lowercase).toBe('0xc970bd05d27466f10e0d1c8653d6bca217ef04f2');
expect(trade.buyerAddress.lowercase).toBe('0x9f7509cdc8b846c65482f5d2829ab47360095d82');
expect(trade.tokenAddress.lowercase).toBe('0x9c57d0278199c931cf149cc769f37bb7847091e7');
expect(trade.marketplaceAddress.lowercase).toBe('0x00000000006c3852cbef3e08e8df289169ede581');
expect(trade.price.wei).toBe('69990000000000000');
expect(trade.blockTimestamp.getTime()).toBe(1670286731000);
expect(trade.blockNumber.toString()).toBe('16122185');
expect(trade.blockHash).toBe('0xd01990eb290c77fe3e7db77a83c0ff465cc3dd5f74b9eb53d9b2c2ea178c7009');
});

it('should not get the trades of NFTs for an invalid address and throw an error', async () => {
Expand Down

1 comment on commit cfebb16

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test coverage

Title Lines Statements Branches Functions
api-utils Coverage: 25%
26.34% (49/186) 19.14% (9/47) 22.85% (8/35)
auth Coverage: 90%
92.77% (77/83) 81.81% (18/22) 90% (18/20)
evm-api Coverage: 100%
100% (80/80) 66.66% (6/9) 100% (48/48)
common-evm-utils Coverage: 64%
64.97% (946/1456) 19.43% (123/633) 35.8% (203/567)
sol-api Coverage: 96%
96.66% (29/30) 66.66% (6/9) 91.66% (11/12)
common-sol-utils Coverage: 74%
73.77% (135/183) 60% (12/20) 65.67% (44/67)
common-streams-utils Coverage: 93%
93.13% (787/845) 85.96% (196/228) 84.14% (276/328)
streams Coverage: 87%
86.71% (398/459) 67.14% (47/70) 84.52% (71/84)

Please sign in to comment.