public async Task Then_If_The_Request_Is_Valid_The_Service_Is_Called(
            Guid returnId,
            CreateShortlistItemForUserRequest request,
            [Frozen] Mock <IValidator <CreateShortlistItemForUserRequest> > validator,
            [Frozen] Mock <IShortlistService> service,
            CreateShortlistItemForUserRequestHandler handler)
        {
            //Arrange
            validator
            .Setup(x => x.ValidateAsync(request))
            .ReturnsAsync(new ValidationResult( ));
            service.Setup(x => x.CreateShortlistItem(It.Is <Domain.Entities.Shortlist>(c =>
                                                                                       c.StandardId.Equals(request.StandardId) &&
                                                                                       c.Lat.Equals(request.Lat) &&
                                                                                       c.Long.Equals(request.Lon) &&
                                                                                       c.CourseSector.Equals(request.SectorSubjectArea) &&
                                                                                       c.LocationDescription.Equals(request.LocationDescription) &&
                                                                                       c.Ukprn.Equals(request.Ukprn) &&
                                                                                       c.ShortlistUserId.Equals(request.ShortlistUserId) &&
                                                                                       c.Id != Guid.Empty
                                                                                       ))).ReturnsAsync(returnId);

            //Act
            var actual = await handler.Handle(request, CancellationToken.None);

            //Assert
            actual.Should().Be(returnId);
        }
        public async Task Then_If_All_Required_Fields_Are_Populated_Then_Request_Is_Valid(
            CreateShortlistItemForUserRequest request,
            CreateShortlistItemForUserValidator validator)
        {
            //Act
            var actual = await validator.ValidateAsync(request);

            //Assert
            actual.IsValid().Should().BeTrue();
        }
        public async Task Then_If_The_SubjectSectorArea_Is_Null_Then_The_Request_Is_Invalid(
            CreateShortlistItemForUserRequest request,
            CreateShortlistItemForUserValidator validator)
        {
            //Arrange
            request.SectorSubjectArea = null;

            //Act
            var actual = await validator.ValidateAsync(request);

            //Assert
            actual.IsValid().Should().BeFalse();
            actual.ValidationDictionary.Should().ContainKey(nameof(request.SectorSubjectArea));
        }
        public async Task Then_If_The_ProviderUkprn_Is_Zero_Then_The_Request_Is_Invalid(
            CreateShortlistItemForUserRequest request,
            CreateShortlistItemForUserValidator validator)
        {
            //Arrange
            request.Ukprn = 0;

            //Act
            var actual = await validator.ValidateAsync(request);

            //Assert
            actual.IsValid().Should().BeFalse();
            actual.ValidationDictionary.Should().ContainKey(nameof(request.Ukprn));
        }
        public async Task Then_If_The_ShortlistId_Is_Empty_Guid_Then_The_Request_Is_Invalid(
            CreateShortlistItemForUserRequest request,
            CreateShortlistItemForUserValidator validator)
        {
            //Arrange
            request.ShortlistUserId = Guid.Empty;

            //Act
            var actual = await validator.ValidateAsync(request);

            //Assert
            actual.IsValid().Should().BeFalse();
            actual.ValidationDictionary.Should().ContainKey(nameof(request.ShortlistUserId));
        }
        public void Then_The_Request_Is_Validated_And_If_Not_Valid_Exception_Thrown(
            CreateShortlistItemForUserRequest request,
            [Frozen] Mock <IValidator <CreateShortlistItemForUserRequest> > validator,
            CreateShortlistItemForUserRequestHandler handler)
        {
            //Arrange
            validator
            .Setup(x => x.ValidateAsync(request))
            .ReturnsAsync(new ValidationResult {
                ValidationDictionary = { { "Error", "Some error" } }
            });

            //Act / Assert
            Assert.ThrowsAsync <ValidationException>(() => handler.Handle(request, CancellationToken.None));
        }