Exemple #1
0
        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());
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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)));
        }
Exemple #4
0
        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);
            }
        }