diff --git a/src/Tests/BirdsiteLive.Pipeline.Tests/StatusPublicationPipelineTests.cs b/src/Tests/BirdsiteLive.Pipeline.Tests/StatusPublicationPipelineTests.cs new file mode 100644 index 0000000..2a47b95 --- /dev/null +++ b/src/Tests/BirdsiteLive.Pipeline.Tests/StatusPublicationPipelineTests.cs @@ -0,0 +1,50 @@ +using System.Threading; +using System.Threading.Tasks; +using System.Threading.Tasks.Dataflow; +using BirdsiteLive.DAL.Models; +using BirdsiteLive.Pipeline.Contracts; +using Microsoft.Extensions.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; + +namespace BirdsiteLive.Pipeline.Tests +{ + [TestClass] + public class StatusPublicationPipelineTests + { + [TestMethod] + public async Task ExecuteAsync_Test() + { + #region Stubs + var ct = new CancellationTokenSource(10); + #endregion + + #region Mocks + var retrieveTwitterUsersProcessor = new Mock(MockBehavior.Strict); + retrieveTwitterUsersProcessor + .Setup(x => x.GetTwitterUsersAsync( + It.IsAny>(), + It.IsAny())) + .Returns(Task.Delay(0)); + + var retrieveTweetsProcessor = new Mock(MockBehavior.Strict); + var retrieveFollowersProcessor = new Mock(MockBehavior.Strict); + var sendTweetsToFollowersProcessor = new Mock(MockBehavior.Strict); + var saveProgressionProcessor = new Mock(MockBehavior.Strict); + var logger = new Mock>(); + #endregion + + var pipeline = new StatusPublicationPipeline(retrieveTweetsProcessor.Object, retrieveTwitterUsersProcessor.Object, retrieveFollowersProcessor.Object, sendTweetsToFollowersProcessor.Object, saveProgressionProcessor.Object, logger.Object); + await pipeline.ExecuteAsync(ct.Token); + + #region Validations + retrieveTwitterUsersProcessor.VerifyAll(); + retrieveTweetsProcessor.VerifyAll(); + retrieveFollowersProcessor.VerifyAll(); + sendTweetsToFollowersProcessor.VerifyAll(); + saveProgressionProcessor.VerifyAll(); + logger.VerifyAll(); + #endregion + } + } +} \ No newline at end of file