コード例 #1
0
        public void CheckIfEmployeePersonalDetailsIsSaved()
        {
            // ARRANGE
            var uow = Mock.Create<IQTecUnitOfWork>(Behavior.Loose);

            var employeeToBeUpdated = new Employee
            {
                DateOfBirth = new DateTime(2012, 1, 1),
                DesignationId = 2,
                Email = "*****@*****.**",
                FirstName = "Abc",
                LastName = "XYZ"
            };

             var employeePersonalDtoinParamater = new EmployeePersonalInfo
                                                {
                                                    DateOfBirth = new DateTime(2012, 1, 1),
                                                    DesignationId = 2,
                                                    Email = "*****@*****.**",
                                                    FirstName = "AbcDef", //firstname is changed
                                                    LastName = "XYZ"
                                                };
            Mock.Arrange(() => uow.EmployeeRepository.GetById(Arg.AnyInt)).Returns(employeeToBeUpdated);

            Mock.Arrange(() => uow.EmployeeRepository.Update(Arg.IsAny<Employee>()))
                .DoInstead(() => { employeeToBeUpdated.FirstName = employeePersonalDtoinParamater.FirstName; })
                .OccursOnce();

            Mock.Arrange(() => uow.EmployeeLanguagesRepository.GetAll()).DoNothing();

            // ACT
            var classunderTest = new EmployeeManager(uow);
            classunderTest.SaveEmployee(1, employeePersonalDtoinParamater, null);

            // ASSERT
            Assert.AreEqual("AbcDef", employeeToBeUpdated.FirstName);
            Mock.Assert(uow);
        }
コード例 #2
0
        public void CheckWhetherLanguagesAreGettingUpdatedInEmployeeSave()
        {
            // ARRANGE
            var uow = Mock.Create<IQTecUnitOfWork>(Behavior.Loose);

            var employeeToBeUpdated = new Employee
            {
                DateOfBirth = new DateTime(2012, 1, 1),
                DesignationId = 2,
                Email = "*****@*****.**",
                FirstName = "Abc",
                LastName = "XYZ"
            };

            var employeePersonalDtoinParamater = new EmployeePersonalInfo
            {
                DateOfBirth = new DateTime(2012, 1, 1),
                DesignationId = 2,
                Email = "*****@*****.**",
                FirstName = "AbcDef", // firstname is changed
                LastName = "XYZ"
            };
            Mock.Arrange(() => uow.EmployeeRepository.GetById(Arg.AnyInt)).Returns(employeeToBeUpdated);

            var currentEmployeeLanguagesKnown = new List<EmployeeLanguages>
                                                    {
                                                        new EmployeeLanguages
                                                            {
                                                                EmployeeId = 1,
                                                                Fluency = 1,
                                                                LanguageId = 1
                                                            },
                                                        new EmployeeLanguages
                                                            {
                                                                EmployeeId = 1,
                                                                Fluency = 1,
                                                                LanguageId = 2
                                                            }
                                                    };

            Mock.Arrange(() => uow.EmployeeLanguagesRepository.GetAll()).Returns(currentEmployeeLanguagesKnown.AsQueryable);

            //// updating fluency from 1 to 2
            var employeeLanguagesInfoParamater = new List<EmployeeLanguageInfo>
                                                     {
                                                         new EmployeeLanguageInfo
                                                             {
                                                                 EmployeeId = 1,
                                                                 Fluency = (Fluency)2,
                                                                 LanguageId = 1
                                                             },
                                                         new EmployeeLanguageInfo
                                                             {
                                                                 EmployeeId = 1,
                                                                 Fluency = (Fluency)2,
                                                                 LanguageId = 2
                                                             }
                                                     };

            Mock.Arrange(() => uow.EmployeeLanguagesRepository.Update(Arg.IsAny<EmployeeLanguages>())).DoInstead(
                () =>
                    {
                        foreach (var employeeLanguageInfo in employeeLanguagesInfoParamater)
                        {
                            var languageToBeUpdated =
                                currentEmployeeLanguagesKnown.FirstOrDefault(
                                    lang => lang.EmployeeId == 1 && lang.LanguageId == employeeLanguageInfo.LanguageId);

                            if (languageToBeUpdated != null)
                            {
                                languageToBeUpdated.Fluency = (int)employeeLanguageInfo.Fluency;

                            }
                        }
                    });

            // ACT
            var classunderTest = new EmployeeManager(uow);
            classunderTest.SaveEmployee(1, employeePersonalDtoinParamater, employeeLanguagesInfoParamater);

            // ASSERT
            var firstOrDefault = currentEmployeeLanguagesKnown.FirstOrDefault();
            if (firstOrDefault != null)
            {
                Assert.AreEqual(2, firstOrDefault.Fluency);
            }

            Mock.Assert(uow);
        }
