added tests
This commit is contained in:
parent
8a99f5ecce
commit
5b93c2b760
|
@ -72,5 +72,60 @@ namespace BirdsiteLive.Pipeline.Tests.Processors.TweetsCleanUp
|
|||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task Process_Pagination_Test()
|
||||
{
|
||||
#region Stubs
|
||||
var settings = new InstanceSettings { };
|
||||
var bufferBlock = new BufferBlock<TweetToDelete>();
|
||||
|
||||
|
||||
var batch = new List<SyncTweet>();
|
||||
var batch2 = new List<SyncTweet>();
|
||||
|
||||
for (var i = 0; i < 100; i++)
|
||||
{
|
||||
var tweet = new SyncTweet
|
||||
{
|
||||
Id = i
|
||||
};
|
||||
batch.Add(tweet);
|
||||
}
|
||||
|
||||
for (var i = 100; i < 120; i++)
|
||||
{
|
||||
var tweet = new SyncTweet
|
||||
{
|
||||
Id = i
|
||||
};
|
||||
batch2.Add(tweet);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Mocks
|
||||
var dalMock = new Mock<ISyncTweetsPostgresDal>(MockBehavior.Strict);
|
||||
dalMock
|
||||
.Setup(x => x.GetTweetsOlderThanAsync(It.IsAny<DateTime>(), It.Is<long>(y => y == -1), It.Is<int>(y => y == 100)))
|
||||
.ReturnsAsync(batch);
|
||||
|
||||
dalMock
|
||||
.Setup(x => x.GetTweetsOlderThanAsync(It.IsAny<DateTime>(), It.Is<long>(y => y == 99), It.Is<int>(y => y == 100)))
|
||||
.ReturnsAsync(batch2);
|
||||
#endregion
|
||||
|
||||
var processor = new RetrieveTweetsToDeleteProcessor(dalMock.Object, settings);
|
||||
processor.GetTweetsAsync(bufferBlock, CancellationToken.None);
|
||||
|
||||
await Task.Delay(TimeSpan.FromSeconds(1));
|
||||
|
||||
#region Validations
|
||||
dalMock.VerifyAll();
|
||||
|
||||
Assert.AreEqual(batch.Count + batch2.Count, bufferBlock.Count);
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,6 +1,80 @@
|
|||
namespace BirdsiteLive.Pipeline.Tests.Processors.TweetsCleanUp;
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using BirdsiteLive.Common.Settings;
|
||||
using BirdsiteLive.DAL.Contracts;
|
||||
using BirdsiteLive.DAL.Models;
|
||||
using BirdsiteLive.Pipeline.Models;
|
||||
using BirdsiteLive.Pipeline.Processors.TweetsCleanUp;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Moq;
|
||||
|
||||
public class SaveDeletedTweetStatusProcessorTests
|
||||
namespace BirdsiteLive.Pipeline.Tests.Processors.TweetsCleanUp
|
||||
{
|
||||
|
||||
[TestClass]
|
||||
public class SaveDeletedTweetStatusProcessorTests
|
||||
{
|
||||
[TestMethod]
|
||||
public async Task Process_DeleteSuccessfull_Test()
|
||||
{
|
||||
#region Stubs
|
||||
var settings = new InstanceSettings { };
|
||||
var tweetId = 42;
|
||||
var tweetToDelete = new TweetToDelete
|
||||
{
|
||||
DeleteSuccessful = true,
|
||||
Tweet = new SyncTweet
|
||||
{
|
||||
Id = tweetId
|
||||
}
|
||||
};
|
||||
#endregion
|
||||
|
||||
#region Mocks
|
||||
var dalMock = new Mock<ISyncTweetsPostgresDal>(MockBehavior.Strict);
|
||||
dalMock
|
||||
.Setup(x => x.DeleteTweetAsync(It.Is<long>(y => y == tweetId)))
|
||||
.Returns(Task.CompletedTask);
|
||||
#endregion
|
||||
|
||||
var processor = new SaveDeletedTweetStatusProcessor(dalMock.Object, settings);
|
||||
await processor.ProcessAsync(tweetToDelete, CancellationToken.None);
|
||||
|
||||
#region Validations
|
||||
dalMock.VerifyAll();
|
||||
#endregion
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task Process_Expired_Test()
|
||||
{
|
||||
#region Stubs
|
||||
var settings = new InstanceSettings { };
|
||||
var tweetId = 42;
|
||||
var tweetToDelete = new TweetToDelete
|
||||
{
|
||||
DeleteSuccessful = false,
|
||||
Tweet = new SyncTweet
|
||||
{
|
||||
Id = tweetId,
|
||||
PublishedAt = DateTime.UtcNow.AddDays(-30)
|
||||
}
|
||||
};
|
||||
#endregion
|
||||
|
||||
#region Mocks
|
||||
var dalMock = new Mock<ISyncTweetsPostgresDal>(MockBehavior.Strict);
|
||||
dalMock
|
||||
.Setup(x => x.DeleteTweetAsync(It.Is<long>(y => y == tweetId)))
|
||||
.Returns(Task.CompletedTask);
|
||||
#endregion
|
||||
|
||||
var processor = new SaveDeletedTweetStatusProcessor(dalMock.Object, settings);
|
||||
await processor.ProcessAsync(tweetToDelete, CancellationToken.None);
|
||||
|
||||
#region Validations
|
||||
dalMock.VerifyAll();
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,48 @@
|
|||
namespace BirdsiteLive.Pipeline.Tests;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks.Dataflow;
|
||||
using BirdsiteLive.DAL.Models;
|
||||
using BirdsiteLive.Pipeline.Contracts.Federation;
|
||||
using BirdsiteLive.Pipeline.Contracts.TweetsCleanUp;
|
||||
using BirdsiteLive.Pipeline.Models;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Moq;
|
||||
|
||||
public class TweetCleanUpPipelineTests
|
||||
namespace BirdsiteLive.Pipeline.Tests
|
||||
{
|
||||
|
||||
[TestClass]
|
||||
public class TweetCleanUpPipelineTests
|
||||
{
|
||||
[TestMethod]
|
||||
public async Task Process()
|
||||
{
|
||||
#region Stubs
|
||||
var ct = new CancellationTokenSource(10);
|
||||
#endregion
|
||||
|
||||
#region Mocks
|
||||
var retrieveTweetsToDeleteProcessor = new Mock<IRetrieveTweetsToDeleteProcessor>(MockBehavior.Strict);
|
||||
retrieveTweetsToDeleteProcessor
|
||||
.Setup(x => x.GetTweetsAsync(
|
||||
It.IsAny<BufferBlock<TweetToDelete>>(),
|
||||
It.IsAny<CancellationToken>()))
|
||||
.Returns(Task.Delay(0));
|
||||
|
||||
var deleteTweetsProcessor = new Mock<IDeleteTweetsProcessor>(MockBehavior.Strict);
|
||||
var saveDeletedTweetStatusProcessor = new Mock<ISaveDeletedTweetStatusProcessor>(MockBehavior.Strict);
|
||||
var logger = new Mock<ILogger<TweetCleanUpPipeline>>();
|
||||
|
||||
#endregion
|
||||
|
||||
var pipeline = new TweetCleanUpPipeline(retrieveTweetsToDeleteProcessor.Object, deleteTweetsProcessor.Object, saveDeletedTweetStatusProcessor.Object, logger.Object);
|
||||
await pipeline.ExecuteAsync(ct.Token);
|
||||
|
||||
#region Validations
|
||||
retrieveTweetsToDeleteProcessor.VerifyAll();
|
||||
deleteTweetsProcessor.VerifyAll();
|
||||
saveDeletedTweetStatusProcessor.VerifyAll();
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue