public async void HandleAsync_WithValidOrganisationId_SetsStatusToComplete()
        {
            Guid organisationId = Guid.NewGuid();

            Organisation organisation = A.Dummy <Organisation>();

            A.CallTo(() => dataAccess.FetchOrganisationAsync(organisationId))
            .Returns(organisation);

            CompleteOrganisationAdminHandler handler = new CompleteOrganisationAdminHandler(authorization, this.dataAccess);

            CompleteOrganisationAdmin request = new CompleteOrganisationAdmin()
            {
                OrganisationId = organisationId
            };

            var result = await handler.HandleAsync(request);

            // Assert
            A.CallTo(() => dataAccess.FetchOrganisationAsync(organisationId))
            .MustHaveHappened(Repeated.Exactly.Once);

            Assert.Equal(OrganisationStatus.Complete, organisation.OrganisationStatus);

            A.CallTo(() => dataAccess.SaveAsync())
            .MustHaveHappened(Repeated.Exactly.Once);

            Assert.Equal(result, true);
        }
        public async void HandleAsync_InvalidOrganisationId_ThrowsException()
        {
            Guid   organisationId = Guid.NewGuid();
            string errorMessage   = $"No organisation was found with an ID of \"{organisationId}\".";

            CompleteOrganisationAdminHandler handler = new CompleteOrganisationAdminHandler(authorization, this.dataAccess);

            CompleteOrganisationAdmin request = new CompleteOrganisationAdmin()
            {
                OrganisationId = organisationId
            };

            A.CallTo(() => dataAccess.FetchOrganisationAsync(organisationId)).Throws(new Exception(errorMessage));

            Func <Task> action = async() => await handler.HandleAsync(request);

            Exception error = await Assert.ThrowsAsync <Exception>(action);

            Assert.Equal(errorMessage, error.Message);
        }