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 ShouldUseIndexersToDetermineIndex()
        {
            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("tempIndex");
            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);

            subject.OnNext(document);

            A.CallTo(() => elasticClient.Index(index, "documentType", "documentBody")).MustHaveHappened(Repeated.Exactly.Once);
        }