using System.Collections.Generic; using System.Threading.Tasks; using BirdsiteLive.DAL.Contracts; using BirdsiteLive.DAL.Models; using BirdsiteLive.Domain.BusinessUseCases; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; namespace BirdsiteLive.Domain.Tests.BusinessUseCases { [TestClass] public class ProcessDeleteUserTests { [TestMethod] public async Task ExecuteAsync_NoMoreFollowings() { #region Stubs var follower = new Follower { Id = 12, Followings = new List { 1 } }; #endregion #region Mocks var followersDalMock = new Mock(MockBehavior.Strict); followersDalMock .Setup(x => x.GetFollowersAsync( It.Is(y => y == 1))) .ReturnsAsync(new[] { follower }); followersDalMock .Setup(x => x.DeleteFollowerAsync( It.Is(y => y == 12))) .Returns(Task.CompletedTask); var twitterUserDalMock = new Mock(MockBehavior.Strict); twitterUserDalMock .Setup(x => x.DeleteTwitterUserAsync( It.Is(y => y == 1))) .Returns(Task.CompletedTask); #endregion var action = new ProcessDeleteUser(followersDalMock.Object, twitterUserDalMock.Object); await action.ExecuteAsync(follower); #region Validations followersDalMock.VerifyAll(); twitterUserDalMock.VerifyAll(); #endregion } [TestMethod] public async Task ExecuteAsync_HaveFollowings() { #region Stubs var follower = new Follower { Id = 12, Followings = new List { 1 } }; var followers = new List { follower, new Follower { Id = 11 } }; #endregion #region Mocks var followersDalMock = new Mock(MockBehavior.Strict); followersDalMock .Setup(x => x.GetFollowersAsync( It.Is(y => y == 1))) .ReturnsAsync(followers.ToArray()); followersDalMock .Setup(x => x.DeleteFollowerAsync( It.Is(y => y == 12))) .Returns(Task.CompletedTask); var twitterUserDalMock = new Mock(MockBehavior.Strict); #endregion var action = new ProcessDeleteUser(followersDalMock.Object, twitterUserDalMock.Object); await action.ExecuteAsync(follower); #region Validations followersDalMock.VerifyAll(); twitterUserDalMock.VerifyAll(); #endregion } } }