Skip to content

Commit

Permalink
VIH-10634 Fix error cancelling last active day of hearing (#1381)
Browse files Browse the repository at this point in the history
* Fix error cancelling all days in a multi-day hearing

* Add more test assertions
  • Loading branch information
oliver-scott committed Apr 19, 2024
1 parent cfc4342 commit dfa9a0d
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,102 @@ public async Task Should_return_ok_status_for_multi_day_hearing_V2()
response.MultiDayHearingLastDayScheduledDateTime.Should().Be(expectedHearingLastDay.ScheduledDateTime);
response.HearingsInGroup.Should().BeEquivalentTo(multiDayHearings.Select(x => x.Map()));
}

[Test]
public async Task Should_return_ok_status_for_cancelled_multi_day_hearing_V1()
{
// Scenario - all days in the multi day hearing are cancelled

// Arrange
_mocker.Mock<IFeatureToggles>().Setup(x => x.UseV2Api())
.Returns(false);
var groupId = _vhExistingHearingV1.Id;
_vhExistingHearingV1.GroupId = groupId;
_vhExistingHearingV1.Status = BookingStatus.Cancelled;
_mocker.Mock<IBookingsApiClient>().Setup(x => x.GetHearingDetailsByIdAsync(It.IsAny<Guid>()))
.ReturnsAsync(_vhExistingHearingV1);

var dates = new List<DateTime>
{
_vhExistingHearingV1.ScheduledDateTime.AddDays(1),
_vhExistingHearingV1.ScheduledDateTime.AddDays(2),
_vhExistingHearingV1.ScheduledDateTime.AddDays(3),
_vhExistingHearingV1.ScheduledDateTime.AddDays(4),
};
var multiDayHearings = new List<BookingsApi.Contract.V1.Responses.HearingDetailsResponse>
{
_vhExistingHearingV1
};
multiDayHearings.AddRange(dates.Select(date => new BookingsApi.Contract.V1.Responses.HearingDetailsResponse
{
Id = Guid.NewGuid(),
ScheduledDateTime = date,
ScheduledDuration = _vhExistingHearingV2.ScheduledDuration,
GroupId = groupId,
Status = BookingStatus.Cancelled
}));
_mocker.Mock<IBookingsApiClient>().Setup(x => x.GetHearingsByGroupIdAsync(groupId))
.ReturnsAsync(multiDayHearings);

// Act
var result = await _controller.GetHearingById(_v1HearingId);

// Assert
var okRequestResult = (OkObjectResult) result;
okRequestResult.StatusCode.Should().Be(200);

var response = (HearingDetailsResponse) ((OkObjectResult) result).Value;
response.MultiDayHearingLastDayScheduledDateTime.Should().BeNull();
response.HearingsInGroup.Should().BeEquivalentTo(multiDayHearings.Select(x => x.Map()));
}

[Test]
public async Task Should_return_ok_status_for_cancelled_multi_day_hearing_V2()
{
// Scenario - all days in the multi day hearing are cancelled

// Arrange
_mocker.Mock<IFeatureToggles>().Setup(x => x.UseV2Api())
.Returns(true);
var groupId = _vhExistingHearingV2.Id;
_vhExistingHearingV2.GroupId = groupId;
_vhExistingHearingV2.Status = BookingStatusV2.Cancelled;
_mocker.Mock<IBookingsApiClient>().Setup(x => x.GetHearingDetailsByIdV2Async(It.IsAny<Guid>()))
.ReturnsAsync(_vhExistingHearingV2);

var dates = new List<DateTime>
{
_vhExistingHearingV2.ScheduledDateTime.AddDays(1),
_vhExistingHearingV2.ScheduledDateTime.AddDays(2),
_vhExistingHearingV2.ScheduledDateTime.AddDays(3),
_vhExistingHearingV2.ScheduledDateTime.AddDays(4),
};
var multiDayHearings = new List<HearingDetailsResponseV2>
{
_vhExistingHearingV2
};
multiDayHearings.AddRange(dates.Select(date => new HearingDetailsResponseV2
{
Id = Guid.NewGuid(),
ScheduledDateTime = date,
ScheduledDuration = _vhExistingHearingV2.ScheduledDuration,
GroupId = groupId,
Status = BookingStatusV2.Cancelled
}));
_mocker.Mock<IBookingsApiClient>().Setup(x => x.GetHearingsByGroupIdV2Async(groupId))
.ReturnsAsync(multiDayHearings);

// Act
var result = await _controller.GetHearingById(_v2HearingId);

// Assert
var okRequestResult = (OkObjectResult) result;
okRequestResult.StatusCode.Should().Be(200);

var response = (HearingDetailsResponse) ((OkObjectResult) result).Value;
response.MultiDayHearingLastDayScheduledDateTime.Should().BeNull();
response.HearingsInGroup.Should().BeEquivalentTo(multiDayHearings.Select(x => x.Map()));
}

[Test]
public async Task Should_return_bad_request_if_hearing_id_is_empty()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ public static HearingDetailsResponse Map(this V1.HearingDetailsResponse hearingD
h.Status != BookingsApi.Contract.V1.Enums.BookingStatus.Cancelled &&
h.Status != BookingsApi.Contract.V1.Enums.BookingStatus.Failed)
.ToList();
response.MultiDayHearingLastDayScheduledDateTime = activeHearings.ScheduledDateTimeOfLastHearing();
if (activeHearings.Any())
{
response.MultiDayHearingLastDayScheduledDateTime = activeHearings.ScheduledDateTimeOfLastHearing();
}
response.HearingsInGroup = hearingsInGroup
.OrderBy(h => h.ScheduledDateTime)
.Select(h => h.Map())
Expand All @@ -105,7 +108,10 @@ public static HearingDetailsResponse Map(this V2.HearingDetailsResponseV2 hearin
h.Status != BookingStatusV2.Cancelled &&
h.Status != BookingStatusV2.Failed)
.ToList();
response.MultiDayHearingLastDayScheduledDateTime = activeHearings.ScheduledDateTimeOfLastHearing();
if (activeHearings.Any())
{
response.MultiDayHearingLastDayScheduledDateTime = activeHearings.ScheduledDateTimeOfLastHearing();
}
response.HearingsInGroup = hearingsInGroup
.OrderBy(h => h.ScheduledDateTime)
.Select(h => h.Map())
Expand Down

0 comments on commit dfa9a0d

Please sign in to comment.