public static User Handle()
        {
            var request  = GetRequestFromUserInput();
            var handler  = new CreateUserRequestHandler();
            var response = handler.Handle(request);

            return(response);
        }
Example #2
0
        public void Handle_UserHasFirstName_ReturnsDtoWithCorrectFirstName()
        {
            var arg = GenerateDtoInCorrectState();

            var classToTest = new CreateUserRequestHandler();
            var result      = classToTest.Handle(arg);

            result.FirstName.ShouldBe("Matthew");
        }
Example #3
0
        public void Handle_UserHasAge_ReturnsDtoWithCorrectAge()
        {
            var expected = 27;
            var arg      = new CreateUserRequest();

            arg.Age = expected;

            var classToTest = new CreateUserRequestHandler();
            var result      = classToTest.Handle(arg);

            result.Age.ShouldBe(expected);
        }
Example #4
0
        public void Handle_UserHasLastName_ReturnsDtoWithCorrectLastName()
        {
            var expected = "Puneky";
            var arg      = new CreateUserRequest();

            arg.LastName = expected;

            var classToTest = new CreateUserRequestHandler();
            var result      = classToTest.Handle(arg);

            result.LastName.ShouldBe(expected);
        }
Example #5
0
        public void Handle_UserHasFirstName_ReturnsDtoWithCorrectFirstName()
        {
            // Arrange
            var foo = new CreateUserRequest();

            foo.FirstName = "Matthew";

            // Act
            var classToTest = new CreateUserRequestHandler();
            var result      = classToTest.Handle(foo);

            // Assert
            Assert.AreEqual(result.FirstName, "Matthew");
        }
        public async Task CreateUserRequestHandler_Handle_Returns_EmailExists()
        {
            UserContext.OpenInMemoryConnection();

            try
            {
                var busMock = new Mock <IBus>();
                busMock.Setup(m => m.PublishAsync(It.IsAny <UserCreatedEvent>())).Returns(Task.FromResult(true));

                var user = new User
                {
                    UserKey      = Guid.NewGuid(),
                    EmailAddress = "*****@*****.**"
                };

                using (var context = UserContext.GetInMemoryContext())
                {
                    context.Users.Add(user);
                    context.SaveChanges();
                }

                CreateUserResponse response;
                var request = new CreateUserRequest
                {
                    UserKey      = Guid.NewGuid(),
                    FirstName    = "John",
                    LastName     = "Doe",
                    EmailAddress = "*****@*****.**"
                };

                using (var context = UserContext.GetInMemoryContext())
                {
                    var handler = new CreateUserRequestHandler(context, AutoMapperHelper.BuildMapper(new MappingProfile()), busMock.Object);
                    response = await handler.Handle(request);
                }

                using (var context = UserContext.GetInMemoryContext())
                {
                    Assert.AreEqual(1, context.Users.Count());
                    Assert.AreEqual(ErrorType.EmailExists, response.ErrorType);
                    Assert.IsFalse(response.IsSuccess);
                }

                busMock.Verify(m => m.PublishAsync(It.IsAny <UserCreatedEvent>()), Times.Never());
            }
            finally
            {
                UserContext.CloseInMemoryConnection();
            }
        }
Example #7
0
        public void Handle_UserHasAge_ReturnsDtoWithCorrectAge()
        {
            int ageToTest = 26;
            // Arrage
            var request = new CreateUserRequest();

            request.Age = ageToTest;

            // Act
            var classToTest = new CreateUserRequestHandler();
            var result      = classToTest.Handle(request);

            // Assert (use ShouldBe like in FizzBuzzTests)
            Assert.AreEqual(result.Age, ageToTest);
        }
