Ejemplo n.º 1
0
        public void GetIdCardMustReturnWelcomeMessageIfCardIsRegistered()
        {
            //arrange
            var _dbContext = AllocateInMemoryDatabaseContext("testDB2");

            var employeeInputData = new EmployeeInputData
            {
                CardIdNumber = "KAS123ZKLX1234",
                EmployeeId   = "AKJSDL91283",
                Name         = "Pavel Vjalicin",
                Email        = "*****@*****.**",
                MobileNumber = "+1234 1234 1234 1234"
            };
            var employee = new Employee(employeeInputData);

            _dbContext.Employees.Add(employee);
            _dbContext.SaveChanges();

            var controller = new EmployeeController(_dbContext);
            //act

            var result = controller.Get(employee.CardIdNumber);

            //assert
            var okResult = Assert.IsType <OkObjectResult>(result);

            Assert.Equal("Welcome " + employee.Name, okResult.Value);
        }
Ejemplo n.º 2
0
        public void EmployeeMustBeAbleToUpdateCredit()
        {
            //arrange
            var _dbContext = AllocateInMemoryDatabaseContext("testDB4");

            var employeeInputData = new EmployeeInputData
            {
                CardIdNumber = "KAS123ZKLX1234",
                EmployeeId   = "AKJSDL91283",
                Name         = "Pavel Vjalicin",
                Email        = "*****@*****.**",
                MobileNumber = "+1234 1234 1234 1234"
            };
            var employee = new Employee(employeeInputData);

            _dbContext.Employees.Add(employee);
            _dbContext.SaveChanges();

            var controller = new EmployeeController(_dbContext);

            //act
            var putResult = controller.PutCredit(employee.CardIdNumber, 255.55m);
            var getResult = controller.GetCredit(employee.CardIdNumber);

            //assert
            Assert.IsType <OkResult>(putResult);
            var getOkResult = Assert.IsType <OkObjectResult>(getResult);

            Assert.Equal(255.55m, getOkResult.Value);
        }
Ejemplo n.º 3
0
        private async Task <Employee> PopulateEntityDataWithViewData(EmployeeInputData viewData, Guid entityId)
        {
            var getCurrent = await _repository.GetByIdAsync <Employee>(entityId);

            getCurrent.ExperienceLevel = viewData.ExperienceLevel != getCurrent.ExperienceLevel ? viewData.ExperienceLevel : getCurrent.ExperienceLevel;
            getCurrent.FirstName       = viewData.FirstName ?? getCurrent.FirstName;
            getCurrent.LastName        = viewData.LastName ?? getCurrent.LastName;
            getCurrent.OfficeId        = viewData?.OfficeId ?? getCurrent.OfficeId;
            getCurrent.ProfileImage    = viewData.ProfileImage ?? getCurrent.ProfileImage;
            getCurrent.Salary          = viewData?.Salary ?? getCurrent.Salary;
            getCurrent.VacationDays    = viewData?.VacationDays ?? getCurrent.VacationDays;
            getCurrent.StartingDate    = viewData?.StartingDate ?? getCurrent.StartingDate;

            return(getCurrent);
        }
Ejemplo n.º 4
0
 public Employee Create(EmployeeInputData viewData)
 {
     return(new Employee
     {
         ExperienceLevel = viewData.ExperienceLevel,
         FirstName = viewData.FirstName,
         LastName = viewData.LastName,
         OfficeId = viewData.OfficeId,
         CompanyId = viewData.CompanyId,
         ProfileImage = viewData.ProfileImage,
         Salary = viewData.Salary,
         VacationDays = viewData.VacationDays,
         StartingDate = viewData.StartingDate
     });
 }
