public async Task Should_return_error_items_in_request_exception()
        {
            var item1 = new JudiciaryPersonRequest {
                Id = Guid.NewGuid(), Email = "*****@*****.**", Fullname = "a", Surname = "b", Title = "c", KnownAs = "d", PersonalCode = "123", PostNominals = "nom1"
            };
            var request = new List <JudiciaryPersonRequest> {
                item1
            };

            _queryHandlerMock
            .Setup(x => x.Handle <GetJudiciaryPersonByExternalRefIdQuery, JudiciaryPerson>(It.IsAny <GetJudiciaryPersonByExternalRefIdQuery>()))
            .ThrowsAsync(new Exception("Error"));

            var result = await _controller.BulkJudiciaryPersonsAsync(request);

            result.Should().NotBeNull();
            var objectResult = result as ObjectResult;

            objectResult.Should().NotBeNull();
            objectResult.StatusCode.Should().Be((int)HttpStatusCode.OK);
            var data = objectResult.Value as BulkJudiciaryPersonResponse;

            data.Should().NotBeNull();
            data.ErroredRequests.Count.Should().Be(1);
            data.ErroredRequests[0].JudiciaryPersonRequest.Should().BeEquivalentTo(item1);

            _commandHandlerMock.Verify(c => c.Handle(It.IsAny <AddJudiciaryPersonCommand>()), Times.Never);
        }
        public async Task Should_return_ok_result_updating_item()
        {
            var item1 = new JudiciaryPersonRequest {
                Id = Guid.NewGuid(), Email = "*****@*****.**", Fullname = "a", Surname = "b", Title = "c", KnownAs = "d", PersonalCode = "123", PostNominals = "nom1", HasLeft = true
            };
            var retrievedPerson1 = new JudiciaryPerson(item1.Id, item1.PersonalCode, item1.Title, item1.KnownAs, item1.Surname, item1.Fullname, item1.PostNominals, item1.Email, item1.HasLeft);
            var request          = new List <JudiciaryPersonRequest> {
                item1
            };

            _queryHandlerMock
            .Setup(x => x.Handle <GetJudiciaryPersonByExternalRefIdQuery, JudiciaryPerson>(It.IsAny <GetJudiciaryPersonByExternalRefIdQuery>()))
            .ReturnsAsync(retrievedPerson1);

            var result = await _controller.BulkJudiciaryPersonsAsync(request);

            result.Should().NotBeNull();
            var objectResult = result as ObjectResult;

            objectResult.Should().NotBeNull();
            objectResult.StatusCode.Should().Be((int)HttpStatusCode.OK);
            var data = objectResult.Value as BulkJudiciaryPersonResponse;

            data.Should().NotBeNull();
            data.ErroredRequests.Count.Should().Be(0);

            _commandHandlerMock.Verify(c => c.Handle(It.Is <UpdateJudiciaryPersonByExternalRefIdCommand>
                                                     (
                                                         c => c.Email == item1.Email && c.Fullname == item1.Fullname && c.Surname == item1.Surname &&
                                                         c.Title == item1.Title && c.KnownAs == item1.KnownAs && c.PersonalCode == item1.PersonalCode &&
                                                         c.PostNominals == item1.PostNominals && c.ExternalRefId == item1.Id
                                                     )));
        }
        public async Task Should_return_error_items_in_request_for_bad_request_no_email()
        {
            var requestNoEmail = new JudiciaryPersonRequest
            {
                Id           = Guid.NewGuid(),
                Fullname     = "a",
                Surname      = "b",
                Title        = "c",
                KnownAs      = "d",
                PersonalCode = "123",
                PostNominals = "nom1"
            };

            var result = await _controller.BulkJudiciaryPersonsAsync(new List <JudiciaryPersonRequest> {
                requestNoEmail
            });

            result.Should().NotBeNull();
            var objectResult = result as ObjectResult;

            objectResult.Should().NotBeNull();
            objectResult.StatusCode.Should().Be((int)HttpStatusCode.OK);
            var data = objectResult.Value as BulkJudiciaryPersonResponse;

            data.Should().NotBeNull();
            data.ErroredRequests.Count.Should().Be(1);
            data.ErroredRequests[0].JudiciaryPersonRequest.Should().BeEquivalentTo(requestNoEmail);
        }