示例#1
0
        public void Command_Create_Person_Valid_Entity()
        {
            var person = new CreateNewPersonCommand()
            {
                FirstName = "Adam", LastName = "Liu", Age = 1
            };

            handler.HandleAsync(person).Wait();
        }
示例#2
0
        public void Command_Create_Person_Invalid_FirstName()
        {
            var person = new CreateNewPersonCommand()
            {
                LastName = "2", Age = 1
            };
            var result = person.Validate(new ValidationContext(person));

            IsTrue(result.First().MemberNames.First() == nameof(person.FirstName));
        }
示例#3
0
        static void Main(string[] args)
        {
            var config = new ConfigurationBuilder()
                         .SetBasePath(Directory.GetCurrentDirectory())
                         .AddJsonFile("config.json")
                         .Build();

            var serviceProvider = new ServiceCollection()
                                  .AddTransient <EventPublisher, EventPublisher>()
                                  .AddTransient <IEventStore>(s => new SqlEventStore(config["connectionstring"], s.GetService <EventPublisher>()))
                                  .AddTransient <StateConnector, StateConnector>()
                                  .AddTransient <ICommandHandler <CreateNewPersonCommand>, PersonCommandHandler>()
                                  .AddTransient <ICommandHandler <ChangeAgeCommand>, PersonCommandHandler>()
                                  .AddTransient <ICommandHandler <ChangeNameCommand>, PersonCommandHandler>()
                                  .BuildServiceProvider();

            Guid id = Guid.NewGuid();

            CreateNewPersonCommand newPersonCommand = new CreateNewPersonCommand
            {
                AggregateRootId = id,
                Age             = 28,
                Name            = "John Doe"
            };

            ChangeNameCommand nameToJane = new ChangeNameCommand
            {
                AggregateRootId = id,
                Name            = "Jane Doe"
            };

            ChangeAgeCommand ageTo29Command = new ChangeAgeCommand
            {
                AggregateRootId = id,
                Age             = 29
            };

            ChangeAgeCommand ageTo30Command = new ChangeAgeCommand
            {
                AggregateRootId = id,
                Age             = 30
            };

            CommandHandler commandHandler = new CommandHandler(serviceProvider);

            commandHandler.Handle(newPersonCommand);
            commandHandler.Handle(nameToJane);
            commandHandler.Handle(ageTo29Command);
            commandHandler.Handle(ageTo30Command);

            StateConnector connector   = serviceProvider.GetService <StateConnector>();
            var            foundPerson = connector.Get <Person>(id);

            Console.WriteLine(foundPerson.ToString());
        }
示例#4
0
        public void Command_Create_Person_Invalid_Age()
        {
            var person = new CreateNewPersonCommand()
            {
                FirstName = "1", LastName = "2", Age = -1
            };
            var result = new List <ValidationResult>();

            Validator.TryValidateObject(person, new ValidationContext(person), result);
            IsTrue(result.First().MemberNames.First() == nameof(person.Age));
        }
        public async Task Application_Person_Query_All(int range)
        {
            for (int i = 0; i < range; i++)
            {
                var person = new CreateNewPersonCommand()
                {
                    FirstName = "Adam", LastName = "Liu", Age = new Random().Next(10)
                };
                iocProvider.GetContainer().Resolve <IPersonCommandHandler>().Handle(person);
            }
            var result = await handler.Query();

            AreEqual(result.Count(), range);
        }
        public async Task Application_Person_Query_GetOne(int id)
        {
            for (int i = 0; i < 1; i++)
            {
                var person = new CreateNewPersonCommand()
                {
                    FirstName = "Adam", LastName = "Liu", Age = new Random().Next(3)
                };
                iocProvider.GetContainer().Resolve <IPersonCommandHandler>().Handle(person);
            }
            var result = await handler.GetById(id);

            AreEqual(result.Id, 1);
        }
        public async Task Application_Person_Query_KauriTree(int range)
        {
            for (int i = 0; i < 50; i++)
            {
                var person = new CreateNewPersonCommand()
                {
                    FirstName = "Adam", LastName = "Liu", Age = new Random().Next(range)
                };
                iocProvider.GetContainer().Resolve <IPersonCommandHandler>().Handle(person);
            }
            var result = await handler.Query("Age >= 4999");

            IsTrue(result.Count() > 0);
            AreEqual(result.FirstOrDefault().Group.Description, "Kauri tree");
        }
示例#8
0
        public void when_pass_valid_Input_value_expect_person_create_and_register()
        {
            //Arrange

            var command = new CreateNewPersonCommand
            {
                FirstName = "Alireza",
                LastName  = "Oroumand",
                Id        = Guid.NewGuid()
            };
            var moqPersonRepository = new  Moq.Mock <IPersonCommandRepository>();

            moqPersonRepository.Setup(c => c.Add(It.IsAny <Person>()));

            var commanHandler = new CreateNewPersonCommandHandler(moqPersonRepository.Object);

            // Act
            commanHandler.Handle(command);
            //Assert
            moqPersonRepository.Verify(mock => mock.Add(It.IsAny <Person>()), Times.Once());
        }
示例#9
0
        public void when_pass_valid_Input_value_expect_person_create_and_register_to_databse()
        {
            //Arrange
            var command = new CreateNewPersonCommand
            {
                FirstName = "Alireza",
                LastName  = "Oroumand",
                Id        = Guid.NewGuid()
            };

            var commanHandler = new CreateNewPersonCommandHandler(fixture.PersonCommandRepository);

            // Act
            commanHandler.Handle(command);
            //Assert
            var person = fixture.DbContext.People.FirstOrDefault(c => c.Id == BusinessId.FromGuid(command.Id));

            person.ShouldNotBeNull();
            person.FirstName.ShouldBe(command.FirstName);
            person.LastName.ShouldBe(command.LastName);
        }
 public async Task ApplyAsync(CreateNewPersonCommand command)
 {
     await _handler.HandleAsync(command);
 }
 public void Apply(CreateNewPersonCommand command)
 {
     _handler.Handle(command);
 }
示例#12
0
 public IActionResult Post([FromServices] CreateNewPersonCommandHandler handler, [FromBody] CreateNewPersonCommand command)
 {
     handler.Handle(command);
     return(Ok());
 }
        public async Task <IHttpActionResult> CreatePerson(CreateNewPersonCommand command)
        {
            await _commandService.ApplyAsync(command);

            return(Ok());
        }
示例#14
0
        public void Handle(CreateNewPersonCommand command)
        {
            var person = Person.Create(BusinessId.FromGuid(command.Id), command.FirstName, command.LastName);

            personCommandRepository.Add(person);
        }