public virtual Task <SegmentedResult <IDataSet> > ListDataSetsAsync( Query query = null, ContinuationToken continuationToken = null, CancellationToken cancellationToken = default(CancellationToken)) { var result = new SegmentedResult <IDataSet> { Items = Objects .Where(kv => kv.Key.StartsWith(DataSetsPrefix())) .Select(kv => (IDataSet)kv.Value) .ToList() }; return(Task.FromResult(result)); }
public virtual Task <SegmentedResult <ITable <JObject> > > ListTablesAsync( string dataSetName, Query query = null, ContinuationToken continuationToken = null, CancellationToken cancellationToken = default(CancellationToken)) { var result = new SegmentedResult <ITable <JObject> > { Items = Objects .Where(kv => kv.Key.StartsWith(TablesPrefix(dataSetName))) .Select(kv => (ITable <JObject>)kv.Value) .ToList() }; return(Task.FromResult(result)); }
public virtual Task <SegmentedResult <TEntity> > ListEntitiesAsync <TEntity>( string dataSetName, string tableName, Query query = null, ContinuationToken continuationToken = null, CancellationToken cancellationToken = default(CancellationToken)) where TEntity : class { var result = new SegmentedResult <TEntity> { Items = Objects .Where(kv => kv.Key.StartsWith(EntitiesPrefix(dataSetName, tableName))) .Select(kv => ((JObject)kv.Value).ToObject <TEntity>()) .ToList() }; return(Task.FromResult(result)); }
public async Task ScoreTweet_ExistingTweet_UpdatedEntity() { //////////////////////////////////////////// // Arrange //////////////////////////////////////////// // Setup Logs var logMessages = new List <string>(); var log = new Mock <TraceWriter>(TraceLevel.Error); log.Setup(l => l.Trace(It.IsAny <TraceEvent>())) .Callback((TraceEvent t) => logMessages.Add(t.Message)); var tweetText = "Loving the serverless compute :-)"; var user = "******"; var score = 0.949561040962202; var expectedLogMessages = new List <string>() { "Updating existing row in output table", $"Scored tweet: {tweetText}, user: {user}, sentiment score: {score}" }; // Mock outputTable var outputTable = new Mock <ITable <JObject> >(); var entity = new JObject { new JProperty("ID", "0"), new JProperty("Username", user), new JProperty("TweetText", tweetText), new JProperty("TextSentimentScore", score) }; var entities = new SegmentedResult <JObject>(); entities.Items = new List <JObject>() { entity }; // Setup the ListEntitiesAsync method // To return a list with a single entity defined above outputTable.Setup(t => t.ListEntitiesAsync(It.IsAny <Query>(), It.IsAny <ContinuationToken>(), It.IsAny <CancellationToken>())) .ReturnsAsync(entities); // HTTP request var req = new HttpRequestMessage() { Content = new StringContent( "{\"TweetText\": \"" + tweetText + "\", " + "\"UserDetails\": {\"UserName\": \"" + user + "\"}}") }; //////////////////////////////////////////// // Act //////////////////////////////////////////// await ScoreTweet.Run(req, outputTable.Object, log.Object); //////////////////////////////////////////// // Assert //////////////////////////////////////////// // Compare all log messages CollectionAssert.AreEqual(expectedLogMessages, logMessages); // Verify that Update entity was called outputTable.Verify(t => t.UpdateEntityAsync(It.IsAny <string>(), It.IsAny <JObject>(), It.IsAny <CancellationToken>()), Times.Once()); }