added tests
This commit is contained in:
parent
8a99f5ecce
commit
5b93c2b760
|
@ -72,5 +72,60 @@ namespace BirdsiteLive.Pipeline.Tests.Processors.TweetsCleanUp
|
||||||
}
|
}
|
||||||
#endregion
|
#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