public async Task JoinOrganisationHandler_UserAndOrganisationExist_ButResultIsUnsuccessful_ShouldVerifyAuthorization_AndShouldThrowInvalidOperationException()
        {
            A.CallTo(() => userContext.UserId)
            .Returns(Guid.NewGuid());

            A.CallTo(() => dataAccess.DoesUserExist(A <Guid> ._))
            .Returns(true);

            A.CallTo(() => dataAccess.DoesOrganisationExist(A <Guid> ._))
            .Returns(true);

            A.CallTo(() => dataAccess.JoinOrganisation(A <OrganisationUser> ._))
            .Returns(JoinOrganisationResult.Fail("Something went wrong"));

            await Assert.ThrowsAnyAsync <InvalidOperationException>(
                () => JoinOrganisationHandler().HandleAsync(new JoinOrganisation(Guid.NewGuid())));

            A.CallTo(() => weeeAuthorization.EnsureCanAccessExternalArea())
            .MustHaveHappened();
        }
        public async Task JoinOrganisationHandler_UserAndOrganisationExist_AndResultIsSuccessful_ShouldVerifyAuthorization_AndShouldReturnOrganisationId()
        {
            var organisationId = Guid.NewGuid();

            A.CallTo(() => userContext.UserId)
            .Returns(Guid.NewGuid());

            A.CallTo(() => dataAccess.DoesUserExist(A <Guid> ._))
            .Returns(true);

            A.CallTo(() => dataAccess.DoesOrganisationExist(A <Guid> ._))
            .Returns(true);

            A.CallTo(() => dataAccess.JoinOrganisation(A <OrganisationUser> ._))
            .Returns(JoinOrganisationResult.Success());

            var result = await JoinOrganisationHandler().HandleAsync(new JoinOrganisation(organisationId));

            A.CallTo(() => weeeAuthorization.EnsureCanAccessExternalArea())
            .MustHaveHappened();

            Assert.Equal(organisationId, result);
        }