public async Task GetDistro_WhenInvoked_LogsMethodInvoked() { var foldingUsers = new FoldingUser[0]; statsDownloadApiDataStoreServiceMock.GetFoldingMembers(startDateMock, endDateMock).Returns(foldingUsers); await systemUnderTest.GetDistro(startDateMock, endDateMock, amountMock); Received.InOrder(() => { loggingServiceMock.LogMethodInvoked(nameof(systemUnderTest.GetDistro)); statsDownloadApiTokenDistributionServiceMock.GetDistro(amountMock, foldingUsers); loggingServiceMock.LogMethodFinished(nameof(systemUnderTest.GetDistro)); }); }
public async Task GetDistro_WhenInvoked_ReturnsSuccessGetDistroResponse() { var foldingUsers = new FoldingUser[0]; var distro = new[] { new DistroUser(null, 1, 2, 0.12345678m), new DistroUser(null, 3, 4, 100m) }; statsDownloadApiDataStoreServiceMock.GetFoldingMembers(startDateMock, endDateMock).Returns(foldingUsers); statsDownloadApiTokenDistributionServiceMock.GetDistro(amountMock, foldingUsers).Returns(distro); GetDistroResponse actual = await InvokeGetDistro(); Assert.That(actual.Success, Is.True); Assert.That(actual.Errors, Is.Null); Assert.That(actual.ErrorCount, Is.Null); Assert.That(actual.FirstErrorCode, Is.EqualTo(ApiErrorCode.None)); Assert.That(actual.Distro, Is.EqualTo(distro)); Assert.That(actual.TotalPoints, Is.EqualTo(4)); Assert.That(actual.TotalWorkUnits, Is.EqualTo(6)); Assert.That(actual.TotalDistro, Is.EqualTo(100.12345678)); }
private FoldingUser[] GetFoldingUsers(ParseResults firstFileResults, ParseResults lastFileResults) { loggingService.LogMethodInvoked(); int length = lastFileResults.UsersData.Count(); var foldingUsers = new List <FoldingUser>(length); foreach (UserData userData in lastFileResults.UsersData) { UserData previous = firstFileResults.UsersData.FirstOrDefault(user => user.Name == userData.Name && user.TeamNumber == userData.TeamNumber); if (previous is UserData) { var user = new FoldingUser(userData.FriendlyName, userData.BitcoinAddress, userData.TotalPoints - previous.TotalPoints, userData.TotalWorkUnits - previous.TotalWorkUnits); if (user.PointsGained < 0) { throw new InvalidDistributionState( "Negative points earned was detected for a user. There may be an issue with the database state or the stat files download. Contact development"); } if (user.WorkUnitsGained < 0) { throw new InvalidDistributionState( "Negative work units earned was detected for a user. There may be an issue with the database state or the stat files download. Contact development"); } foldingUsers.Add(user); } else { foldingUsers.Add(new FoldingUser(userData.FriendlyName, userData.BitcoinAddress, userData.TotalPoints, userData.TotalWorkUnits)); } } loggingService.LogMethodFinished(); return(foldingUsers.ToArray()); }
private void AddingUserToDistro(int amount, List <DistroUser> distro, long totalPoints, FoldingUser foldingUser) { if (distro.Exists(user => user.BitcoinAddress == foldingUser.BitcoinAddress)) { DistroUser previousUser = distro.Find(user => user.BitcoinAddress == foldingUser.BitcoinAddress); DistroUser combinedUser = NewDistroUser(amount, totalPoints, foldingUser.BitcoinAddress, previousUser.PointsGained + foldingUser.PointsGained, previousUser.WorkUnitsGained + foldingUser.WorkUnitsGained); distro.Remove(previousUser); distro.Add(combinedUser); } else { DistroUser distroUser = NewDistroUser(amount, totalPoints, foldingUser.BitcoinAddress, foldingUser.PointsGained, foldingUser.WorkUnitsGained); distro.Add(distroUser); } }