public void ShouldIndexDocument() { IElasticClient elasticClient = A.Fake<IElasticClient>(); IDocument document = A.Fake<IDocument>(); A.CallTo(() => document.IndexName).Returns("humidityIndex"); A.CallTo(() => document.Type).Returns("documentType"); A.CallTo(() => document.Body).Returns("documentBody"); A.CallTo(() => elasticClient.Index("humidityIndex", "documentType", "documentBody")).Returns(Fallible.FromValue("Test")); ElasticSink subject = new ElasticSink(_settings, elasticClient, _clock); subject.OnNext(document); A.CallTo(() => elasticClient.Index("humidityIndex", "documentType", "documentBody")).MustHaveHappened(Repeated.Exactly.Once); }
public void ShouldContiueToIndexIfIndexerCannotBeFound() { IElasticClient elasticClient = A.Fake<IElasticClient>(); DateTime indexDate = DateTime.UtcNow; A.CallTo(() => _clock.UtcNow).Returns(indexDate); string index = string.Format("{0}-{1}", "tempIndex", indexDate.ToString("yyyy.MM.dd")); IDocument document = A.Fake<IDocument>(); A.CallTo(() => document.IndexName).Returns("missingIndex"); A.CallTo(() => document.Type).Returns("documentType"); A.CallTo(() => document.Body).Returns("documentBody"); A.CallTo(() => elasticClient.Index(index, "documentType", "documentBody")).Returns(Fallible.FromValue("Test")); ElasticSink subject = new ElasticSink(_settings, elasticClient, _clock); // Should fail subject.OnNext(document); A.CallTo(() => elasticClient.Index(index, "documentType", "documentBody")).MustNotHaveHappened(); A.CallTo(() => document.IndexName).Returns("tempIndex"); A.CallTo(() => document.Type).Returns("documentType"); A.CallTo(() => document.Body).Returns("documentBody"); // Should complete subject.OnNext(document); A.CallTo(() => elasticClient.Index(index, "documentType", "documentBody")).MustHaveHappened(Repeated.Exactly.Once); }