コード例 #3
0
        public bool SaveEmployee(int employeeId, EmployeePersonalInfo personalInfo, List<EmployeeLanguageInfo> employeeLanguageListInfo)
        {
            if (!personalInfo.IsValid())
            {
                throw new BusinessRulesException(personalInfo.Errors.ToErrorMessage());
            }

            if (employeeId > 0) // update employee
            {
                var employeetobeUpdated = this.qTecUnitOfWork.EmployeeRepository.GetById(employeeId);
                var languagesToBeDeleted = new List<EmployeeLanguages>();
                if (employeetobeUpdated != null && personalInfo != null)
                {
                    //// TODO Use Auto Mapper so that this conversion doesn't take place
                    employeetobeUpdated.FirstName = personalInfo.FirstName;
                    employeetobeUpdated.LastName = personalInfo.LastName;
                    employeetobeUpdated.EmployeeId = employeeId;
                    employeetobeUpdated.Email = personalInfo.Email;
                    employeetobeUpdated.DesignationId = personalInfo.DesignationId;

                }

                //// get list of current employee languages which are not available in the employeeLanguageListInfo param

                if (employeetobeUpdated != null && employeeLanguageListInfo != null)
                {
                    var employeeLanguages =
                        this.qTecUnitOfWork.EmployeeLanguagesRepository.GetAll().Where(employeeLanguage => employeeLanguage.EmployeeId.Equals(employeetobeUpdated.EmployeeId));

                    foreach (var employeeLanguage in employeeLanguages)
                    {
                        var langId = employeeLanguage.LanguageId;
                        var found = false;

                        if (employeeLanguageListInfo != null)
                        {
                            foreach (var languageInfo in employeeLanguageListInfo)
                            {
                                if (languageInfo.LanguageId.Equals(langId))
                                {
                                    found = true; //// language is present in the employeeLanguages
                                }
                            }
                        }

                        if (!found)
                        {
                            //// language is not found so add it in the list of deleted
                            languagesToBeDeleted.Add(employeeLanguage);
                        }
                    }
                    foreach (var employeeLanguage in languagesToBeDeleted)
                    {
                       this.qTecUnitOfWork.EmployeeLanguagesRepository.Delete(employeeLanguage);
                    }

                    if (employeeLanguageListInfo != null)
                    {
                        foreach (var employeeLanguageInfo in employeeLanguageListInfo)
                        {

                            var languageTobeUpdated =
                                employeeLanguages.FirstOrDefault(
                                    e =>
                                    e.EmployeeId.Equals(employeeId) && e.LanguageId.Equals(employeeLanguageInfo.LanguageId));

                            //var languageTobeUpdated =this.qTecUnitOfWork.EmployeeLanguagesRepository.GetById(employeeLanguageInfo.LanguageId);

                            if (languageTobeUpdated != null)
                            {
                                this.qTecUnitOfWork.EmployeeLanguagesRepository.Update(languageTobeUpdated);
                            }
                            else
                            {
                                //// the language is not found in the current languages collection that is associated with the employee so add a new
                                this.qTecUnitOfWork.EmployeeLanguagesRepository.Add(new EmployeeLanguages
                                                                                        {
                                                                                            EmployeeId = employeeLanguageInfo.EmployeeId,
                                                                                            Fluency = (int)employeeLanguageInfo.Fluency,
                                                                                            LanguageId = employeeLanguageInfo.LanguageId
                                                                                        });
                            }

                        }
                    }
                }

                    this.qTecUnitOfWork.EmployeeRepository.Update(employeetobeUpdated);
                    this.qTecUnitOfWork.Commit();
                return true;
            }
            return false;
        }