Example #8
0
        public void Handle_UserHasLastName_ReturnsDtoWithCorrectLastName()
        {
            // Arrage
            var request = new CreateUserRequest();

            request.LastName = "Picnic";

            // Act
            var classToTest = new CreateUserRequestHandler();
            var result      = classToTest.Handle(request);


            // Assert (use ShouldBe like in FizzBuzzTests)
            Assert.AreEqual(result.LastName, "Picnic");
        }
        public async Task CreateUserRequestHandler_Handle_Returns_Success()
        {
            UserContext.OpenInMemoryConnection();

            try
            {
                var busMock = new Mock <IBus>();
                busMock.Setup(m => m.PublishAsync(It.IsAny <UserCreatedEvent>())).Returns(Task.FromResult(true));

                CreateUserResponse response;
                var request = new CreateUserRequest
                {
                    UserKey   = Guid.NewGuid(),
                    FirstName = "John",
                    LastName  = "Doe"
                };

                using (var context = UserContext.GetInMemoryContext())
                {
                    var handler = new CreateUserRequestHandler(context, AutoMapperHelper.BuildMapper(new MappingProfile()), busMock.Object);
                    response = await handler.Handle(request);
                }

                using (var context = UserContext.GetInMemoryContext())
                {
                    Assert.AreEqual(1, context.Users.Count());
                    Assert.AreEqual(request.UserKey, context.Users.Single().UserKey);
                    Assert.AreEqual(request.FirstName, context.Users.Single().FirstName);
                    Assert.AreEqual(request.LastName, context.Users.Single().LastName);
                    Assert.AreEqual(request.AddressLine1, context.Users.Single().AddressLine1);
                    Assert.IsNotNull(context.Users.Single().Created);
                    Assert.IsTrue(response.IsSuccess);
                }

                busMock.Verify(m => m.PublishAsync(It.Is <UserCreatedEvent>(e => e.UserKey == request.UserKey && e.FirstName == request.FirstName)), Times.Once);
            }
            finally
            {
                UserContext.CloseInMemoryConnection();
            }
        }
        public async Task CreateUserRequestHandler_Handle_Returns_KeyEmpty()
        {
            UserContext.OpenInMemoryConnection();

            try
            {
                var busMock = new Mock <IBus>();
                busMock.Setup(m => m.PublishAsync(It.IsAny <UserCreatedEvent>())).Returns(Task.FromResult(true));

                CreateUserResponse response;
                var request = new CreateUserRequest
                {
                    FirstName = "John",
                    LastName  = "Doe"
                };

                using (var context = UserContext.GetInMemoryContext())
                {
                    var handler = new CreateUserRequestHandler(context, AutoMapperHelper.BuildMapper(new MappingProfile()), busMock.Object);
                    response = await handler.Handle(request);
                }

                using (var context = UserContext.GetInMemoryContext())
                {
                    Assert.AreEqual(0, context.Users.Count());
                    Assert.AreEqual(ErrorType.InvalidKey, response.ErrorType);
                    Assert.IsFalse(response.IsSuccess);
                }

                busMock.Verify(m => m.PublishAsync(It.IsAny <UserCreatedEvent>()), Times.Never());
            }
            finally
            {
                UserContext.CloseInMemoryConnection();
            }
        }
