Skip to content

Commit

Permalink
Remove obsolete validation in Admin Web
Browse files Browse the repository at this point in the history
  • Loading branch information
Shaed Parkar committed Oct 12, 2023
1 parent fad29db commit 7268064
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 562 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,9 @@ namespace AdminWebsite.UnitTests.Controllers.HearingsController
public class EditHearingTests
{
private EditHearingRequest _addEndpointToHearingRequest;
private EditHearingRequest _addEndpointToHearingRequestWithJudge;
private EditHearingRequest _editEndpointOnHearingRequestWithJudge;
private EditHearingRequest _removeEndpointOnHearingRequest;
private EditHearingRequest _addNewParticipantRequest;
private EditHearingRequest _switchJudgeRequest;
private EditHearingRequest _updateJudgeOtherInformationRequest;
private Mock<IBookingsApiClient> _bookingsApiClient;

private AdminWebsite.Controllers.HearingsController _controller;
Expand Down Expand Up @@ -220,37 +217,6 @@ public void Setup()
}
};

_addEndpointToHearingRequestWithJudge = new EditHearingRequest
{
Case = new EditCaseRequest { Name = "Case", Number = "123" },
Participants = new List<EditParticipantRequest>()
{
new EditParticipantRequest() {
Id = participantId1,
CaseRoleName = "judge",
HearingRoleName = HearingRoleName.Judge,
FirstName = "FirstName",
LastName = "LastName",
ContactEmail = "[email protected]",
DisplayName = "FirstName LastName",
LinkedParticipants = new List<LinkedParticipant>(),
OrganisationName = "Org1",
Representee = "Rep1",
TelephoneNumber = "+44 123 1234",
Title = "Mr",
MiddleNames = "MiddleNames"
}
},
Endpoints = new List<EditEndpointRequest>
{
new EditEndpointRequest { Id = null, DisplayName = "New Endpoint", DefenceAdvocateContactEmail = "[email protected]" },
new EditEndpointRequest { Id = endpointGuid1, DisplayName = "data1", DefenceAdvocateContactEmail = defenceAdvocate1 },
new EditEndpointRequest { Id = endpointGuid2, DisplayName = "data2", DefenceAdvocateContactEmail = defenceAdvocate2 },
new EditEndpointRequest { Id = endpointGuid3, DisplayName = "data3", DefenceAdvocateContactEmail = defenceAdvocate3 },
new EditEndpointRequest { Id = endpointGuid4, DisplayName = "data4", DefenceAdvocateContactEmail = defenceAdvocate4 }
}
};

_editEndpointOnHearingRequestWithJudge = new EditHearingRequest
{
Case = new EditCaseRequest
Expand Down Expand Up @@ -343,43 +309,6 @@ public void Setup()
CaseTypeName = "Unit Test",
ScheduledDateTime = DateTime.UtcNow.AddHours(3)
};

_switchJudgeRequest = new EditHearingRequest
{
Case = new EditCaseRequest
{
Name = "Case",
Number = "123"
},
Participants = new List<EditParticipantRequest>
{
new EditParticipantRequest
{
ContactEmail = "[email protected]",
FirstName = "Test_FirstName",
LastName = "Test_LastName",
HearingRoleName = HearingRoleName.Judge
}
}
};

_updateJudgeOtherInformationRequest = new EditHearingRequest
{
Case = new EditCaseRequest
{
Name = "Case",
Number = "123"
},
Participants = new List<EditParticipantRequest>
{
new EditParticipantRequest
{
Id = participantId1, CaseRoleName = "judge", HearingRoleName = HearingRoleName.Judge,
ContactEmail = "[email protected]", FirstName = "Judge"
}
},
OtherInformation = new OtherInformationDetails { JudgeEmail = "[email protected]", JudgePhone = "0845"}.ToOtherInformationString() // "|JudgeEmail|[email protected]|JudgePhone|0845"
};

