public async Task Subscribe() { //Arrange var ksqlDbContext = new TestableKSqlDBContext(TestParameters.KsqlDBUrl); ksqlDbContext.KSqlDbProviderMock .Setup(c => c.Run <ElasticSearchEvent>(It.IsAny <QueryStreamParameters>(), It.IsAny <CancellationToken>())) .Returns(ElasticSearchEventsSource); var classUnderTest = new KSqlDb(ksqlDbContext); var semaphoreSlim = new SemaphoreSlim(0, 1); var receivedValues = new List <ElasticSearchEvent>(); //Act var qbservable = classUnderTest.CreateElasticSearchEventQuery(); var subscription = qbservable.Subscribe(value => { receivedValues.Add(value); }, exception => { semaphoreSlim.Release(); }, () => semaphoreSlim.Release()); await semaphoreSlim.WaitAsync(); //Assert Assert.AreEqual(2, receivedValues.Count); using (subscription){} }
public async Task GetById() { //Arrange var ksqlDbContextMock = new Mock <IKSqlDBContext>(); var pullQueryMock = new Mock <IPullable <ElasticSearchEvent> >(); var pullQueryProviderMock = new Mock <IPullQueryProvider>(); pullQueryProviderMock.Setup(c => c.CreateQuery <ElasticSearchEvent>(It.IsAny <Expression>())) .Returns(pullQueryMock.Object); pullQueryMock.Setup(c => c.Provider) .Returns(pullQueryProviderMock.Object); pullQueryMock.Setup(c => c.Expression) .Returns(Expression.Constant(pullQueryMock.Object)); pullQueryMock.Setup(c => c.FirstOrDefaultAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(new ElasticSearchEvent { Key = 42 }); ksqlDbContextMock.Setup(c => c.CreatePullQuery <ElasticSearchEvent>("EventTopic")) .Returns(pullQueryMock.Object); var classUnderTest = new KSqlDb(ksqlDbContextMock.Object); //Act var elasticSearchEvent = await classUnderTest.GetByIdAsync(42); //Assert Assert.AreEqual(42, elasticSearchEvent.Key); }