@open-rights-exchange/orejs
Version:
Orejs is a Javascript helper library to provide simple high-level access to the ore-protocol. Orejs uses eosJS as a wrapper to the EOS blockchain.
154 lines (112 loc) • 4.39 kB
JavaScript
/* global ORE_NETWORK_URI:true */
/* global ORE_OWNER_ACCOUNT_KEY:true */
/* global ORE_PAYER_ACCOUNT_NAME:true */
const { Orejs } = require('../../src');
const { mockAccount, mockAbi, mockBlock, mockCode, mockError, mockInfo, mockTransaction } = require('./fetch');
function constructOrejs(config) {
const orejs = new Orejs({
httpEndpoint: ORE_NETWORK_URI,
keyProvider: [ORE_OWNER_ACCOUNT_KEY],
...config
});
return orejs;
}
function mockGetAbi(_orejs = undefined) {
const mockupAbi = jest.fn();
const getAbi = { code: mockCode(), abi: JSON.parse(mockAbi()) };
mockupAbi.mockImplementationOnce(() => Promise.resolve(getAbi));
const orejs = _orejs || constructOrejs();
orejs.eos.rpc.get_raw_code_and_abi = mockupAbi;
return getAbi;
}
function mockGetAccount(_orejs = undefined, withInitialCheck = true, _account = {}) {
const mockupAccount = jest.fn();
const getAccount = JSON.parse(mockAccount(_account)[0])[0];
if (withInitialCheck) {
mockupAccount.mockImplementationOnce(() => Promise.reject(false));
}
mockupAccount.mockImplementationOnce(() => Promise.resolve(getAccount));
const orejs = _orejs || constructOrejs();
orejs.eos.rpc.get_account = mockupAccount;
return mockupAccount;
}
function mockAllGetAccounts(_orejs = undefined, withInitialCheck = true, _account = {}) {
const mockupAccount = jest.fn();
const getAccount = JSON.parse(mockAccount(_account)[0])[0];
mockupAccount.mockImplementationOnce(() => Promise.reject(false));
mockupAccount.mockImplementationOnce(() => Promise.resolve(getAccount));
mockupAccount.mockImplementationOnce(() => Promise.resolve(getAccount));
mockupAccount.mockImplementationOnce(() => Promise.resolve(getAccount));
mockupAccount.mockClear();
const orejs = _orejs || constructOrejs();
orejs.eos.rpc.get_account = mockupAccount;
return mockupAccount;
}
function mockGetAccountWithAlreadyExistingAccount(_orejs = undefined, _account = {}) {
const mockupAccount = jest.fn();
const getAccount = JSON.parse(mockAccount(_account)[0])[0];
mockupAccount.mockImplementationOnce(() => Promise.resolve(getAccount));
mockupAccount.mockImplementationOnce(() => Promise.reject(false));
mockupAccount.mockImplementationOnce(() => Promise.resolve(getAccount));
const orejs = _orejs || constructOrejs();
orejs.eos.rpc.get_account = mockupAccount;
return getAccount;
}
function mockGetBlock(_orejs = undefined, _block = {}) {
const mockupBlock = jest.fn();
const getBlock = JSON.parse(mockBlock(_block)[0])[0];
mockupBlock.mockImplementation(() => Promise.resolve(getBlock));
const orejs = _orejs || constructOrejs();
orejs.eos.rpc.get_block = mockupBlock;
return getBlock;
}
function mockGetBlockError(_orejs = undefined) {
const mockupBlock = jest.fn();
const getBlock = mockError();
mockupBlock.mockImplementationOnce(() => {
throw getBlock;
});
const orejs = _orejs || constructOrejs();
orejs.eos.rpc.get_block = mockupBlock;
return getBlock;
}
function mockGetCurrency(_orejs = undefined, _currency = '1.0000 CPU') {
const mockupCurrency = jest.fn();
const getCurrency = _currency;
mockupCurrency.mockImplementationOnce(() => Promise.resolve(getCurrency));
const orejs = _orejs || constructOrejs();
orejs.eos.rpc.get_currency_balance = mockupCurrency;
return getCurrency;
}
function mockGetInfo(_orejs = undefined, _info = {}) {
const mockupInfo = jest.fn();
const getInfo = JSON.parse(mockInfo(_info)[0])[0];
mockupInfo.mockImplementation(() => Promise.resolve(getInfo));
const orejs = _orejs || constructOrejs();
orejs.eos.rpc.get_info = mockupInfo;
return getInfo;
}
function mockGetTransaction(_orejs = undefined, success = true, _transaction = {}) {
const mockupTransaction = jest.fn();
const getTransaction = mockTransaction(_transaction);
if (success) {
mockupTransaction.mockImplementation(() => Promise.resolve(getTransaction));
} else {
mockupTransaction.mockImplementation(() => Promise.reject(getTransaction));
}
const orejs = _orejs || constructOrejs();
orejs.eos.transact = mockupTransaction;
return getTransaction;
}
module.exports = {
constructOrejs,
mockGetAbi,
mockGetAccount,
mockAllGetAccounts,
mockGetAccountWithAlreadyExistingAccount,
mockGetBlock,
mockGetBlockError,
mockGetCurrency,
mockGetInfo,
mockGetTransaction
};