Ejemplo n.º 5
0
        public async Task <EntityActionOutcome> UpdateEntityAsync(EmployeeInputData viewData, Guid id)
        {
            var validator = new EmployeeDataInputValidator();
            var result    = validator.Validate(viewData);

            if (result.IsValid == false)
            {
                return(EntityActionOutcome.UpdateFailed);
            }

            var updateSuccessful = await _repository.UpdateAsync(
                await PopulateEntityDataWithViewData(viewData, id));

            if (updateSuccessful == null)
            {
                return(EntityActionOutcome.EntityNotFound);
            }

            return(EntityActionOutcome.Success);
        }
Ejemplo n.º 6
0
        public async Task <EntityActionOutcome> CreateEntityAsync(EmployeeInputData viewData)
        {
            var newEntity = _factory.Create(viewData);
            var validator = new EmployeeDataInputValidator();
            var result    = validator.Validate(viewData);

            if (result.IsValid == false)
            {
                return(EntityActionOutcome.MissingFullEntityData);
            }

            var upsertSuccessful = await _repository.AddAsync(newEntity);

            if (upsertSuccessful == null)
            {
                return(EntityActionOutcome.CreateFailed);
            }

            return(EntityActionOutcome.Success);
        }
        public IActionResult Put([FromBody] EmployeeInputData employeeInputData)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var employee = _context.Employees.Find(employeeInputData.CardIdNumber);

            if (employee == null)
            {
                return(NotFound("No employee found with this card id"));
            }

            employee.Update(employeeInputData);

            _context.Employees.Update(employee);
            _context.SaveChanges();

            return(Ok());
        }
Ejemplo n.º 8
0
        public void CardIdMustOnlyCantainAlphaNumericCharacters()
        {
            //arrange
            var employeeInputData = new EmployeeInputData
            {
                CardIdNumber = "KAS12{}3Z KLX1234",
                EmployeeId   = "AKJSDL91283",
                Name         = "Pavel Vjalicin",
                Email        = "*****@*****.**",
                MobileNumber = "+1234 1234 1234 1234"
            };

            var employee = new Employee(employeeInputData);

            //act
            //CardID Must only contain alphanumeric characters
            var modelError = GetModelError(employee);

            //assert
            Assert.True(modelError.ErrorMessage != null);
        }
Ejemplo n.º 9
0
        public void EmployeeIsInitialisedProperlyFromEmployeeInputData()
        {
            //arange
            var employeeInputData = new EmployeeInputData
            {
                CardIdNumber = "KAS123ZKLX1234",
                EmployeeId   = "AKJSDL91283",
                Name         = "Pavel Vjalicin",
                Email        = "*****@*****.**",
                MobileNumber = "+1234 1234 1234 1234"
            };
            var employee = new Employee(employeeInputData);

            //act and assert
            Assert.Equal(0, employee.Credit);
            Assert.Equal("1234", employee.PinNumber);
            Assert.Equal(employeeInputData.CardIdNumber, employee.CardIdNumber);
            Assert.Equal(employeeInputData.EmployeeId, employee.EmployeeId);
            Assert.Equal(employeeInputData.Name, employee.Name);
            Assert.Equal(employeeInputData.Email, employee.Email);
            Assert.Equal(employeeInputData.MobileNumber, employee.MobileNumber);
        }
        public IActionResult Post([FromBody] EmployeeInputData employeeInputData)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //Checking the databse if employee with cardId already exists.
            var existingEmployee = _context.Employees.Find(employeeInputData.CardIdNumber);

            if (existingEmployee != null)
            {
                return(BadRequest("Employee with this card id already exists"));
            }

            var employee = new Employee(employeeInputData);

            _context.Employees.Add(employee);

            _context.SaveChanges();

            return(Ok());
        }
        public async Task <HttpStatusCode> Update(EmployeeInputData inputData, Guid id)
        {
            var updateEntityOutcome = await _service.UpdateEntityAsync(inputData, id);

            return(_resultFactory.Create(updateEntityOutcome));
        }
        public async Task <HttpStatusCode> Create(EmployeeInputData inputData)
        {
            var createEntityOutcome = await _service.CreateEntityAsync(inputData);

            return(_resultFactory.Create(createEntityOutcome));
        }