_bookingsApiClient.Setup(x => x.GetHearingDetailsByIdAsync(It.IsAny<Guid>()))
.ReturnsAsync(_updatedExistingParticipantHearingOriginal);
Expand Down Expand Up @@ -466,9 +395,11 @@ public async Task Should_return_bad_request_if_case_is_not_given()
_addNewParticipantRequest.Case = null;

var result = await _controller.EditHearing(_validId, _addNewParticipantRequest);
var badRequestResult = (BadRequestObjectResult)result.Result;
var errors = (SerializableError)badRequestResult.Value;
errors["case"].Should().BeEquivalentTo(new[] { "Please provide valid case details" });
var objectResult = (ObjectResult)result.Result;
var validationProblems = (ValidationProblemDetails)objectResult.Value;

var errors = validationProblems.Errors;
errors["case"].Should().BeEquivalentTo("Please provide valid case details");
}

[Test]
Expand All @@ -482,113 +413,13 @@ public async Task Should_return_bad_request_if_no_participants_are_given()

_addNewParticipantRequest.Participants.Clear();
var result = await _controller.EditHearing(_validId, _addNewParticipantRequest);
var badRequestResult = (BadRequestObjectResult)result.Result;
var errors = (SerializableError)badRequestResult.Value;
errors["participants"].Should().BeEquivalentTo(new[] { "Please provide at least one participant" });
}

[Test]
public async Task Should_allow_switching_judge_prior_30_minutes_of_hearing_starting()
{
_existingHearingWithJudge.ScheduledDateTime = DateTime.UtcNow.AddMinutes(20);
_existingHearingWithJudge.Status = BookingStatus.Created;
_bookingsApiClient.SetupSequence(x => x.GetHearingDetailsByIdAsync(It.IsAny<Guid>()))
.ReturnsAsync(_existingHearingWithJudge)
.ReturnsAsync(_existingHearingWithJudge);
var result = await _controller.EditHearing(_validId, _switchJudgeRequest);

((ObjectResult)result.Result).StatusCode.Should().Be(200);
_bookingsApiClient.Verify(
x => x.UpdateHearingParticipantsAsync(It.IsAny<Guid>(), It.IsAny<UpdateHearingParticipantsRequest>()),
Times.Once);
_bookingsApiClient.Verify(x => x.UpdateHearingDetailsAsync(It.IsAny<Guid>(),
It.Is<UpdateHearingRequest>(u =>
!u.Cases.IsNullOrEmpty())),
Times.Once);
}

[Test]
public async Task Should_allow_updating_judge_other_information_prior_30_minutes_of_hearing_starting()
{
_existingHearingWithJudge.ScheduledDateTime = DateTime.UtcNow.AddMinutes(20);
_existingHearingWithJudge.Status = BookingStatus.Created;
_bookingsApiClient.SetupSequence(x => x.GetHearingDetailsByIdAsync(It.IsAny<Guid>()))
.ReturnsAsync(_existingHearingWithJudge)
.ReturnsAsync(_existingHearingWithJudge);
var result = await _controller.EditHearing(_validId, _updateJudgeOtherInformationRequest);
var objectResult = (ObjectResult)result.Result;
var validationProblems = (ValidationProblemDetails)objectResult.Value;

((ObjectResult)result.Result).StatusCode.Should().Be(200);
_bookingsApiClient.Verify(x => x.UpdateHearingParticipantsAsync(It.IsAny<Guid>(),
It.IsAny<UpdateHearingParticipantsRequest>()), Times.Once);
_bookingsApiClient.Verify(x => x.UpdateHearingDetailsAsync(It.IsAny<Guid>(),
It.Is<UpdateHearingRequest>(u => !u.Cases.IsNullOrEmpty())), Times.Once);
var errors = validationProblems.Errors;
errors["participants"].Should().Contain( "Please provide at least one participant");
}

