Exemple #1
0
        public async Task <UserDTO> CreateUser([FromBody] CreateUserInputDTO input)
        {
            var message = new CreateSingleUserCommand(input);
            var result  = await _commandDispatcher.Execute(message);

            return(result);
        }
Exemple #2
0
        public async void given_CreateSingleUserCommand_handler_should_have_correct_command_type()
        {
            // Assemble
            CreateUserInputDTO input = new CreateUserInputDTO
            {
                FirstName      = "test",
                LastName       = "testLastName",
                Email          = "testEmail",
                Position       = "testPosition",
                Department     = "testDepartment",
                IsAdmin        = true,
                IsActive       = true,
                PermissionList = new Dictionary <Guid, PermissionDetails>()
            };
            var command = new CreateSingleUserCommand(input);
            var mockAgg = new CreateSingleUserCommandHandlerMockAggregate();

            mockAgg.setup_session_to_ensure_addAndCommit_are_called();
            var handler = mockAgg.HandlerFactory();

            // Apply
            var result = await handler.Handle(command);

            // Assert
            Assert.True(mockAgg.SessionAddWasCalled);
            Assert.True(mockAgg.SessionCommitWasCalled);
        }
Exemple #3
0
        public async void given_create_user_command_command_dispatcher_should_get_same_command_created_in_controller()
        {
            //Assemble
            var mockAgg = new UserControllerMockAggregate();


            var input = new CreateUserInputDTO()
            {
                FirstName = "testFName",
                LastName  = "testLName"
            };

            var command = new CreateSingleUserCommand(input);

            mockAgg.setup_dispatcher_to_verify_createUserCommands_are_the_same(command);

            var controller = mockAgg.CreateUserController();

            //Apply
            var result = await controller.CreateUser(input);

            //Assert
            Assert.IsType <UserDTO>(result);
            Assert.Equal(result.FirstName, input.FirstName);
            Assert.Equal(result.LastName, input.LastName);
        }
Exemple #4
0
        public UserCreatedEvent(CreateUserInputDTO dto)
        {
            if (dto.PermissionList == null)
            {
                PermissionList = new Dictionary <Guid, PermissionDetails>();
            }

            if (dto.PermissionList != null && dto.PermissionList.Any())
            {
                foreach (var permission in dto.PermissionList)
                {
                    permission.Value.EventType = JsonConvert.SerializeObject(typeof(UserPermissionGrantedEvent).FullName);
                }
            }

            ById           = dto.ById == Guid.Empty ? Guid.Empty : dto.ById;
            FirstName      = dto.FirstName;
            LastName       = dto.LastName;
            Email          = dto.Email;
            Position       = dto.Position;
            Department     = dto.Department;
            IsAdmin        = dto.IsAdmin;
            IsActive       = dto.IsActive;
            PermissionList = dto.PermissionList;
        }
Exemple #5
0
        public void given_create_user_with_bad_input_should_throw_CreateUserDataNotFoundException()
        {
            // Assemble
            CreateUserInputDTO input = new CreateUserInputDTO();
            UserAggregate      agg;


            // Apply / Assert
            Assert.Throws <CreateUserDataNotFoundException>(() => agg = UserAggregate.CreateNewUser(input));
        }
Exemple #6
0
 public static UserAggregate CreateNewUser(CreateUserInputDTO dto)
 {
     //dont create a user without anyof these fields
     if (string.IsNullOrWhiteSpace(dto.FirstName) ||
         string.IsNullOrWhiteSpace(dto.LastName) ||
         string.IsNullOrWhiteSpace(dto.Email) ||
         string.IsNullOrWhiteSpace(dto.Department) ||
         string.IsNullOrWhiteSpace(dto.Position)
         )
     {
         throw new CreateUserDataNotFoundException("One of the fields for creating a user was null or whitespace!");
     }
     return(new UserAggregate(dto));
 }
Exemple #7
0
        public int CreateUser(CreateUserInputDTO userInputDTO)
        {
            using (var uow = UnitOfWorkFactory.Create(_userRepo))
            {
                var user = userInputDTO.Map <User>();
                _userRepo.Insert(user);

                uow.SaveChanges();

                //集成Dapper
                var count = _userRepo.GetDbConnection().ExecuteScalar <int>("select count(*) from emms_system_user");
                System.Diagnostics.Trace.WriteLine($"user count:{count}");

                return(user.Id);
            }
        }
Exemple #8
0
        public void given_create_user_should_have_user_created_event_with_non_empty_id()
        {
            // Assemble
            CreateUserInputDTO input = new CreateUserInputDTO
            {
                FirstName      = "test",
                LastName       = "testLastName",
                Email          = "testEmail",
                Position       = "testPosition",
                Department     = "testDepartment",
                IsAdmin        = true,
                IsActive       = true,
                PermissionList = new Dictionary <Guid, PermissionDetails>()
            };

            // Apply
            var agg = UserAggregate.CreateNewUser(input);

            // Assert
            var changes = agg.FlushUncommitedChanges();

            Assert.Single(changes);
            Assert.Collection(changes, (e) =>
            {
                Assert.IsType <UserCreatedEvent>(e);
                var @event = (UserCreatedEvent)e;
                Assert.Equal(1, @event.Version);
                Assert.NotEqual(Guid.Empty, @event.Id);

                Assert.Equal(input.FirstName, @event.FirstName);
                Assert.Equal(input.LastName, @event.LastName);
                Assert.Equal(input.Email, @event.Email);
                Assert.Equal(input.Position, @event.Position);
                Assert.Equal(input.Department, @event.Department);
                Assert.True(@event.IsAdmin);
                Assert.True(@event.IsActive);
            });

            Assert.NotEqual(Guid.Empty, agg.Id);
            Assert.Equal(input.FirstName, agg.FirstName);
            Assert.Equal(input.LastName, agg.LastName);
            Assert.Equal(input.Email, agg.Email);
            Assert.Equal(input.Position, agg.Position);
            Assert.Equal(input.Department, agg.Department);
            Assert.True(agg.IsAdmin);
            Assert.True(agg.IsActive);
        }
Exemple #9
0
        public UserAggregate SetupAdminUser()
        {
            var dto = new CreateUserInputDTO
            {
                FirstName  = "test",
                LastName   = "testLastName",
                Email      = "testEmail",
                Position   = "testPosition",
                Department = "testDepartment",
                IsAdmin    = true,
                IsActive   = true,

                PermissionList = new Dictionary <Guid, PermissionDetails>()
            };

            var agg = UserAggregate.CreateNewUser(dto);

            return(agg);
        }
Exemple #10
0
        public static UserAggregate SetupAdminUser()
        {
            var dto = new CreateUserInputDTO
            {
                FirstName  = "Stephen",
                LastName   = "Lomangino",
                Email      = "*****@*****.**",
                Position   = "API Lead",
                Department = "Development",
                IsAdmin    = true,
                IsActive   = true,

                PermissionList = { }
            };

            var agg = UserAggregate.CreateNewUser(dto);

            return(agg);
        }
Exemple #11
0
 public CreateSingleUserCommand(CreateUserInputDTO input)
 {
     Input = input;
 }
Exemple #12
0
 protected UserAggregate(CreateUserInputDTO dto)
 {
     Id = Guid.NewGuid();
     ApplyChange(new UserCreatedEvent(dto));
 }
Exemple #13
0
 public int CreateUser(CreateUserInputDTO createUserInputDTO)
 {
     return(userService.CreateUser(createUserInputDTO));
 }