fix tests

This commit is contained in:
Nicolas Constant 2022-02-07 19:33:08 -05:00
parent 662f97e53c
commit d1c5a59247
No known key found for this signature in database
GPG key ID: 1E9F677FB01A5688
2 changed files with 306 additions and 20 deletions

View file

@ -45,14 +45,17 @@ namespace BirdsiteLive.Pipeline.Processors
catch (UserNotFoundException) catch (UserNotFoundException)
{ {
await ProcessNotFoundUserAsync(user); await ProcessNotFoundUserAsync(user);
continue;
} }
catch (UserHasBeenSuspendedException) catch (UserHasBeenSuspendedException)
{ {
await ProcessNotFoundUserAsync(user); await ProcessNotFoundUserAsync(user);
continue;
} }
catch (RateLimitExceededException) catch (RateLimitExceededException)
{ {
await ProcessRateLimitExceededAsync(user); await ProcessRateLimitExceededAsync(user);
continue;
} }
catch (Exception) catch (Exception)
{ {

View file

@ -159,25 +159,14 @@ namespace BirdsiteLive.Pipeline.Tests.Processors
twitterUserServiceMock twitterUserServiceMock
.Setup(x => x.GetUser(It.Is<string>(y => y == acct2))) .Setup(x => x.GetUser(It.Is<string>(y => y == acct2)))
.Returns((TwitterUser) null); .Throws(new UserNotFoundException());
twitterUserServiceMock
.Setup(x => x.PurgeUser(It.Is<string>(y => y == acct2)));
var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict); var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict);
twitterUserDalMock
.Setup(x => x.GetTwitterUserAsync(It.Is<string>(y => y == acct2)))
.ReturnsAsync(new SyncTwitterUser
{
Id = userId2,
FetchingErrorCount = 0
});
twitterUserDalMock
.Setup(x => x.UpdateTwitterUserAsync(It.Is<SyncTwitterUser>(y => y.Id == userId2 && y.FetchingErrorCount == 1)))
.Returns(Task.CompletedTask);
var removeTwitterAccountActionMock = new Mock<IRemoveTwitterAccountAction>(MockBehavior.Strict); var removeTwitterAccountActionMock = new Mock<IRemoveTwitterAccountAction>(MockBehavior.Strict);
removeTwitterAccountActionMock
.Setup(x => x.ProcessAsync(It.Is<SyncTwitterUser>(y => y.Acct == acct2)))
.Returns(Task.CompletedTask);
#endregion #endregion
var processor = new RefreshTwitterUserStatusProcessor(twitterUserServiceMock.Object, twitterUserDalMock.Object, removeTwitterAccountActionMock.Object, settings); var processor = new RefreshTwitterUserStatusProcessor(twitterUserServiceMock.Object, twitterUserDalMock.Object, removeTwitterAccountActionMock.Object, settings);
@ -194,7 +183,71 @@ namespace BirdsiteLive.Pipeline.Tests.Processors
} }
[TestMethod] [TestMethod]
public async Task ProcessAsync_Unfound_OverThreshold_Test() public async Task ProcessAsync_Suspended_Test()
{
#region Stubs
var userId1 = 1;
var acct1 = "user1";
var userId2 = 2;
var acct2 = "user2";
var users = new List<SyncTwitterUser>
{
new SyncTwitterUser
{
Id = userId1,
Acct = acct1
},
new SyncTwitterUser
{
Id = userId2,
Acct = acct2
}
};
var settings = new InstanceSettings
{
FailingTwitterUserCleanUpThreshold = 300
};
#endregion
#region Mocks
var twitterUserServiceMock = new Mock<ICachedTwitterUserService>(MockBehavior.Strict);
twitterUserServiceMock
.Setup(x => x.GetUser(It.Is<string>(y => y == acct1)))
.Returns(new TwitterUser
{
Protected = false
});
twitterUserServiceMock
.Setup(x => x.GetUser(It.Is<string>(y => y == acct2)))
.Throws(new UserHasBeenSuspendedException());
var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict);
var removeTwitterAccountActionMock = new Mock<IRemoveTwitterAccountAction>(MockBehavior.Strict);
removeTwitterAccountActionMock
.Setup(x => x.ProcessAsync(It.Is<SyncTwitterUser>(y => y.Acct == acct2)))
.Returns(Task.CompletedTask);
#endregion
var processor = new RefreshTwitterUserStatusProcessor(twitterUserServiceMock.Object, twitterUserDalMock.Object, removeTwitterAccountActionMock.Object, settings);
var result = await processor.ProcessAsync(users.ToArray(), CancellationToken.None);
#region Validations
Assert.AreEqual(1, result.Length);
Assert.IsTrue(result.Any(x => x.User.Id == userId1));
twitterUserServiceMock.VerifyAll();
twitterUserDalMock.VerifyAll();
removeTwitterAccountActionMock.VerifyAll();
#endregion
}
[TestMethod]
public async Task ProcessAsync_Error_Test()
{ {
#region Stubs #region Stubs
var userId1 = 1; var userId1 = 1;
@ -236,8 +289,83 @@ namespace BirdsiteLive.Pipeline.Tests.Processors
.Setup(x => x.GetUser(It.Is<string>(y => y == acct2))) .Setup(x => x.GetUser(It.Is<string>(y => y == acct2)))
.Returns((TwitterUser)null); .Returns((TwitterUser)null);
//twitterUserServiceMock
// .Setup(x => x.PurgeUser(It.Is<string>(y => y == acct2)));
var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict);
twitterUserDalMock
.Setup(x => x.GetTwitterUserAsync(It.Is<string>(y => y == acct2)))
.ReturnsAsync(new SyncTwitterUser
{
Id = userId2,
FetchingErrorCount = 0
});
twitterUserDalMock
.Setup(x => x.UpdateTwitterUserAsync(It.Is<SyncTwitterUser>(y => y.Id == userId2 && y.FetchingErrorCount == 1)))
.Returns(Task.CompletedTask);
var removeTwitterAccountActionMock = new Mock<IRemoveTwitterAccountAction>(MockBehavior.Strict);
#endregion
var processor = new RefreshTwitterUserStatusProcessor(twitterUserServiceMock.Object, twitterUserDalMock.Object, removeTwitterAccountActionMock.Object, settings);
var result = await processor.ProcessAsync(users.ToArray(), CancellationToken.None);
#region Validations
Assert.AreEqual(1, result.Length);
Assert.IsTrue(result.Any(x => x.User.Id == userId1));
twitterUserServiceMock.VerifyAll();
twitterUserDalMock.VerifyAll();
removeTwitterAccountActionMock.VerifyAll();
#endregion
}
[TestMethod]
public async Task ProcessAsync_Error_OverThreshold_Test()
{
#region Stubs
var userId1 = 1;
var acct1 = "user1";
var userId2 = 2;
var acct2 = "user2";
var users = new List<SyncTwitterUser>
{
new SyncTwitterUser
{
Id = userId1,
Acct = acct1
},
new SyncTwitterUser
{
Id = userId2,
Acct = acct2
}
};
var settings = new InstanceSettings
{
FailingTwitterUserCleanUpThreshold = 300
};
#endregion
#region Mocks
var twitterUserServiceMock = new Mock<ICachedTwitterUserService>(MockBehavior.Strict);
twitterUserServiceMock twitterUserServiceMock
.Setup(x => x.PurgeUser(It.Is<string>(y => y == acct2))); .Setup(x => x.GetUser(It.Is<string>(y => y == acct1)))
.Returns(new TwitterUser
{
Protected = false
});
twitterUserServiceMock
.Setup(x => x.GetUser(It.Is<string>(y => y == acct2)))
.Returns((TwitterUser)null);
//twitterUserServiceMock
// .Setup(x => x.PurgeUser(It.Is<string>(y => y == acct2)));
var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict); var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict);
twitterUserDalMock twitterUserDalMock
@ -313,7 +441,22 @@ namespace BirdsiteLive.Pipeline.Tests.Processors
Protected = true Protected = true
}); });
//twitterUserServiceMock
// .Setup(x => x.PurgeUser(It.Is<string>(y => y == acct2)));
var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict); var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict);
twitterUserDalMock
.Setup(x => x.GetTwitterUserAsync(It.Is<string>(y => y == acct2)))
.ReturnsAsync(new SyncTwitterUser
{
Id = userId2,
FetchingErrorCount = 0
});
twitterUserDalMock
.Setup(x => x.UpdateTwitterUserAsync(It.Is<SyncTwitterUser>(y => y.Id == userId2 && y.FetchingErrorCount == 1)))
.Returns(Task.CompletedTask);
var removeTwitterAccountActionMock = new Mock<IRemoveTwitterAccountAction>(MockBehavior.Strict); var removeTwitterAccountActionMock = new Mock<IRemoveTwitterAccountAction>(MockBehavior.Strict);
#endregion #endregion
@ -331,7 +474,147 @@ namespace BirdsiteLive.Pipeline.Tests.Processors
} }
[TestMethod] [TestMethod]
public async Task ProcessAsync_Unfound_NotInit_Test() public async Task ProcessAsync_Protected_OverThreshold_Test()
{
#region Stubs
var userId1 = 1;
var acct1 = "user1";
var userId2 = 2;
var acct2 = "user2";
var users = new List<SyncTwitterUser>
{
new SyncTwitterUser
{
Id = userId1,
Acct = acct1
},
new SyncTwitterUser
{
Id = userId2,
Acct = acct2
}
};
var settings = new InstanceSettings
{
FailingTwitterUserCleanUpThreshold = 300
};
#endregion
#region Mocks
var twitterUserServiceMock = new Mock<ICachedTwitterUserService>(MockBehavior.Strict);
twitterUserServiceMock
.Setup(x => x.GetUser(It.Is<string>(y => y == acct1)))
.Returns(new TwitterUser
{
Protected = false
});
twitterUserServiceMock
.Setup(x => x.GetUser(It.Is<string>(y => y == acct2)))
.Returns(new TwitterUser
{
Protected = true
});
//twitterUserServiceMock
// .Setup(x => x.PurgeUser(It.Is<string>(y => y == acct2)));
var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict);
twitterUserDalMock
.Setup(x => x.GetTwitterUserAsync(It.Is<string>(y => y == acct2)))
.ReturnsAsync(new SyncTwitterUser
{
Id = userId2,
FetchingErrorCount = 500
});
var removeTwitterAccountActionMock = new Mock<IRemoveTwitterAccountAction>(MockBehavior.Strict);
removeTwitterAccountActionMock
.Setup(x => x.ProcessAsync(It.Is<SyncTwitterUser>(y => y.Id == userId2)))
.Returns(Task.CompletedTask);
#endregion
var processor = new RefreshTwitterUserStatusProcessor(twitterUserServiceMock.Object, twitterUserDalMock.Object, removeTwitterAccountActionMock.Object, settings);
var result = await processor.ProcessAsync(users.ToArray(), CancellationToken.None);
#region Validations
Assert.AreEqual(1, result.Length);
Assert.IsTrue(result.Any(x => x.User.Id == userId1));
twitterUserServiceMock.VerifyAll();
twitterUserDalMock.VerifyAll();
removeTwitterAccountActionMock.VerifyAll();
#endregion
}
//[TestMethod]
//public async Task ProcessAsync_Protected_Test()
//{
// #region Stubs
// var userId1 = 1;
// var acct1 = "user1";
// var userId2 = 2;
// var acct2 = "user2";
// var users = new List<SyncTwitterUser>
// {
// new SyncTwitterUser
// {
// Id = userId1,
// Acct = acct1
// },
// new SyncTwitterUser
// {
// Id = userId2,
// Acct = acct2
// }
// };
// var settings = new InstanceSettings
// {
// FailingTwitterUserCleanUpThreshold = 300
// };
// #endregion
// #region Mocks
// var twitterUserServiceMock = new Mock<ICachedTwitterUserService>(MockBehavior.Strict);
// twitterUserServiceMock
// .Setup(x => x.GetUser(It.Is<string>(y => y == acct1)))
// .Returns(new TwitterUser
// {
// Protected = false
// });
// twitterUserServiceMock
// .Setup(x => x.GetUser(It.Is<string>(y => y == acct2)))
// .Returns(new TwitterUser
// {
// Protected = true
// });
// var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict);
// var removeTwitterAccountActionMock = new Mock<IRemoveTwitterAccountAction>(MockBehavior.Strict);
// #endregion
// var processor = new RefreshTwitterUserStatusProcessor(twitterUserServiceMock.Object, twitterUserDalMock.Object, removeTwitterAccountActionMock.Object, settings);
// var result = await processor.ProcessAsync(users.ToArray(), CancellationToken.None);
// #region Validations
// Assert.AreEqual(1, result.Length);
// Assert.IsTrue(result.Any(x => x.User.Id == userId1));
// twitterUserServiceMock.VerifyAll();
// twitterUserDalMock.VerifyAll();
// removeTwitterAccountActionMock.VerifyAll();
// #endregion
//}
[TestMethod]
public async Task ProcessAsync_Error_NotInit_Test()
{ {
#region Stubs #region Stubs
var userId1 = 1; var userId1 = 1;
@ -361,8 +644,8 @@ namespace BirdsiteLive.Pipeline.Tests.Processors
.Setup(x => x.GetUser(It.Is<string>(y => y == acct1))) .Setup(x => x.GetUser(It.Is<string>(y => y == acct1)))
.Returns((TwitterUser)null); .Returns((TwitterUser)null);
twitterUserServiceMock //twitterUserServiceMock
.Setup(x => x.PurgeUser(It.Is<string>(y => y == acct1))); // .Setup(x => x.PurgeUser(It.Is<string>(y => y == acct1)));
var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict); var twitterUserDalMock = new Mock<ITwitterUserDal>(MockBehavior.Strict);
twitterUserDalMock twitterUserDalMock