[Test]
public async Task Should_allow_edit_confirmed_hearing_up_until_30_minutes_before_starting()
{
_updatedExistingParticipantHearingOriginal.ScheduledDateTime = DateTime.UtcNow.AddHours(1);
_addNewParticipantRequest.ScheduledDateTime = _updatedExistingParticipantHearingOriginal.ScheduledDateTime;
_updatedExistingParticipantHearingOriginal.Status = BookingStatus.Booked;
_bookingsApiClient.SetupSequence(x => x.GetHearingDetailsByIdAsync(It.IsAny<Guid>()))
.ReturnsAsync(_updatedExistingParticipantHearingOriginal)
.ReturnsAsync(_updatedExistingParticipantHearingOriginal)
.ReturnsAsync(_updatedExistingParticipantHearingOriginal);

var result = await _controller.EditHearing(_validId, _addNewParticipantRequest);

((OkObjectResult)result.Result).StatusCode.Should().Be(200);
_bookingsApiClient.Verify(
x
=> x.UpdateHearingParticipantsAsync(It.IsAny<Guid>(),
It.IsAny<UpdateHearingParticipantsRequest>()), Times.Once);
_bookingsApiClient.Verify(x => x.UpdateHearingDetailsAsync(It.IsAny<Guid>(),
It.Is<UpdateHearingRequest>(u => !u.Cases.IsNullOrEmpty())), Times.Once);
}

[Test]
public async Task Should_allow_only_participant_changes_if_hearing_starts_in_less_than_thirty_minutes()
{
_updatedExistingParticipantHearingOriginal.ScheduledDateTime = DateTime.UtcNow.AddHours(-1);
_addNewParticipantRequest = new EditHearingRequest
{
HearingRoomName = _updatedExistingParticipantHearingOriginal.HearingRoomName,
HearingVenueName = _updatedExistingParticipantHearingOriginal.HearingVenueName,
OtherInformation = _updatedExistingParticipantHearingOriginal.OtherInformation,
ScheduledDateTime = _updatedExistingParticipantHearingOriginal.ScheduledDateTime,
ScheduledDuration = _updatedExistingParticipantHearingOriginal.ScheduledDuration,
AudioRecordingRequired = _updatedExistingParticipantHearingOriginal.AudioRecordingRequired,
Case = new EditCaseRequest
{
Name = _updatedExistingParticipantHearingOriginal.Cases[0].Name,
Number = _updatedExistingParticipantHearingOriginal.Cases[0].Number,
},
Participants = _updatedExistingParticipantHearingOriginal.Participants.Select(EditParticipantRequestMapper.MapFrom).ToList()
};

_addNewParticipantRequest.Participants.Add(new EditParticipantRequest
{
ContactEmail = "[email protected]",
FirstName = "Test2_FirstName",
LastName = "Test2_LastName"
});
_bookingsApiClient.SetupSequence(x => x.GetHearingDetailsByIdAsync(It.IsAny<Guid>()))
.ReturnsAsync(_updatedExistingParticipantHearingOriginal)
.ReturnsAsync(_updatedExistingParticipantHearingOriginal)
.ReturnsAsync(_updatedExistingParticipantHearingOriginal);

var result = await _controller.EditHearing(_validId, _addNewParticipantRequest);

((OkObjectResult)result.Result).StatusCode.Should().Be(200);
_bookingsApiClient.Verify(
x => x.UpdateHearingParticipantsAsync(It.IsAny<Guid>(), It.IsAny<UpdateHearingParticipantsRequest>()),
Times.Once);
_bookingsApiClient.Verify(x => x.UpdateHearingDetailsAsync(It.IsAny<Guid>(),
It.Is<UpdateHearingRequest>(u =>
!u.Cases.IsNullOrEmpty())),
Times.Once);
}


[Test]
public async Task Should_return_not_found_if_hearing_is_missing()
{
Expand Down Expand Up @@ -906,32 +737,6 @@ public async Task Should_add_endpoint_if_new_endpoint_is_added_to_endpoint_list(
x => x.RemoveEndPointFromHearingAsync(It.IsAny<Guid>(), It.IsAny<Guid>()), Times.Never);
}

