public void Should_Fail_Deny_By_Empty_Id() { // arrange var command = PatchInviteCommandFake.DenyInvalidByEmptyId().Generate(); var inviteRepository = InviteRepositoryMockBuilder.Create().Build(); var sut = new DenyInviteValidator(inviteRepository) { CascadeMode = FluentValidation.CascadeMode.Stop }; // act var result = sut.Validate(command); // assert result.AssertErrorsCount(1); }
public void Should_Fail_Deny_By_Invite_NotPending() { // arrange var invite = InviteFake.ValidWithStatus(InviteStatuses.Denied).Generate(); var command = PatchInviteCommandFake.DenyValid(invite.Id).Generate(); var inviteRepository = InviteRepositoryMockBuilder.Create().GetByIdSuccess(output: invite).Build(); var sut = new DenyInviteValidator(inviteRepository) { CascadeMode = FluentValidation.CascadeMode.Stop }; // act var result = sut.Validate(command); // assert result.AssertErrorsCount(1); }
public void Should_Fail_Cancel_By_Invite_NotFound() { // arrange var invite = Invite.Null; var command = PatchInviteCommandFake.CancelValid(invite.Id).Generate(); var inviteRepository = InviteRepositoryMockBuilder.Create().GetByIdFail(command.Id).Build(); var sut = new CancelInviteValidator(inviteRepository) { CascadeMode = FluentValidation.CascadeMode.Stop }; // act var result = sut.Validate(command); // assert result.AssertErrorsCount(1); }
public void Should_Fail_Accept_By_Guild_NotFound() { // arrange var invite = InviteFake.InvalidWithoutGuild().Generate(); var command = PatchInviteCommandFake.AcceptValid(invite.Id).Generate(); var inviteRepository = InviteRepositoryMockBuilder.Create().GetByIdSuccess(output: invite).Build(); var sut = new AcceptInviteValidator(inviteRepository) { CascadeMode = FluentValidation.CascadeMode.Stop }; // act var result = sut.Validate(command); // assert result.AssertErrorsCount(1); }
public void Should_Succeed_Deny() { // arrange var invite = InviteFake.ValidWithStatus().Generate(); var command = PatchInviteCommandFake.DenyValid(invite.Id).Generate(); var inviteRepository = InviteRepositoryMockBuilder.Create().GetByIdSuccess(output: invite).Build(); var sut = new DenyInviteValidator(inviteRepository) { CascadeMode = FluentValidation.CascadeMode.Stop }; // act var result = sut.Validate(command); // assert result.Should().NotBeNull().And.BeOfType <ValidationResult>(); result.IsValid.Should().BeTrue(); }
public async Task Handle_Should_Succeed_With_ValidCommand() { // arrange var deniedInvite = InviteFake.ValidWithStatus(InviteStatuses.Pending).Generate(); var command = PatchInviteCommandFake.DenyValid(deniedInvite.Id).Generate(); var inviteRepository = InviteRepositoryMockBuilder.Create() .GetByIdSuccess(command.Id, deniedInvite) .Update(deniedInvite, deniedInvite) .Build(); var sut = new DenyInviteHandler(inviteRepository); // act var result = await sut.Handle(command, default); // assert result.Should().NotBeNull().And.BeOfType <SuccessResult>(); result.Success.Should().BeTrue(); result.Errors.Should().BeEmpty(); result.As <SuccessResult>().StatusCode.Should().Be(StatusCodes.Status200OK); result.Data.Should().NotBeNull().And.BeOfType <InviteTestProxy>(); result.Data.As <Invite>().Id.Should().Be(deniedInvite.Id); result.Data.As <Invite>().Status.Should().Be(InviteStatuses.Denied) .And.Be(deniedInvite.Status); }
public async Task Handle_Should_Succeed_With_ValidCommandAsync() { // arrange const int canceledCount = 2; var invitedMember = MemberFake.GuildLeader().Generate(); var promotedMember = invitedMember.GetGuild().GetVice(); var invitingGuild = GuildFake.Complete().Generate(); var acceptedInvite = InviteFake.ValidToAcceptWithInvitesToCancel(canceledCount, invitingGuild, invitedMember).Generate(); var command = PatchInviteCommandFake.AcceptValid(acceptedInvite.Id).Generate(); var canceledInvites = acceptedInvite.GetInvitesToCancel().ToArray(); var startedMembership = MembershipFake.Active(invitingGuild, invitedMember).Generate(); var finishedMembership = invitedMember.GetActiveMembership(); var unit = UnitOfWorkMockBuilder.Create() .SetupMembers(x => x.Update(input: invitedMember, output: invitedMember) .Update(input: promotedMember, output: promotedMember).Build()) .SetupMemberships(x => x.Insert(output: startedMembership).Update(output: finishedMembership).Build()) .SetupInvites(x => { x.GetForAcceptOperationSuccess(input: command.Id, output: acceptedInvite) .Update(output: acceptedInvite); foreach (var i in canceledInvites) { x.Update(i, i); } return(x.Build()); }).Build(); var factory = ModelFactoryMockBuilder.Create() .CreateMembership(invitingGuild, invitedMember, startedMembership).Build(); var sut = new AcceptInviteHandler(unit, factory); // act var result = await sut.Handle(command, default); // assert result.Should().NotBeNull().And.BeOfType <SuccessResult>(); result.Success.Should().BeTrue(); result.Errors.Should().BeEmpty(); result.As <SuccessResult>().StatusCode.Should().Be(StatusCodes.Status200OK); result.Data.Should().NotBeNull().And.BeOfType <InviteTestProxy>(); result.Data.As <Invite>().Id.Should().Be(acceptedInvite.Id); result.Data.As <Invite>().Status.Should().Be(InviteStatuses.Accepted) .And.Be(acceptedInvite.Status); invitedMember.Should().NotBeOfType <NullMember>(); invitedMember.IsGuildLeader.Should().BeFalse(); invitedMember.GetGuild().Should().Be(invitingGuild); invitingGuild.Should().NotBeOfType <NullGuild>(); invitingGuild.Members.Should().Contain(invitedMember); finishedMembership.ModifiedDate.Should().NotBeNull() .And.Be(invitedMember.GetLastFinishedMembership().ModifiedDate); canceledInvites.Should().HaveCount(canceledCount) .And.OnlyContain(x => x.Status == InviteStatuses.Canceled); promotedMember.Should().NotBeNull().And.BeOfType <MemberTestProxy>(); promotedMember.IsGuildLeader.Should().Be(!invitedMember.IsGuildLeader); }