public async Task MapsFilterLogToSearchDocument()
        {
            var mockElasticClient = new MockElasticClient();

            var indexer = new ElasticFilterLogIndexer <SearchDocument>("my-index",
                                                                       mockElasticClient.ElasticClient, (tfr) => new SearchDocument(tfr.TransactionHash, tfr.LogIndex));

            var log = TestData.Contracts.StandardContract.SampleTransferLog();

            await indexer.IndexAsync(log);

            Assert.Single(mockElasticClient.BulkRequests);
            var searchDoc = mockElasticClient.GetFirstBulkOperation().GetBody() as SearchDocument;

            Assert.Equal(log.TransactionHash, searchDoc.TransactionHash);
            Assert.Equal(log.LogIndex.Value.ToString(), searchDoc.LogIndex);
        }
        public async Task MapsFilterLogToGenericSearchDocument()
        {
            var mockElasticClient = new MockElasticClient();

            var indexer = new ElasticFilterLogIndexer("my-index", mockElasticClient.ElasticClient);

            var filterLog = new FilterLog
            {
                BlockNumber     = new Hex.HexTypes.HexBigInteger(4309),
                TransactionHash = "0x3C81039C578811A85742F2476DA90E363A88CA93763DB4A194E35367D9A72FD8",
                LogIndex        = new Hex.HexTypes.HexBigInteger(9)
            };

            await indexer.IndexAsync(filterLog);

            var bulkRequest = mockElasticClient.BulkRequests.FirstOrDefault();

            Assert.Single(bulkRequest.Operations);
            var searchDocument = bulkRequest.Operations.First().GetBody() as GenericSearchDocument;

            Assert.Equal(filterLog.Key(), searchDocument[PresetSearchFieldName.log_key.ToString()]);
        }