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); }
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"); }
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(); }
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(); }
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); }
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); }
public KSqlDBContextOptions(string url) { if (string.IsNullOrEmpty(url)) { throw new ArgumentNullException(nameof(url)); } Url = url; QueryStreamParameters = new QueryStreamParameters { ["auto.offset.reset"] = "earliest" }; }
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 "); }
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(); }
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); }
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(); }
public KStreamSetDependencies(IKSqlQbservableProvider provider, IKSqlDbProvider ksqlDBProvider, IKSqlQueryGenerator queryGenerator, QueryStreamParameters queryStreamParameters) { Provider = provider; KsqlDBProvider = ksqlDBProvider; KSqlQueryGenerator = queryGenerator; QueryStreamParameters = queryStreamParameters; QueryContext = new QueryContext(); }