예제 #1
0
        /// <summary>
        /// Attempts to create a new employee in the data store.
        /// </summary>
        /// <param name="value">EmployeeDetailViewModel instance reprenting the employee to create</param>
        /// <returns>Created employee</returns>
        public EmployeeDetailViewModel Post([FromBody]EmployeeDetailViewModel value)
        {
            var cmd = new EmployeeCreateCommand() { Arg = EmployeeDetailViewModel.ToDomainModel(value) };

            _commandBus.Execute(cmd);

            value.Id = cmd.Arg.Id;
            value.Version = cmd.Arg.Version;

            return value;
        }
예제 #2
0
        public void TestBasicCreateCommandHandling()
        {
            var target = new EmployeeAggregate(CreateDataModelMock());

            var cmd = new EmployeeCreateCommand() { Arg = CreateNewEmployeeModel() };

            var results = target.Handle(cmd).ToArray();

            Assert.IsNotNull(results);
            Assert.AreEqual(1, results.Count());

            var empCreatedEvent = results.First() as EmployeeCreatedEvent;

            Assert.IsNotNull(empCreatedEvent);
        }
예제 #3
0
        public void TestBasicPayCalculation()
        {
            var target = new EmployeeAggregate(CreateDataModelMock());

            var cmd = new EmployeeCreateCommand() { Arg = CreateNewEmployeeModel() };

            var results = target.Handle(cmd).ToArray();

            Assert.IsNotNull(results);
            Assert.AreEqual(1, results.Count());

            var empCreatedEvent = results.First() as EmployeeCreatedEvent;

            Assert.IsNotNull(empCreatedEvent);

            Assert.AreEqual(2000M, empCreatedEvent.Data.GrossPay);
            Assert.AreEqual(38M, empCreatedEvent.Data.Benefits);
            Assert.AreEqual(1962M, empCreatedEvent.Data.NetPay);
        }
예제 #4
0
        public void TestBasicPayWithDependentCalculation()
        {
            var target = new EmployeeAggregate(CreateDataModelMock());

            var arg = CreateNewEmployeeModel();

            arg.Dependents = new DependentModel[] { new DependentModel() { Name = "OtherGuy" } };

            var cmd = new EmployeeCreateCommand() { Arg = arg };

            var results = target.Handle(cmd).ToArray();

            Assert.IsNotNull(results);
            Assert.AreEqual(1, results.Count());

            var empCreatedEvent = results.First() as EmployeeCreatedEvent;

            Assert.IsNotNull(empCreatedEvent);

            Assert.AreEqual(2000M, empCreatedEvent.Data.GrossPay);
            Assert.AreEqual(57M, empCreatedEvent.Data.Benefits);
            Assert.AreEqual(1943M, empCreatedEvent.Data.NetPay);
        }