コード例 #1
0
    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){}
    }
コード例 #2
0
    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);
    }