public void Process_Tweets_When_No_Tweets_To_Process() { var mockTweet = new Mock <ITweet>(); var mockTask = new Mock <IFlowTasksService>(); DateTime last = new DateTime(2012, 5, 30); List <TwitterStatus> tweets = new List <TwitterStatus>(); mockTweet.Setup(tweet => tweet.GetLatestTwitterForWorkflow(out last)) .Returns(tweets); mockTweet.Setup(tweet => tweet.SetLastTweetData(last)); var resp = new StartWorkflowResponse { WorkflowId = Guid.NewGuid().ToString() }; mockTask.Setup(task => task.StartWorkflow(Moq.It.IsAny <StartWorkflowRequest>())) .Returns(resp); var sut = new ProcessTweet(mockTweet.Object, mockTask.Object); sut.DoProcess(); mockTweet.Verify(tweet => tweet.SetLastTweetData(new DateTime(2012, 5, 30))); mockTask.Verify(task => task.StartWorkflow(Moq.It.IsAny <StartWorkflowRequest>()), Times.Never()); }
private static string Start(string workflowCode) { string workflowId; var startWorkflowRequest = new StartWorkflowRequest { Domain = "google", WorkflowCode = workflowCode, WfRuntimeValues = new[] { new WfProperty { Name = "Prop1", Type = "S", Value = "Val1" } } }; StartWorkflowResponse startWorkflowResponse = null; using (var src = new FlowTasksService()) { startWorkflowResponse = src.StartWorkflow(startWorkflowRequest); } System.Threading.Thread.Sleep(1000); workflowId = startWorkflowResponse.WorkflowId; return(workflowId); }
public void Process_Only_First_Tweet() { var mockTweet = new Mock <ITweet>(); var mockTask = new Mock <IFlowTasksService>(); DateTime last = new DateTime(2012, 5, 30); List <TwitterStatus> tweets = new List <TwitterStatus>(); tweets.Add(new TwitterStatus { CreatedDate = new DateTime(2012, 5, 1), Text = "Tweet 1", }); tweets.Add(new TwitterStatus { CreatedDate = new DateTime(2012, 5, 2), Text = "Tweet 2", }); mockTweet.Setup(tweet => tweet.GetLatestTwitterForWorkflow(out last)) .Returns(tweets); mockTweet.Setup(tweet => tweet.SetLastTweetData(last)); var resp = new StartWorkflowResponse { WorkflowId = Guid.NewGuid().ToString() }; mockTask.Setup(task => task.StartWorkflow(Moq.It.IsAny <StartWorkflowRequest>())) .Returns(() => resp) .Callback(() => resp = new StartWorkflowResponse { WorkflowId = Guid.Empty.ToString() }); var sut = new ProcessTweet(mockTweet.Object, mockTask.Object); sut.DoProcess(); mockTweet.Verify(tweet => tweet.SetLastTweetData(new DateTime(2012, 5, 1))); }
public void DoProcess() { DateTime last; try { var tweets = _tweet.GetLatestTwitterForWorkflow(out last); DateTime lastRun = DateTime.MinValue; foreach (var t in tweets) { var startWorkflowRequest = new StartWorkflowRequest { Domain = ConfigHelper.WorkflowDomain, WorkflowCode = ConfigHelper.WorkflowCode, WfRuntimeValues = new WfProperty[] { new WfProperty { Name = ConfigHelper.WorkflowProperty, Type = "S", Value = t.Text } } }; StartWorkflowResponse startWorkflowResponse = null; if (_flowTasksService == null) { using (FlowTasksService proxy = new FlowTasksService()) { startWorkflowResponse = proxy.StartWorkflow(startWorkflowRequest); } } else { startWorkflowResponse = _flowTasksService.StartWorkflow(startWorkflowRequest); } // check for errors if (string.IsNullOrWhiteSpace(startWorkflowResponse.WorkflowId) || startWorkflowResponse.WorkflowId == Guid.Empty.ToString()) { if (lastRun != DateTime.MinValue) { _tweet.SetLastTweetData(lastRun); } _log.Error("DoProcess: Start workflow failed!"); return; } // last tweet processed lastRun = t.CreatedDate; } _tweet.SetLastTweetData(last); } catch (Exception e) { // log the error _log.Error("DoProcess: exception. ", e); } }