public async Task GetDistro_WhenZeroAmountIsProvided_ReturnsZeroAmountResponse() { GetDistroResponse actual = await InvokeGetDistro(startDateMock, endDateMock, 0); Assert.That(actual.Success, Is.False); Assert.That(actual.Errors?.Count, Is.EqualTo(1)); Assert.That(actual.Errors?[0].ErrorCode, Is.EqualTo(ApiErrorCode.ZeroAmount)); Assert.That(actual.Errors?[0].ErrorMessage, Is.EqualTo(Constants.ErrorMessages.ZeroAmountMessage)); }
public async Task GetDistro_WhenStartDateIsLaterThanEndDate_ReturnsInvalidDateRangeResponse() { GetDistroResponse actual = await InvokeGetDistro(startDateMock, endDateMock.AddDays(-1), amountMock); Assert.That(actual.Success, Is.False); Assert.That(actual.Errors?.Count, Is.EqualTo(1)); Assert.That(actual.Errors?[0].ErrorCode, Is.EqualTo(ApiErrorCode.InvalidDateRange)); Assert.That(actual.Errors?[0].ErrorMessage, Is.EqualTo(Constants.ErrorMessages.InvalidDateRangeMessage)); }
public async Task GetDistro_WhenNoStartDateIsProvided_ReturnsNoStartDateResponse() { GetDistroResponse actual = await InvokeGetDistro(null, endDateMock, amountMock); Assert.That(actual.Success, Is.False); Assert.That(actual.Errors?.Count, Is.EqualTo(1)); Assert.That(actual.Errors?[0].ErrorCode, Is.EqualTo(ApiErrorCode.NoStartDate)); Assert.That(actual.Errors?[0].ErrorMessage, Is.EqualTo(Constants.ErrorMessages.NoStartDateMessage)); }
public async Task GetDistro_WhenEndDateInputIsTodayOrFutureDate_ReturnsEndDateUnsearchableResponse() { GetDistroResponse actual = await InvokeGetDistro(startDateMock, DateTime.UtcNow, amountMock); Assert.That(actual.Success, Is.False); Assert.That(actual.Errors?.Count, Is.EqualTo(1)); Assert.That(actual.Errors?[0].ErrorCode, Is.EqualTo(ApiErrorCode.EndDateUnsearchable)); Assert.That(actual.Errors?[0].ErrorMessage, Is.EqualTo(Constants.ErrorMessages.EndDateUnsearchableMessage)); }
public async Task GetDistro_WhenDatabaseIsUnavailable_ReturnsDatabaseUnavailableResponse() { statsDownloadApiDatabaseServiceMock .IsAvailable().Returns((false, DatabaseFailedReason.DatabaseUnavailable)); GetDistroResponse actual = await InvokeGetDistro(); Assert.That(actual.Success, Is.False); Assert.That(actual.Errors?.Count, Is.EqualTo(1)); Assert.That(actual.Errors?[0].ErrorCode, Is.EqualTo(ApiErrorCode.DatabaseUnavailable)); Assert.That(actual.Errors?[0].ErrorMessage, Is.EqualTo(Constants.ErrorMessages.DatabaseUnavailableMessage)); }
public async Task GetDistro_WhenErrorsOccurs_ReturnsErrorResponse() { statsDownloadApiDatabaseServiceMock .IsAvailable().Returns((false, DatabaseFailedReason.DatabaseUnavailable)); GetDistroResponse actual = await InvokeGetDistro(null, null, amountMock); Assert.That(actual.Success, Is.False); Assert.That(actual.Errors?.Count, Is.EqualTo(3)); Assert.That(actual.FirstErrorCode, Is.EqualTo(ApiErrorCode.NoStartDate)); Assert.That(actual.DistroCount, Is.Null); Assert.That(actual.Distro, Is.Null); Assert.That(actual.TotalPoints, Is.Null); Assert.That(actual.TotalWorkUnits, Is.Null); Assert.That(actual.TotalDistro, Is.Null); }
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)); }
public async Task <GetDistroResponse> GetDistro(DateTime?startDate, DateTime?endDate, int?amount) { loggingService.LogMethodInvoked(); IList <ApiError> errors = new List <ApiError>(); bool isNotPreparedToRun = await IsNotPreparedToRunDistro(startDate, endDate, amount, errors); if (isNotPreparedToRun) { loggingService.LogMethodFinished(); return(new GetDistroResponse(errors)); } IList <FoldingUser> foldingMembers = await GetFoldingMembers(startDate, endDate); GetDistroResponse response = GetDistro(amount, foldingMembers); loggingService.LogMethodFinished(); return(response); }