示例#1
0
        public async Task Should_CreateLeaveType_When_PassValidParameters()
        {
            // Arrange
            IUnitOfWork             unitOfWork = new UnitOfWork(_fixture.Context);
            IRepository <LeaveType> repository = new Repository <LeaveType>(_fixture.Context);

            var handler = new CreateLeaveTypeHandler(unitOfWork, repository, _logger, _mapper);

            var request = new CreateLeaveTypeCommand(companyId: 1,
                                                     userId: 1,
                                                     isHalfDaysActivated: true,
                                                     isHideLeaveTypeName: false,
                                                     typeName: "Test Leave Type",
                                                     isApprovalRequired: true,
                                                     defaultDaysPerYear: 0,
                                                     isUnlimited: true,
                                                     isReasonRequired: true,
                                                     allowNegativeBalance: true,
                                                     color: "FFFFFF");

            // Act
            var tcs    = new CancellationToken();
            var result = await handler.Handle(request, tcs);

            // Assert
            Assert.Equal(1, result.LeaveTypeId);
            Assert.Equal(1, result.CreatedBy);
        }
示例#2
0
        public async Task Should_ValidatorReturnTrue_When_PassDaysPerYearGreaterThanZeroForIsUnlimitedFalse()
        {
            LeaveTypeCommandValidator validator = new LeaveTypeCommandValidator();
            // Arrange
            IUnitOfWork             unitOfWork = new UnitOfWork(_fixture.Context);
            IRepository <LeaveType> repository = new Repository <LeaveType>(_fixture.Context);

            var handler = new CreateLeaveTypeHandler(unitOfWork, repository, _logger, _mapper);
            var request = new CreateLeaveTypeCommand(companyId: 1,
                                                     userId: 1,
                                                     isHalfDaysActivated: true,
                                                     isHideLeaveTypeName: true,
                                                     typeName: "Test Name",
                                                     isApprovalRequired: true,
                                                     defaultDaysPerYear: 10,
                                                     isUnlimited: false,
                                                     isReasonRequired: true,
                                                     allowNegativeBalance: true,
                                                     color: "FFFFFF");

            // Act
            var result = await validator.ValidateAsync(request);

            //Assert
            Assert.True(result.IsValid);
        }
示例#3
0
        public async Task Should_CreateLeaveType_When_PassDeletedLeaveTypeName()
        {
            // Arrange
            var entity = new LeaveType()
            {
                ColorCode              = "ffffff",
                CompanyId              = 1,
                CreatedAt              = DateTime.Now,
                CreatedBy              = -1,
                DefaultDaysPerYear     = 10,
                IsActive               = true,
                IsAllowNegativeBalance = true,
                IsApproverRequired     = false,
                IsDefault              = true,
                IsDeleted              = true,
                IsHalfDaysActivated    = true,
                IsHideLeaveTypeName    = false,
                IsReasonRequired       = true,
                IsUnlimited            = false,
                LeaveTypeName          = "Test Name"
            };

            _fixture.Context.LeaveTypes.Add(entity);
            _fixture.Context.SaveChanges();

            IUnitOfWork             unitOfWork = new UnitOfWork(_fixture.Context);
            IRepository <LeaveType> repository = new Repository <LeaveType>(_fixture.Context);

            var handler = new CreateLeaveTypeHandler(unitOfWork, repository, _logger, _mapper);

            var request = new CreateLeaveTypeCommand(companyId: 1,
                                                     userId: 1,
                                                     isHalfDaysActivated: true,
                                                     isHideLeaveTypeName: true,
                                                     typeName: "Test Name",
                                                     isApprovalRequired: true,
                                                     defaultDaysPerYear: 10,
                                                     isUnlimited: true,
                                                     isReasonRequired: true,
                                                     allowNegativeBalance: true,
                                                     color: "FFFFFF");

            // Act
            var tcs    = new CancellationToken();
            var result = await handler.Handle(request, tcs);

            // Assert
            Assert.Equal("Test Name", result.LeaveTypeName);
            Assert.Equal("FFFFFF", result.ColorCode);
            Assert.True(result.IsHalfDaysActivated);
            Assert.True(result.IsHideLeaveTypeName);
            Assert.True(result.IsApproverRequired);
            Assert.Equal(10, result.DefaultDaysPerYear);
            Assert.True(result.IsUnlimited);
            Assert.True(result.IsReasonRequired);
            Assert.True(result.IsAllowNegativeBalance);
            Assert.Equal(1, result.CreatedBy);
        }
示例#4
0
        public async Task <ActionResult <LeaveTypeDto> > CreateAsync([FromBody] LeaveTypeModel model)
        {
            var request = new CreateLeaveTypeCommand(_companyId,
                                                     _userId,
                                                     model.IsHalfDaysActivated,
                                                     model.IsHideLeaveTypeName,
                                                     model.TypeName,
                                                     model.IsApprovalRequired,
                                                     model.DefaultDaysPerYear,
                                                     model.IsUnlimited,
                                                     model.IsReasonRequired,
                                                     model.IsAllowNegativeBalance,
                                                     model.Color);

            return(Single(await CommandAsync(request)));
        }