[Test]
public async Task Should_add_endpoint_if_new_endpoint_is_added_to_endpoint_list_prior_30_minutes_of_hearing_starting()
{
_existingHearingWithEndpointsOriginal.ScheduledDateTime = DateTime.UtcNow.AddMinutes(20);
_existingHearingWithEndpointsOriginal.Status = BookingStatus.Created;

_bookingsApiClient.Setup(x => x.GetHearingDetailsByIdAsync(It.IsAny<Guid>()))
.ReturnsAsync(_existingHearingWithEndpointsOriginal);

var result = await _controller.EditHearing(_validId, _addEndpointToHearingRequestWithJudge);

((OkObjectResult)result.Result).StatusCode.Should().Be(200);

_bookingsApiClient.Verify(
x => x.AddEndPointToHearingAsync(It.IsAny<Guid>(), It.IsAny<AddEndpointRequest>()), Times.Once);

_bookingsApiClient.Verify(x => x.UpdateHearingDetailsAsync(It.IsAny<Guid>(),
It.Is<UpdateHearingRequest>(u =>
!u.Cases.IsNullOrEmpty())), Times.Once);

_bookingsApiClient.Verify(x => x.UpdateDisplayNameForEndpointAsync(
It.IsAny<Guid>(), It.IsAny<Guid>(), It.IsAny<UpdateEndpointRequest>()), Times.Never);

_bookingsApiClient.Verify(x => x.RemoveEndPointFromHearingAsync(It.IsAny<Guid>(), It.IsAny<Guid>()), Times.Never);
}

[Test]
public async Task Should_update_endpoint_if_an_endpoint_is_updates_in_endpoint_list()
{
Expand All @@ -951,34 +756,6 @@ public async Task Should_update_endpoint_if_an_endpoint_is_updates_in_endpoint_l

}

[Test]
public async Task Should_update_endpoint_if_an_endpoint_is_updates_in_endpoint_list_prior_30_minutes_of_hearing_starting()
{
_existingHearingWithEndpointsOriginal.ScheduledDateTime = DateTime.UtcNow.AddMinutes(20);
_existingHearingWithEndpointsOriginal.Status = BookingStatus.Created;

_bookingsApiClient.Setup(x => x.GetHearingDetailsByIdAsync(It.IsAny<Guid>()))
.ReturnsAsync(_existingHearingWithEndpointsOriginal);

var result = await _controller.EditHearing(_validId, _editEndpointOnHearingRequestWithJudge);

((OkObjectResult)result.Result).StatusCode.Should().Be(200);

_bookingsApiClient.Verify(
x => x.AddEndPointToHearingAsync(It.IsAny<Guid>(), It.IsAny<AddEndpointRequest>()), Times.Never);

_bookingsApiClient.Verify(x => x.UpdateHearingDetailsAsync(It.IsAny<Guid>(),
It.Is<UpdateHearingRequest>(u =>
!u.Cases.IsNullOrEmpty())), Times.Once);

_bookingsApiClient.Verify(
x => x.UpdateDisplayNameForEndpointAsync(It.IsAny<Guid>(), It.IsAny<Guid>(),
It.IsAny<UpdateEndpointRequest>()), Times.Exactly(1));

_bookingsApiClient.Verify(
x => x.RemoveEndPointFromHearingAsync(It.IsAny<Guid>(), It.IsAny<Guid>()), Times.Never);
}

[Test]
public async Task Should_remove_endpoint_if_endpoint_is_removed_from_the_endpoint_list()
{
Expand Down Expand Up @@ -1283,7 +1060,6 @@ public async Task Should_add_a_new_participant_and_link_to_existing_interpreter_
_bookingsApiClient.Verify(x => x.UpdateHearingDetailsAsync(It.IsAny<Guid>(),
It.Is<UpdateHearingRequest>(u => !u.Cases.IsNullOrEmpty())), Times.Once);
}


[Test]
public async Task Should_create_a_new_judge_and_set_username_to_contact_email()
Expand Down
Loading

0 comments on commit 7268064

Please sign in to comment.