Example #11
0
        public async Task SendMessageAsync(Message msg)
        {
            await _networkCommunication.SendBytesAsync(new[] { (byte)msg.Type });

            await _networkCommunication.SendShortAsync((short)msg.Id);

            switch (msg)
            {
            // Error
            case ErrorResponse errorResponse:
                var errorResponseHandler = new ErrorResponseHandler(_networkCommunication);
                await errorResponseHandler.SendMessageAsync(errorResponse);

                break;

            // Login
            case LoginRequest loginRequest:
                var loginRequestHandler = new LoginRequestHandler(_networkCommunication);
                await loginRequestHandler.SendMessageAsync(loginRequest);

                break;

            case LoginResponse loginResponse:
                var loginResponseHandler = new LoginResponseHandler(_networkCommunication);
                await loginResponseHandler.SendMessageAsync(loginResponse);

                break;

            // Create User
            case CreateUserRequest createUserRequest:
                var createUserRequestHandler = new CreateUserRequestHandler(_networkCommunication);
                await createUserRequestHandler.SendMessageAsync(createUserRequest);

                break;

            case CreateUserResponse createUserResponse:
                var createUserResponseHandler = new CreateUserResponseHandler(_networkCommunication);
                await createUserResponseHandler.SendMessageAsync(createUserResponse);

                break;

            // Create photo
            case CreatePhotoRequest createPhotoRequest:
                var createPhotoRequestHandler = new CreatePhotoRequestHandler(
                    _networkCommunication,
                    _fileCommunication
                    );
                await createPhotoRequestHandler.SendMessageAsync(createPhotoRequest);

                break;

            case CreatePhotoResponse createPhotoResponse:
                var createPhotoResponseHandler = new CreatePhotoResponseHandler();
                await createPhotoResponseHandler.SendMessageAsync(createPhotoResponse);

                break;

            // Photo list
            case PhotoListRequest photoListRequest:
                var photoListRequestHandler = new PhotoListRequestHandler(_networkCommunication);
                await photoListRequestHandler.SendMessageAsync(photoListRequest);

                break;

            case PhotoListResponse photoListResponse:
                var photoListResponseHandler = new PhotoListResponseHandler(
                    _networkCommunication,
                    _fileCommunication
                    );
                await photoListResponseHandler.SendMessageAsync(photoListResponse);

                break;

            // User list
            case UserListRequest userListRequest:
                var userListRequestHandler = new UserListRequestHandler();
                await userListRequestHandler.SendMessageAsync(userListRequest);

                break;

            case UserListResponse userListResponse:
                var userListResponseHandler = new UserListResponseHandler(
                    _networkCommunication
                    );
                await userListResponseHandler.SendMessageAsync(userListResponse);

                break;

            // Comment photo
            case CommentPhotoRequest commentPhotoRequest:
                var commentPhotoRequestHandler = new CommentPhotoRequestHandler(_networkCommunication);
                await commentPhotoRequestHandler.SendMessageAsync(commentPhotoRequest);

                break;

            case CommentPhotoResponse commentPhotoResponse:
                var commentPhotoResponseHandler = new CommentPhotoResponseHandler(
                    _networkCommunication
                    );
                await commentPhotoResponseHandler.SendMessageAsync(commentPhotoResponse);

                break;

            // Comment List
            case CommentListRequest commentListRequest:
                var commentListRequestHandler = new CommentListRequestHandler(_networkCommunication);
                await commentListRequestHandler.SendMessageAsync(commentListRequest);

                break;

            case CommentListResponse commentListResponse:
                var commentListResponseHandler = new CommentListResponseHandler(
                    _networkCommunication
                    );
                await commentListResponseHandler.SendMessageAsync(commentListResponse);

                break;

            // Logout
            case LogoutRequest logoutRequest:
                var logoutRequestHandler = new LogoutRequestHandler();
                await logoutRequestHandler.SendMessageAsync(logoutRequest);

                break;

            case LogoutResponse logoutResponse:
                var logoutResponseHandler = new LogoutResponseHandler();
                await logoutResponseHandler.SendMessageAsync(logoutResponse);

                break;

            default:
                // TODO Create a custom exception
                throw new Exception($"Message not recognized ID={msg.Id}, type={msg.Type}");
            }
        }
 public RequestResult CreateUser([FromBody] CreateUserRequest request, [FromServices] CreateUserRequestHandler handler)
 {
     return((RequestResult)handler.Handle(request));
 }
Example #13
0
 public CreateUserRequestHandlerTest()
 {
     _userRepository = Substitute.For <IUserRepository>();
     _mediator       = Substitute.For <IMediator>();
     _sut            = new CreateUserRequestHandler(_userRepository, _mediator);
 }