public IActionResult GetByPersonIdAndDateRange([FromQuery] ByPersonIdAndDateRangeRequest request) { try { DayOffsResponse response = _dayOffsClient.GetByPersonIdAndDateRange(request); LogData logData = new() { CallSide = nameof(DayOffsController), CallerMethodName = nameof(GetByPersonIdAndDateRange), CreatedOn = _dateTimeUtil.GetCurrentDateTime(), Request = request, Response = response }; _logger.AddLog(logData); return(Ok(response)); } catch (Exception ex) { LogData logData = new() { CallSide = nameof(DayOffsController), CallerMethodName = nameof(GetByPersonIdAndDateRange), CreatedOn = _dateTimeUtil.GetCurrentDateTime(), Request = request, Response = ex }; _logger.AddErrorLog(logData); return(InternalServerError()); } }
public void GetByPersonId_should_handle_exception() { // Arrange BaseMock.ShouldThrowException = true; ByPersonIdRequest request = new() { PersonId = _dayOff1.PersonId }; DayOffsResponse expectedResponse = new() { Status = new BaseResponse { Code = Code.UnknownError, ErrorMessage = "An error occured while loading day offs data" } }; LogData expectedLog = new() { CallSide = nameof(DayOffsService), CallerMethodName = nameof(_dayOffsService.GetByPersonId), CreatedOn = _dateTimeUtil.GetCurrentDateTime(), Request = request, Response = new Exception("Test exception") }; // Act DayOffsResponse actual = _dayOffsService.GetByPersonId(request, null).Result; // Assert Assert.AreEqual(expectedResponse, actual, "Response as expected"); _loggerMock.Verify(mocks => mocks.AddErrorLog(expectedLog), Times.Once); } [Test]
public void GetByPersonIdAndDateRange_should_return_response_from_grpc_client() { // Arrange ByPersonIdAndDateRangeRequest request = new() { Person = new ByPersonIdRequest { PersonId = 1 }, Range = new ByDateRangeRequest { From = Timestamp.FromDateTime(_dateTimeUtil.GetCurrentDateTime()), To = Timestamp.FromDateTime(_dateTimeUtil.GetCurrentDateTime().AddDays(10)) } }; DayOffsResponse response = new() { Status = new BaseResponse { Code = Code.Success, ErrorMessage = string.Empty } }; response.Data.Add(new DayOffData { IsPaid = true, PersonId = 1, CreatedOn = Timestamp.FromDateTime(_dateTimeUtil.GetCurrentDateTime()), DayOffType = 1 }); BaseMock.Response = response; LogData expectedLog = new() { CallSide = nameof(DayOffsController), CallerMethodName = nameof(_dayOffsController.GetByPersonIdAndDateRange), CreatedOn = _dateTimeUtil.GetCurrentDateTime(), Request = request, Response = response }; // Act ObjectResult actual = _dayOffsController.GetByPersonIdAndDateRange(request) as ObjectResult; DayOffsResponse actualData = actual.Value as DayOffsResponse; // Assert Assert.AreEqual(200, actual.StatusCode, "StatusCode as expected"); Assert.AreEqual(response, actualData, "Response data as expected"); _loggerMock.Verify(m => m.AddLog(expectedLog), Times.Once); _dayOffsClientMock.Verify(m => m.GetByPersonIdAndDateRange(request, null, null, new CancellationToken()), Times.Once); } [Test]
public void GetByPersonId_should_return_all_day_offs_by_specified_person() { // Arrange ByPersonIdRequest request = new() { PersonId = _dayOff1.PersonId }; DayOffsResponse expectedResponse = new() { Status = new BaseResponse { Code = Code.Success, ErrorMessage = string.Empty } }; expectedResponse.Data.Add(new DayOffData { Id = _dayOff1.Id, CreatedOn = Timestamp.FromDateTime(_dayOff1.CreatedOn), DayOffType = (int)_dayOff1.DayOffType, Hours = _dayOff1.Hours, IsPaid = _dayOff1.IsPaid, PersonId = _dayOff1.PersonId }); expectedResponse.Data.Add(new DayOffData { Id = _dayOff2.Id, CreatedOn = Timestamp.FromDateTime(_dayOff2.CreatedOn), DayOffType = (int)_dayOff2.DayOffType, Hours = _dayOff2.Hours, IsPaid = _dayOff2.IsPaid, PersonId = _dayOff2.PersonId }); LogData expectedLog = new() { CallSide = nameof(DayOffsService), CallerMethodName = nameof(_dayOffsService.GetByPersonId), CreatedOn = _dateTimeUtil.GetCurrentDateTime(), Request = request, Response = expectedResponse }; // Act DayOffsResponse actual = _dayOffsService.GetByPersonId(request, null).Result; // Assert Assert.AreEqual(expectedResponse, actual, "Response as expected"); _loggerMock.Verify(mocks => mocks.AddLog(expectedLog), Times.Once); } [Test]