Esempio n. 1
0
        public async Task <DomainValidationResult <Member> > KickMemberFromClanAsync(Clan clan, UserId userId, MemberId memberId)
        {
            var result = new DomainValidationResult <Member>();

            if (!clan.MemberIsOwner(userId))
            {
                result.AddFailedPreconditionError($"The user ({userId}) isn't the clan owner.");
            }

            if (!clan.HasMember(memberId))
            {
                result.AddFailedPreconditionError($"The memberId ({memberId}) isn't a member of the clan '{clan.Name}'.");
            }

            if (result.IsValid)
            {
                var member = clan.FindMember(memberId);

                clan.Kick(member);

                await _clanRepository.UnitOfWork.CommitAsync();

                return(member);
            }

            return(result);
        }
Esempio n. 2
0
        public async Task <DomainValidationResult <Clan> > LeaveClanAsync(Clan clan, UserId userId)
        {
            var result = new DomainValidationResult <Clan>();

            if (!clan.HasMember(userId))
            {
                result.AddFailedPreconditionError($"The user ({userId}) isn't a member of the clan '{clan.Name}'.");
            }

            if (result.IsValid)
            {
                var member = clan.FindMember(userId);

                clan.Leave(member);

                await _clanRepository.UnitOfWork.CommitAsync();

                if (clan.Deleted)
                {
                    await this.DeleteClanAsync(clan);
                }

                return(clan);
            }

            return(result);
        }
Esempio n. 3
0
        public async Task KickMemberFromClanAsync_ShouldBeOfTypeValidationResult()
        {
            // Arrange
            var ownerId = new UserId();
            var clan    = new Clan("test", ownerId);

            var memberUserId = new UserId();

            clan.AddMember(new Member(clan.Id, memberUserId));

            var member = clan.FindMember(memberUserId);

            TestMock.ClanRepository.Setup(repository => repository.UnitOfWork.CommitAsync(It.IsAny <bool>(), It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask)
            .Verifiable();

            var service = new ClanService(TestMock.ClanRepository.Object);

            // Act
            var result = await service.KickMemberFromClanAsync(clan, ownerId, member.Id);

            // Assert
            result.Should().BeOfType <DomainValidationResult <Member> >();

            TestMock.ClanRepository.Verify(repository => repository.UnitOfWork.CommitAsync(It.IsAny <bool>(), It.IsAny <CancellationToken>()), Times.Once);
        }
Esempio n. 4
0
        public void FindMember_WithUserId_ShouldNotBeNull()
        {
            // Arrange
            var userId = new UserId();
            var clan   = new Clan("TestClan", userId);

            // Act
            var member = clan.FindMember(userId);

            // Assert
            member.Should().NotBeNull();
        }
Esempio n. 5
0
        public void FindMember_WithMemberId_ShouldNotBeNull()
        {
            // Arrange
            var clan = new Clan("TestClan", new UserId());

            var memberId = clan.Members.SingleOrDefault()?.Id;

            // Act
            var member = clan.FindMember(memberId);

            // Assert
            member.Should().NotBeNull();
        }