# mock-chronik-client

Testing utility to mock the Chronik indexer client and support unit tests that need to mock chronik related API calls.

## Usage

Mock chronik API calls including tx broadcasting and paginated tx history. Also includes an Agora mock. See unit tests for latest usage.

## Questions?

If you have any implementation questions regarding this mock tool please check the test suite in `/test/index.test.js` or feel free to reach out to the development team via the [eCash Development Telegram](https://t.me/eCashDevelopment).

### Change Log

1.1.0

- Add support to in-node subscribeToBlocks method and check flag, isSubscribedBlocks

    1.1.1

- Patch error tests

    1.2.0

- Add support to calls by `address(address)` returning same as `script(type, hash)`

    1.3.0

- Add support for `subscribeToAddress` and `unsubscribeFromAddress` websocket methods

    1.4.0

- Add support for `ws.unsubscribe` method and fix errors in `ws` tests

    1.4.1

- Patch repo path in package.json

    1.5.0

- Add support for ws subscribe methods and shape found in in-node chronik-client

    1.6.0

- Match shape of `subs` object in `ChronikClientNode` for `ChronikClientNode` ws methods and support unsubscribe from blocks

    1.7.0

- Allow getting and setting utxos() and history() by tokenId

    1.8.0

- Allow getting history without specifying pageNumber or pageSize

    1.9.0

- Support `blockTxs` endpoint
- Update websocket subs shape to match ChronikClientNode

    1.9.1

- Upgrading npm dependencies [D16380](https://reviews.bitcoinabc.org/D16380)

    1.10.0

- Allow getting and setting `history()` by `lokadId` [D16382](https://reviews.bitcoinabc.org/D16382)

    1.10.1

- Return missing `numTxs` key from `history()` calls [D16617](https://reviews.bitcoinabc.org/D16617)

    1.11.0

- Add support for `MockAgora`, a simple set-and-return mock for some `ecash-agora` class methods [D16737](https://reviews.bitcoinabc.org/D16737)

    1.12.0

- Extend `MockAgora` support to cover `offeredFungibleTokenIds()` and `activeOffersByTokenId()` methods [D16929](https://reviews.bitcoinabc.org/D16929)

    1.12.1

- Build published version with dependencies from `npm` [D17227](https://reviews.bitcoinabc.org/D17227)

    1.12.2

- Add `MockAgora` to stub ts declarations [D17274](https://reviews.bitcoinabc.org/D17274)

    1.12.3

- Add dummy `plugin` method to allow construction of `new Agora()` from `ecash-agora` with a `MockChronikClient` [D17279](https://reviews.bitcoinabc.org/D17279)

    2.0.0

[D17332](https://reviews.bitcoinabc.org/D17332)

- Full implementation of typescript
- Set history and utxos by script, address, or tokenId in one step (prev 2)
- Set history by lokadId in one step (prev 2)
- Better type checking
- Improved mock websocket (now it more closely follows the API of chronik-client)
- Add `broadcastTxs` method
- Add `chronikInfo` method

    2.0.1

- Build before deployment so it also works for non-ts users [D17338](https://reviews.bitcoinabc.org/D17338)

    2.1.0

- Support for Agora plugin websocket subscriptions [D17369](https://reviews.bitcoinabc.org/D17369)

    2.1.1

- Upgrade to dependency-free `ecashaddrjs` [D17269](https://reviews.bitcoinabc.org/D17269)

    2.1.2

- Update README [D17506](https://reviews.bitcoinabc.org/D17506)

    2.1.3

- Update `package.json` paths for correct typescript `dist` [D17542](https://reviews.bitcoinabc.org/D17542)

    3.0.0

- Update types to match latest breaking changes in `chronik-client` [D17727](https://reviews.bitcoinabc.org/D17727)

    3.1.0

- Support for txid websocket subscriptions [D18262](https://reviews.bitcoinabc.org/D18262)

- Match the correct type interfaces for the `broadcastTxs` method [D19627](https://reviews.bitcoinabc.org/D19627)

    3.2.0

- Support for the batchUtxos() function [D19943](https://reviews.bitcoinabc.org/D19943)

    3.3.0

- Support for the batchSummary() function [D19983](https://reviews.bitcoinabc.org/D19983)

    3.4.0

- Support for `broadcastAndFinalizeTx` and `broadcastAndFinalizeTxs` [D20014](https://reviews.bitcoinabc.org/D20014)
