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 } } }