internal static void ThrowForReason(AddClaimForbideReason reason, Claim claim)
        {
            switch (reason)
            {
            case AddClaimForbideReason.ProjectNotActive:
                throw new ProjectDeactivedException();

            case AddClaimForbideReason.ProjectClaimsClosed:
            case AddClaimForbideReason.SlotsExhausted:
            case AddClaimForbideReason.NotForDirectClaims:
            case AddClaimForbideReason.Busy:
            case AddClaimForbideReason.Npc:
                throw new ClaimTargetIsNotAcceptingClaims();

            case AddClaimForbideReason.AlreadySent:
                throw new ClaimAlreadyPresentException();

            case AddClaimForbideReason.OnlyOneCharacter:
                throw new OnlyOneApprovedClaimException();

            case AddClaimForbideReason.ApprovedClaimMovedToGroup:
            case AddClaimForbideReason.CheckedInClaimCantBeMoved:
                throw new ClaimWrongStatusException(claim);

            default:
                throw new ArgumentOutOfRangeException(nameof(reason), reason, message: null);
            }
        }
        public static AddClaimForbideReasonViewModel ToViewModel(this AddClaimForbideReason reason)
        {
            switch (reason)
            {
            case AddClaimForbideReason.ProjectNotActive:
                return(AddClaimForbideReasonViewModel.ProjectNotActive);

            case AddClaimForbideReason.ProjectClaimsClosed:
                return(AddClaimForbideReasonViewModel.ProjectClaimsClosed);

            case AddClaimForbideReason.NotForDirectClaims:
                return(AddClaimForbideReasonViewModel.NotForDirectClaims);

            case AddClaimForbideReason.SlotsExhausted:
                return(AddClaimForbideReasonViewModel.SlotsExhausted);

            case AddClaimForbideReason.Npc:
                return(AddClaimForbideReasonViewModel.Npc);

            case AddClaimForbideReason.Busy:
                return(AddClaimForbideReasonViewModel.Busy);

            case AddClaimForbideReason.AlreadySent:
                return(AddClaimForbideReasonViewModel.AlreadySent);

            case AddClaimForbideReason.OnlyOneCharacter:
                return(AddClaimForbideReasonViewModel.OnlyOneCharacter);

            case AddClaimForbideReason.ApprovedClaimMovedToGroup:
                return(AddClaimForbideReasonViewModel.ApprovedClaimMovedToGroup);

            case AddClaimForbideReason.CheckedInClaimCantBeMoved:
                return(AddClaimForbideReasonViewModel.CheckedInClaimCantBeMoved);

            default:
                throw new ArgumentOutOfRangeException(nameof(reason), reason, message: null);
            }
        }
 private void ShouldBeNotAllowed(IClaimSource claimSource, AddClaimForbideReason reason)
 => claimSource.ValidateIfCanAddClaim(Mock.Player.UserId).ShouldContain(reason);
示例#4
0
 private void ShouldDisAllowMove(Claim claim, IClaimSource characterGroup, AddClaimForbideReason reason)
 {
     characterGroup.ValidateIfCanMoveClaim(claim).ShouldBe(new [] { reason });
 }
示例#5
0
 public void AllTranslated(AddClaimForbideReason reason)
 {
     Should.NotThrow(() => reason.ToViewModel());
 }
示例#6
0
        public void AllForbideReasonTranslatedToThrow(AddClaimForbideReason reason)
        {
            var claim = new Claim();

            _ = Should.Throw <JoinRpgBaseException>(() => ClaimSourceExtensions.ThrowForReason(reason, claim));
        }