public async Task FetchMembersAsync_ShouldBeOfTypeOkObjectResult()
        {
            // Arrange
            var member = new Member(new Candidature(new UserId(), new ClanId()));

            TestMock.ClanService.Setup(clanService => clanService.FindClanAsync(It.IsAny <ClanId>())).ReturnsAsync(new Clan("Test", new UserId())).Verifiable();

            TestMock.ClanService.Setup(clanService => clanService.FetchMembersAsync(It.IsAny <Clan>()))
            .ReturnsAsync(
                new List <Member>
            {
                member,
                member,
                member
            })
            .Verifiable();

            var clanMemberController = new ClanMembersController(TestMock.ClanService.Object, TestMapper);

            // Act
            var result = await clanMemberController.FetchMembersAsync(new ClanId());

            // Assert
            result.Should().BeOfType <OkObjectResult>();

            TestMock.ClanService.Verify(clanService => clanService.FindClanAsync(It.IsAny <ClanId>()), Times.Once);

            TestMock.ClanService.Verify(clanService => clanService.FetchMembersAsync(It.IsAny <Clan>()), Times.Once);
        }
        public async Task KickMemberFromClanAsync_ShouldBeOfTypeBadRequestObjectResult()
        {
            // Arrange
            TestMock.ClanService.Setup(clanService => clanService.FindClanAsync(It.IsAny <ClanId>())).ReturnsAsync(new Clan("Test", new UserId())).Verifiable();

            TestMock.ClanService.Setup(clanService => clanService.KickMemberFromClanAsync(It.IsAny <Clan>(), It.IsAny <UserId>(), It.IsAny <MemberId>()))
            .ReturnsAsync(DomainValidationResult <Member> .Failure("Error"))
            .Verifiable();

            var clanMemberController = new ClanMembersController(TestMock.ClanService.Object, TestMapper)
            {
                ControllerContext =
                {
                    HttpContext = MockHttpContextAccessor.GetInstance()
                }
            };

            // Act
            var result = await clanMemberController.KickMemberFromClanAsync(new ClanId(), new MemberId());

            // Assert
            result.Should().BeOfType <BadRequestObjectResult>();

            TestMock.ClanService.Verify(clanService => clanService.FindClanAsync(It.IsAny <ClanId>()), Times.Once);

            TestMock.ClanService.Verify(
                clanService => clanService.KickMemberFromClanAsync(It.IsAny <Clan>(), It.IsAny <UserId>(), It.IsAny <MemberId>()),
                Times.Once);
        }
        public async Task LeaveClanAsync_ShouldBeOfTypeNotFoundObjectResult()
        {
            // Arrange
            TestMock.ClanService.Setup(clanService => clanService.FindClanAsync(It.IsAny <ClanId>())).ReturnsAsync((Clan)null).Verifiable();

            TestMock.ClanService.Setup(clanService => clanService.LeaveClanAsync(It.IsAny <Clan>(), It.IsAny <UserId>()))
            .ReturnsAsync(new DomainValidationResult <Clan>())
            .Verifiable();

            var clanMemberController = new ClanMembersController(TestMock.ClanService.Object, TestMapper)
            {
                ControllerContext =
                {
                    HttpContext = MockHttpContextAccessor.GetInstance()
                }
            };

            // Act
            var result = await clanMemberController.LeaveClanAsync(new ClanId());

            // Assert
            result.Should().BeOfType <NotFoundObjectResult>();

            TestMock.ClanService.Verify(clanService => clanService.FindClanAsync(It.IsAny <ClanId>()), Times.Once);

            TestMock.ClanService.Verify(clanService => clanService.LeaveClanAsync(It.IsAny <Clan>(), It.IsAny <UserId>()), Times.Never);
        }