public async Task ShouldReturnErrorWhenUserNotFound() { var fakeChannelRepository = new Mock <IChannelRepository>(); var fakeUserRepository = new Mock <IUserRepository>(); fakeUserRepository .Setup(fake => fake.GetById(It.IsAny <Guid>())) .Returns(Task.FromResult <GetUserByIdQueryResult>(null)); var command = new JoinChannelCommand { UserId = Guid.NewGuid(), ChannelId = Guid.NewGuid() }; var handler = new JoinChannelHandler(fakeChannelRepository.Object, fakeUserRepository.Object); ICommandResult result = await handler.HandleAsync(command); result.Success.Should().BeFalse(); result.Errors.Should().HaveCountGreaterThan(0); handler.Invalid.Should().BeTrue(); command.Valid.Should().BeTrue(); fakeUserRepository.Verify(fake => fake.GetById(It.Is <Guid>(id => id == command.UserId)), Times.Once()); }
public async Task ShouldReturnSuccessWhenUserIsNotMemberOfChannel() { Guid userId = Guid.NewGuid(); Guid channelId = Guid.NewGuid(); var fakeChannelRepository = new Mock <IChannelRepository>(); fakeChannelRepository .Setup(fake => fake.GetById(It.IsAny <Guid>())) .ReturnsAsync(new GetChannelByIdQueryResult { Id = channelId, Name = "channel one" }); fakeChannelRepository.Setup(fake => fake.UserIsMemberOfChannel(It.IsAny <Guid>(), It.IsAny <Guid>())) .ReturnsAsync(false); var fakeUserRepository = new Mock <IUserRepository>(); fakeUserRepository .Setup(fake => fake.GetById(It.IsAny <Guid>())) .ReturnsAsync(new GetUserByIdQueryResult { Id = userId, Username = "******" }); var command = new JoinChannelCommand { UserId = userId, ChannelId = channelId }; var handler = new JoinChannelHandler(fakeChannelRepository.Object, fakeUserRepository.Object); ICommandResult result = await handler.HandleAsync(command); result.Success.Should().BeTrue(); result.Errors.Should().BeNull(); handler.Valid.Should().BeTrue(); command.Valid.Should().BeTrue(); fakeUserRepository.Verify(fake => fake.GetById(It.Is <Guid>(id => id == command.UserId)), Times.Once()); fakeChannelRepository.Verify(fake => fake.GetById(It.Is <Guid>(id => id == command.ChannelId)), Times.Once()); fakeChannelRepository.Verify( fake => fake.UserIsMemberOfChannel(It.Is <Guid>(id => id == userId), It.Is <Guid>(id => id == channelId)), Times.Once()); fakeChannelRepository.Verify( fake => fake.AddUserToChannel( It.Is <Guid>(id => id == userId), It.Is <Guid>(id => id == channelId), It.Is <bool>(isAdministrator => isAdministrator == false)), Times.Once()); }
public async Task ShouldReturnErrorWhenUserAlreadyIsMemberOfChannel() { Guid userId = Guid.NewGuid(); Guid channelId = Guid.NewGuid(); var fakeChannelRepository = new Mock <IChannelRepository>(); fakeChannelRepository .Setup(fake => fake.GetById(It.IsAny <Guid>())) .ReturnsAsync(new GetChannelByIdQueryResult { Id = channelId, Name = "channel one" }); fakeChannelRepository.Setup(fake => fake.UserIsMemberOfChannel(It.IsAny <Guid>(), It.IsAny <Guid>())) .ReturnsAsync(true); var fakeUserRepository = new Mock <IUserRepository>(); fakeUserRepository .Setup(fake => fake.GetById(It.IsAny <Guid>())) .ReturnsAsync(new GetUserByIdQueryResult { Id = userId, Username = "******" }); var command = new JoinChannelCommand { UserId = userId, ChannelId = channelId }; var handler = new JoinChannelHandler(fakeChannelRepository.Object, fakeUserRepository.Object); ICommandResult result = await handler.HandleAsync(command); result.Success.Should().BeFalse(); result.Errors.Should().HaveCountGreaterThan(0); handler.Invalid.Should().BeTrue(); command.Valid.Should().BeTrue(); fakeUserRepository.Verify(fake => fake.GetById(It.Is <Guid>(id => id == command.UserId)), Times.Once()); fakeChannelRepository.Verify(fake => fake.GetById(It.Is <Guid>(id => id == command.ChannelId)), Times.Once()); fakeChannelRepository.Verify( fake => fake.UserIsMemberOfChannel(It.Is <Guid>(id => id == userId), It.Is <Guid>(id => id == channelId)), Times.Once()); }
public async Task ShouldReturnErrorWhenChatIdIsEmpty() { var fakeChannelRepository = new Mock <IChannelRepository>(); var fakeUserRepository = new Mock <IUserRepository>(); var command = new JoinChannelCommand { UserId = Guid.NewGuid(), ChannelId = Guid.Empty }; var handler = new JoinChannelHandler(fakeChannelRepository.Object, fakeUserRepository.Object); ICommandResult result = await handler.HandleAsync(command); result.Success.Should().BeFalse(); result.Errors.Should().HaveCountGreaterThan(0); handler.Invalid.Should().BeTrue(); }