UNPKG

@yoroi/resolver

Version:
157 lines (156 loc) 5.87 kB
"use strict"; var _crossCslNodejs = require("@emurgo/cross-csl-nodejs"); var _cardanoApiMaker = require("./cardano-api-maker.mocks"); var _utils = require("./utils"); describe('validateCNSUserRecord', () => { it('returns true when the record is correct', () => { const result = (0, _utils.validateCNSUserRecord)(_cardanoApiMaker.cnsCardanoApiMock.inlineDatumMock[0]?.inline_datum.plutus_data); expect(result).toBe(true); }); it('returns false: incorrect constructor', () => { const result = (0, _utils.validateCNSUserRecord)(_cardanoApiMaker.cnsCardanoApiMock.badConstructorInlineDatumMock[0]?.inline_datum.plutus_data); expect(result).toBe(false); }); it('returns false: incorrect fields', () => { const result = (0, _utils.validateCNSUserRecord)(_cardanoApiMaker.cnsCardanoApiMock.badFieldsInlineDatumMock[0]?.inline_datum.plutus_data); expect(result).toBe(false); }); }); describe('validateExpiry', () => { it('returns true', () => { const result = (0, _utils.validateExpiry)(_cardanoApiMaker.cnsCardanoApiMock.metadataMock); expect(result).toBe(true); }); it('returns false', () => { const result = (0, _utils.validateExpiry)(_cardanoApiMaker.cnsCardanoApiMock.expiredMetadataMock); expect(result).toBe(false); }); }); describe('validateVirtualSubdomainEnabled', () => { it('returns true', () => { const result = (0, _utils.validateVirtualSubdomainEnabled)(_cardanoApiMaker.cnsCardanoApiMock.metadataMock); expect(result).toBe(true); }); it('returns false', () => { const result = (0, _utils.validateVirtualSubdomainEnabled)(_cardanoApiMaker.cnsCardanoApiMock.disabledMetadataMock); expect(result).toBe(false); }); }); describe('parseAssocMapAsync', () => { it('successfully parses valid input', async () => { const mockItemParser = jest.fn(item => Promise.resolve(`Parsed: ${item}`)); const mockAssocMapVal = { map: Array(10).fill(null).map((_, i) => ({ k: { bytes: `key${i}` }, v: `value${i}` })) }; const expectedResult = mockAssocMapVal.map.map((item, i) => [(0, _utils.hexToString)(item.k.bytes), `Parsed: value${i}`]).slice(0, 5); const result = await (0, _utils.parseAssocMapAsync)(mockAssocMapVal, mockItemParser); expect(mockItemParser).toHaveBeenCalledTimes(5); expect(result).toEqual(expectedResult); }); it('throws an error for bad data', async () => { const mockAssocMapVal = { //@ts-ignore map: [undefined] }; const mockItemParser = jest.fn(); await expect((0, _utils.parseAssocMapAsync)(mockAssocMapVal, mockItemParser)).rejects.toThrow('bad data'); }); it('throws an error when itemParser returns a falsy value', async () => { const mockItemParser = jest.fn().mockResolvedValueOnce('Valid Data').mockResolvedValueOnce(null); const mockAssocMapVal = { map: [{ k: { bytes: 'key1' }, v: 'value1' }, { k: { bytes: 'key2' }, v: 'value2' }] }; await expect((0, _utils.parseAssocMapAsync)(mockAssocMapVal, mockItemParser, 2)).rejects.toThrow('bad data'); expect(mockItemParser).toHaveBeenCalledTimes(2); expect(mockItemParser).toHaveBeenCalledWith('value1'); expect(mockItemParser).toHaveBeenCalledWith('value2'); }); it('respects the limit parameter', async () => { const mockItemParser = jest.fn(item => Promise.resolve(`Parsed: ${item}`)); const limit = 3; const mockAssocMapVal = { map: Array(10).fill(null).map((_, i) => ({ k: { bytes: `key${i}` }, v: `value${i}` })) }; await (0, _utils.parseAssocMapAsync)(mockAssocMapVal, mockItemParser, limit); expect(mockItemParser).toHaveBeenCalledTimes(limit); }); }); const item1 = { constructor: 0, fields: [{ constructor: 0, fields: [{ bytes: 'a5644bcb8cd82b5e0478657e2c8feea865682a5b20db45d095807d84' }] }, { constructor: 0, fields: [{ constructor: 0, fields: [{ constructor: 0, fields: [{ bytes: 'e40482bb4648fc54bffc06175c4a9e5f268b70da54bf6de4d6ad71df' }] }] }] }] }; const item2 = { constructor: 0, fields: [{ constructor: 1, fields: [{ bytes: 'a5644bcb8cd82b5e0478657e2c8feea865682a5b20db45d095807d84' }] }, { constructor: 0, fields: [{ constructor: 0, fields: [{ constructor: 0, fields: [{ bytes: 'e40482bb4648fc54bffc06175c4a9e5f268b70da54bf6de4d6ad71df' }] }] }] }] }; describe('objToHex', () => { it('successfully converts to hex', async () => { const result = await (0, _utils.objToHex)(item1, (0, _crossCslNodejs.init)('ctx')); expect(result).toBe('d8799fd8799f581ca5644bcb8cd82b5e0478657e2c8feea865682a5b20db45d095807d84ffd8799fd8799fd8799f581ce40482bb4648fc54bffc06175c4a9e5f268b70da54bf6de4d6ad71dfffffffff'); }); }); describe('parsePlutusAddressToBech32', () => { it('successfully converts to Bech32: pub key credential', async () => { const hex = await (0, _utils.objToHex)(item1, (0, _crossCslNodejs.init)('ctx')); const result = await (0, _utils.parsePlutusAddressToBech32)(hex, (0, _crossCslNodejs.init)('ctx'), 1); expect(result).toBe('addr1qxjkgj7t3nvzkhsy0pjhuty0a65x26p2tvsdk3wsjkq8mp8yqjptk3jgl32tllqxzawy48jly69hpkj5hak7f44dw80sqfylvs'); }); it('successfully converts to Bech32: script credential', async () => { const hex = await (0, _utils.objToHex)(item2, (0, _crossCslNodejs.init)('ctx')); const result = await (0, _utils.parsePlutusAddressToBech32)(hex, (0, _crossCslNodejs.init)('ctx'), 1); expect(result).toBe('addr1zxjkgj7t3nvzkhsy0pjhuty0a65x26p2tvsdk3wsjkq8mp8yqjptk3jgl32tllqxzawy48jly69hpkj5hak7f44dw80s0xayjy'); }); }); //# sourceMappingURL=utils.test.js.map