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); }
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); }
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); }
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(); }
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(); }