Example #1
0
        public async Task Run_HttpStatusCodeOK_BigintRowTimeFieldWasParsed()
        {
            //Arrange
            var queryParameters = new QueryStreamParameters();

            //Act
            var tweets = await ClassUnderTest.Run <Tweet>(queryParameters).ToListAsync();

            //Assert
            var tweet = tweets[0];

            tweet.RowTime.Should().Be(1611327570881);
        }
Example #2
0
    public async Task Run_HttpStatusCodeOK_StringFieldWasParsed()
    {
        //Arrange
        var queryParameters = new QueryStreamParameters();

        //Act
        var tweets = await ClassUnderTest.Run <Tweet>(queryParameters).ToListAsync();

        //Assert
        var tweet = tweets[0];

        tweet.Message.Should().Be("Hello world");
    }
Example #3
0
    public async Task Run_HttpStatusCodeOK_BooleanFieldWasParsed()
    {
        //Arrange
        var queryParameters = new QueryStreamParameters();

        //Act
        var tweets = await ClassUnderTest.Run <Tweet>(queryParameters).ToListAsync();

        //Assert
        var tweet = tweets[0];

        tweet.IsRobot.Should().BeTrue();
    }
Example #4
0
    public async Task Run_DonNotDisposeHttpClient()
    {
        //Arrange
        var queryParameters = new QueryStreamParameters();

        ClassUnderTest.Options.DisposeHttpClient = true;

        //Act
        _ = await ClassUnderTest.Run <Tweet>(queryParameters).ToListAsync();

        //Assert
        ClassUnderTest.LastUsedHttpClient.IsDisposed.Should().BeTrue();
    }
Example #5
0
    public async Task Run_HttpStatusCodeOK_DecimalFieldWasParsed()
    {
        //Arrange
        var queryParameters = new QueryStreamParameters();

        //Act
        var tweets = await ClassUnderTest.Run <Tweet>(queryParameters).ToListAsync();

        //Assert
        var tweet = tweets[0];

        tweet.AccountBalance.Should().Be(9999999999999999.1234M);
    }
Example #6
0
    public async Task Run_HttpStatusCodeOK_DoubleFieldWasParsed()
    {
        //Arrange
        var queryParameters = new QueryStreamParameters();

        //Act
        var tweets = await ClassUnderTest.Run <Tweet>(queryParameters).ToListAsync();

        //Assert
        var tweet = tweets[0];

        tweet.Amount.Should().Be(0.00042);
    }
Example #7
0
        public KSqlDBContextOptions(string url)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentNullException(nameof(url));
            }

            Url = url;

            QueryStreamParameters = new QueryStreamParameters
            {
                ["auto.offset.reset"] = "earliest"
            };
        }
Example #8
0
        public async Task Run_HttpStatusCodeBadRequest_ThrowsException()
        {
            //Arrange
            ClassUnderTest.ShouldThrowException = true;

            var queryParameters = new QueryStreamParameters();

            //Act
            var tweets = ClassUnderTest.Run <Tweet>(queryParameters);

            //Assert
            await foreach (var tweet in tweets)
            {
                tweet.Should().NotBeNull();
            }
        }
    public void ToLogInfo_QueryStreamParameters_Sql()
    {
        //Arrange
        string sql = "Select * From tweets Emit changes;";

        var queryParameters = new QueryStreamParameters
        {
            Sql = sql
        };

        //Act
        var result = queryParameters.ToLogInfo();

        //Assert
        result.Should().Be($@"Sql: {sql}
Parameters:
");
    }
    public async Task Run_HttpStatusCodeOK_ReturnsTweets()
    {
        //Arrange
        var queryParameters = new QueryStreamParameters();

        //Act
        var items = ClassUnderTest.Run <Nested>(queryParameters);

        //Assert
        var receivedTweets = new List <Nested>();

        await foreach (var item in items)
        {
            item.Should().NotBeNull();
            receivedTweets.Add(item);
        }

        receivedTweets.Count.Should().Be(2);
    }
    public void ToLogInfo_QueryStreamParameters()
    {
        //Arrange
        var queryParameters = new QueryStreamParameters
        {
            AutoOffsetReset = AutoOffsetReset.Earliest,
            [KSqlDbConfigs.ProcessingGuarantee] = ProcessingGuarantee.AtLeastOnce.ToKSqlValue()
        };

        //Act
        var result = queryParameters.ToLogInfo();

        //Assert
        result.Should().Be(@"Sql: 
Parameters:
auto.offset.reset = earliest
processing.guarantee = at_least_once
");
    }
Example #12
0
    public void CreateQueryStream_RawKSQL_ReturnAsyncEnumerable()
    {
        //Arrange
        string ksql = "SELECT * FROM tweetsTest EMIT CHANGES LIMIT 2;";

        QueryStreamParameters queryStreamParameters = new QueryStreamParameters
        {
            Sql = ksql,
            [QueryStreamParameters.AutoOffsetResetPropertyName] = "earliest",
        };

        var context = new TestableDbProvider <string>(TestParameters.KsqlDBUrl);

        //Act
        var source = context.CreateQueryStream <string>(queryStreamParameters);

        //Assert
        source.Should().NotBeNull();
    }
Example #13
0
    public async Task LogError()
    {
        //Arrange
        ClassUnderTest.Exception = new Exception("test");

        var queryParameters = new QueryStreamParameters();

        try
        {
            //Act
            var tweets = await ClassUnderTest.Run <Tweet>(queryParameters).ToListAsync();

            //Assert
        }
        catch (Exception)
        {
            LoggerMock.VerifyLog(LogLevel.Error, Times.Once);
        }
    }
        public async Task QueryStreamRawKSql()
        {
            //Arrange
            int expectedItemsCount = 2;

            string ksql = @"SELECT * FROM tweetsTest EMIT CHANGES LIMIT 2;";

            QueryStreamParameters queryStreamParameters = new QueryStreamParameters
            {
                Sql = ksql,
                [QueryStreamParameters.AutoOffsetResetPropertyName] = "earliest",
            };

            var source = Context.CreateQueryStream <Tweet>(queryStreamParameters);

            //Act
            var actualValues = await CollectActualValues(source, expectedItemsCount);

            //Assert
            Assert.AreEqual(expectedItemsCount, actualValues.Count);
        }
Example #15
0
        public async Task Run_Disposed_NothingWasReceived()
        {
            //Arrange
            var queryParameters = new QueryStreamParameters();
            var cts             = new CancellationTokenSource();

            //Act
            IAsyncEnumerable <Tweet> tweets = ClassUnderTest.Run <Tweet>(queryParameters, cts.Token);

            cts.Cancel();

            //Assert
            var receivedTweets = new List <Tweet>();

            await foreach (var tweet in tweets.WithCancellation(cts.Token))
            {
                receivedTweets.Add(tweet);
            }

            receivedTweets.Should().BeEmpty();
            cts.Dispose();
        }
Example #16
0
        public KStreamSetDependencies(IKSqlQbservableProvider provider, IKSqlDbProvider ksqlDBProvider, IKSqlQueryGenerator queryGenerator, QueryStreamParameters queryStreamParameters)
        {
            Provider              = provider;
            KsqlDBProvider        = ksqlDBProvider;
            KSqlQueryGenerator    = queryGenerator;
            QueryStreamParameters = queryStreamParameters;

            QueryContext = new QueryContext();
        }