public void VPScenarioLanguageService_PostUpdateVPScenarioLanguageDB_GetVPScenarioLanguageWithVPScenarioIDAndLanguageDB_Error_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    VPScenarioModel vpScenarioModelRet = vpScenarioServiceTest.AddVPScenarioModel();

                    LanguageEnum LangToAdd = LanguageEnum.es;

                    VPScenarioLanguageModel vpScenarioLanguageModelRet = AddVPScenarioLanguageModel(LangToAdd, vpScenarioModelRet);

                    using (ShimsContext.Create())
                    {
                        SetupShim();
                        FillVPScenarioLanguageModelUpdate(vpScenarioLanguageModelRet);

                        //string ErrorText = "ErrorText";
                        shimVPScenarioLanguageService.GetVPScenarioLanguageWithVPScenarioIDAndLanguageDBInt32LanguageEnum = (a, b) =>
                        {
                            return(null);
                        };

                        VPScenarioLanguageModel vpScenarioLanguageModelRet2 = vpScenarioLanguageService.PostUpdateVPScenarioLanguageDB(vpScenarioLanguageModelRet);
                        Assert.AreEqual(string.Format(ServiceRes.CouldNotFind_ToUpdate, ServiceRes.VPScenarioLanguage), vpScenarioLanguageModelRet2.Error);
                    }
                }
            }
        }
        public void VPScenarioLanguageService_PostUpdateVPScenarioLanguageDB_DoUpdateChanges_Error_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    VPScenarioModel vpScenarioModelRet = vpScenarioServiceTest.AddVPScenarioModel();

                    LanguageEnum LangToAdd = LanguageEnum.es;

                    VPScenarioLanguageModel vpScenarioLanguageModelRet = AddVPScenarioLanguageModel(LangToAdd, vpScenarioModelRet);

                    using (ShimsContext.Create())
                    {
                        SetupShim();
                        FillVPScenarioLanguageModelUpdate(vpScenarioLanguageModelRet);

                        string ErrorText = "ErrorText";
                        shimVPScenarioLanguageService.DoUpdateChanges = () =>
                        {
                            return(ErrorText);
                        };

                        VPScenarioLanguageModel vpScenarioLanguageModelRet2 = vpScenarioLanguageService.PostUpdateVPScenarioLanguageDB(vpScenarioLanguageModelRet);
                        Assert.AreEqual(ErrorText, vpScenarioLanguageModelRet2.Error);
                    }
                }
            }
        }
        public void VPScenarioLanguageService_PostAddVPScenarioLanguageDB_Add_Error_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    VPScenarioModel vpScenarioModelRet = vpScenarioServiceTest.AddVPScenarioModel();

                    using (ShimsContext.Create())
                    {
                        SetupShim();
                        LanguageEnum LangToAdd = LanguageEnum.es;
                        FillVPScenarioLanguageModelNew(LangToAdd, vpScenarioModelRet, vpScenarioLanguageModelNew);

                        //string ErrorText = "ErrorText";
                        shimVPScenarioLanguageService.FillVPScenarioLanguageVPScenarioLanguageVPScenarioLanguageModelContactOK = (a, b, c) =>
                        {
                            return("");
                        };

                        VPScenarioLanguageModel vpScenarioLanguageModelRet = vpScenarioLanguageService.PostAddVPScenarioLanguageDB(vpScenarioLanguageModelNew);
                        Assert.IsTrue(vpScenarioLanguageModelRet.Error.StartsWith(string.Format(ServiceRes.CouldNotAddError_, "").Substring(0, 10)));
                    }
                }
            }
        }
        public void VPScenarioLanguageService_PostDeleteVPScenarioLanguageDB_IsContactOK_Error_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    VPScenarioModel vpScenarioModelRet = vpScenarioServiceTest.AddVPScenarioModel();

                    LanguageEnum LangToAdd = LanguageEnum.es;

                    VPScenarioLanguageModel vpScenarioLanguageModelRet = AddVPScenarioLanguageModel(LangToAdd, vpScenarioModelRet);

                    VPScenarioLanguageModel vpScenarioLanguageModelRet2 = UpdateVPScenarioLanguageModel(vpScenarioLanguageModelRet);

                    using (ShimsContext.Create())
                    {
                        SetupShim();
                        string ErrorText = "ErrorText";
                        shimVPScenarioLanguageService.IsContactOK = () =>
                        {
                            return(new ContactOK()
                            {
                                Error = ErrorText
                            });
                        };

                        VPScenarioLanguageModel vpScenarioLanguageModelRet3 = vpScenarioLanguageService.PostDeleteVPScenarioLanguageDB(vpScenarioLanguageModelRet2.VPScenarioID, LangToAdd);
                        Assert.AreEqual(ErrorText, vpScenarioLanguageModelRet3.Error);
                    }
                }
            }
        }
        public void VPScenarioLanguageService_PostAddVPScenarioLanguageDB_VPScenarioModelOK_Error_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    using (ShimsContext.Create())
                    {
                        VPScenarioModel vpScenarioModelRet = vpScenarioServiceTest.AddVPScenarioModel();

                        LanguageEnum LangToAdd = LanguageEnum.es;
                        FillVPScenarioLanguageModelNew(LangToAdd, vpScenarioModelRet, vpScenarioLanguageModelNew);

                        string ErrorText = "ErrorText";
                        ShimVPScenarioLanguageService shimVPScenarioLanguageService = new ShimVPScenarioLanguageService(vpScenarioLanguageService);
                        shimVPScenarioLanguageService.VPScenarioLanguageModelOKVPScenarioLanguageModel = (a) =>
                        {
                            return(ErrorText);
                        };

                        VPScenarioLanguageModel vpScenarioLanguageModelRet = vpScenarioLanguageService.PostAddVPScenarioLanguageDB(vpScenarioLanguageModelNew);
                        Assert.AreEqual(ErrorText, vpScenarioLanguageModelRet.Error);
                    }
                }
            }
        }
        // Check
        public string VPScenarioLanguageModelOK(VPScenarioLanguageModel vpScenarioLanguageModel)
        {
            string retStr = FieldCheckNotZeroInt(vpScenarioLanguageModel.VPScenarioID, ServiceRes.VPScenarioID);

            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }

            retStr = _BaseEnumService.LanguageOK(vpScenarioLanguageModel.Language);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }

            retStr = FieldCheckNotNullAndMinMaxLengthString(vpScenarioLanguageModel.VPScenarioName, ServiceRes.VPScenarioName, 3, 100);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }

            retStr = _BaseEnumService.DBCommandOK(vpScenarioLanguageModel.DBCommand);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }

            return("");
        }
        private void FillVPScenarioLanguageModelUpdate(VPScenarioLanguageModel vpScenarioLanguageModel)
        {
            vpScenarioLanguageModel.VPScenarioName    = randomService.RandomString("VPScenarioName", 30);
            vpScenarioLanguageModel.TranslationStatus = TranslationStatusEnum.Translated;

            Assert.IsTrue(vpScenarioLanguageModel.VPScenarioName.Length == 30);
            Assert.IsTrue(vpScenarioLanguageModel.TranslationStatus == TranslationStatusEnum.Translated);
        }
        // Post
        public VPScenarioLanguageModel PostAddVPScenarioLanguageDB(VPScenarioLanguageModel vpScenarioLanguageModel)
        {
            string retStr = VPScenarioLanguageModelOK(vpScenarioLanguageModel);

            if (!string.IsNullOrEmpty(retStr))
            {
                return(ReturnError(retStr));
            }

            ContactOK contactOK = IsContactOK();

            if (!string.IsNullOrEmpty(contactOK.Error))
            {
                return(ReturnError(contactOK.Error));
            }

            VPScenarioLanguageModel vpScenarioLanguageModelExist = GetVPScenarioLanguageModelWithVPScenarioIDAndLanguageDB(vpScenarioLanguageModel.VPScenarioID, vpScenarioLanguageModel.Language);

            if (string.IsNullOrWhiteSpace(vpScenarioLanguageModelExist.Error))
            {
                return(ReturnError(string.Format(ServiceRes._AlreadyExists, ServiceRes.VPScenarioLanguage)));
            }

            VPScenarioLanguage vpScenarioLanguageNew = new VPScenarioLanguage();

            retStr = FillVPScenarioLanguage(vpScenarioLanguageNew, vpScenarioLanguageModel, contactOK);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(ReturnError(retStr));
            }

            using (TransactionScope ts = new TransactionScope())
            {
                db.VPScenarioLanguages.Add(vpScenarioLanguageNew);
                retStr = DoAddChanges();
                if (!string.IsNullOrWhiteSpace(retStr))
                {
                    return(ReturnError(retStr));
                }

                LogModel logModel = _LogService.PostAddLogForObj("VPScenarioLanguages", vpScenarioLanguageNew.VPScenarioLanguageID, LogCommandEnum.Add, vpScenarioLanguageNew);
                if (!string.IsNullOrWhiteSpace(logModel.Error))
                {
                    return(ReturnError(logModel.Error));
                }

                ts.Complete();
            }
            return(GetVPScenarioLanguageModelWithVPScenarioIDAndLanguageDB(vpScenarioLanguageNew.VPScenarioID, vpScenarioLanguageModel.Language));
        }
        public void VPScenarioLanguageService_ReturnError_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    string ErrorText = "ErrorText";
                    VPScenarioLanguageModel vpScenarioLanguageModelRet = vpScenarioLanguageService.ReturnError(ErrorText);
                    Assert.AreEqual(ErrorText, vpScenarioLanguageModelRet.Error);
                }
            }
        }
        private VPScenarioLanguageModel UpdateVPScenarioLanguageModel(VPScenarioLanguageModel vpScenarioLanguageModelRet)
        {
            FillVPScenarioLanguageModelUpdate(vpScenarioLanguageModelRet);

            VPScenarioLanguageModel vpScenarioLanguageModelRet2 = vpScenarioLanguageService.PostUpdateVPScenarioLanguageDB(vpScenarioLanguageModelRet);

            if (!string.IsNullOrWhiteSpace(vpScenarioLanguageModelRet2.Error))
            {
                return(vpScenarioLanguageModelRet2);
            }

            Assert.IsNotNull(vpScenarioLanguageModelRet2);
            CompareVPScenarioLanguageModels(vpScenarioLanguageModelRet, vpScenarioLanguageModelRet2);

            return(vpScenarioLanguageModelRet2);
        }
        public void SetupTest(ContactModel contactModelToDo, CultureInfo culture)
        {
            Thread.CurrentThread.CurrentCulture   = culture;
            Thread.CurrentThread.CurrentUICulture = culture;

            contactModel               = contactModelToDo;
            user                       = new GenericPrincipal(new GenericIdentity(contactModel.LoginEmail, "Forms"), null);
            vpScenarioService          = new VPScenarioService((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), user);
            vpScenarioLanguageService  = new VPScenarioLanguageService((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), user);
            testDBService              = new TestDBService((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), user, TableName, Plurial);
            randomService              = new RandomService((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), user);
            vpScenarioLanguageModelNew = new VPScenarioLanguageModel();
            vpScenarioLanguage         = new VPScenarioLanguage();
            vpScenarioServiceTest      = new VPScenarioServiceTest();
            vpScenarioServiceTest.SetupTest(contactModelToDo, culture);
        }
        public VPScenarioLanguageModel PostUpdateVPScenarioLanguageDB(VPScenarioLanguageModel vpScenarioLanguageModel)
        {
            string retStr = VPScenarioLanguageModelOK(vpScenarioLanguageModel);

            if (!string.IsNullOrEmpty(retStr))
            {
                return(ReturnError(retStr));
            }

            ContactOK contactOK = IsContactOK();

            if (!string.IsNullOrEmpty(contactOK.Error))
            {
                return(ReturnError(contactOK.Error));
            }

            VPScenarioLanguage vpScenarioLanguageToUpdate = GetVPScenarioLanguageWithVPScenarioIDAndLanguageDB(vpScenarioLanguageModel.VPScenarioID, vpScenarioLanguageModel.Language);

            if (vpScenarioLanguageToUpdate == null)
            {
                return(ReturnError(string.Format(ServiceRes.CouldNotFind_ToUpdate, ServiceRes.VPScenarioLanguage)));
            }

            retStr = FillVPScenarioLanguage(vpScenarioLanguageToUpdate, vpScenarioLanguageModel, contactOK);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(ReturnError(retStr));
            }

            using (TransactionScope ts = new TransactionScope())
            {
                retStr = DoUpdateChanges();
                if (!string.IsNullOrWhiteSpace(retStr))
                {
                    return(ReturnError(retStr));
                }

                LogModel logModel = _LogService.PostAddLogForObj("VPScenarioLanguages", vpScenarioLanguageToUpdate.VPScenarioLanguageID, LogCommandEnum.Change, vpScenarioLanguageToUpdate);
                if (!string.IsNullOrWhiteSpace(logModel.Error))
                {
                    return(ReturnError(logModel.Error));
                }

                ts.Complete();
            }
            return(GetVPScenarioLanguageModelWithVPScenarioIDAndLanguageDB(vpScenarioLanguageToUpdate.VPScenarioID, vpScenarioLanguageModel.Language));
        }
        private VPScenarioLanguageModel AddVPScenarioLanguageModel(LanguageEnum LangToAdd, VPScenarioModel vpScenarioModel)
        {
            VPScenarioLanguageModel vpScenarioLanguageModelNew = new VPScenarioLanguageModel();

            FillVPScenarioLanguageModelNew(LangToAdd, vpScenarioModel, vpScenarioLanguageModelNew);

            VPScenarioLanguageModel vpScenarioLanguagModelRet = vpScenarioLanguageService.PostAddVPScenarioLanguageDB(vpScenarioLanguageModelNew);

            if (!string.IsNullOrWhiteSpace(vpScenarioLanguagModelRet.Error))
            {
                return(vpScenarioLanguagModelRet);
            }

            Assert.IsNotNull(vpScenarioLanguagModelRet);
            CompareVPScenarioLanguageModels(vpScenarioLanguageModelNew, vpScenarioLanguagModelRet);

            return(vpScenarioLanguagModelRet);
        }
        public void VPScenarioLanguageService_GetVPScenarioModelCountDB_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    VPScenarioModel vpScenarioModelRet = vpScenarioServiceTest.AddVPScenarioModel();

                    LanguageEnum LangToAdd = LanguageEnum.es;

                    VPScenarioLanguageModel vpScenarioModelLanguageRet = AddVPScenarioLanguageModel(LangToAdd, vpScenarioModelRet);

                    int vpScenarioCount = vpScenarioLanguageService.GetVPScenarioLanguageModelCountDB();
                    Assert.AreEqual(testDBService.Count + 3, vpScenarioCount);
                }
            }
        }
        public void VPScenarioLanguageService_PostAddVPScenarioLanguageDB_Good_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    VPScenarioModel vpScenarioModelRet = vpScenarioServiceTest.AddVPScenarioModel();

                    LanguageEnum LangToAdd = LanguageEnum.es;

                    VPScenarioLanguageModel vpScenarioLanguageModelRet = AddVPScenarioLanguageModel(LangToAdd, vpScenarioModelRet);

                    VPScenarioLanguageModel vpScenarioLanguageModelRet2 = UpdateVPScenarioLanguageModel(vpScenarioLanguageModelRet);

                    VPScenarioLanguageModel vpScenarioLanguageModelRet3 = vpScenarioLanguageService.PostDeleteVPScenarioLanguageDB(vpScenarioLanguageModelRet2.VPScenarioID, LangToAdd);
                    Assert.AreEqual("", vpScenarioLanguageModelRet3.Error);
                }
            }
        }
        public void VPScenarioLanguageService_PostAddVPScenarioLanguageDB_UserEmailNotValidated_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    VPScenarioModel vpScenarioModelRet = vpScenarioServiceTest.AddVPScenarioModel();

                    LanguageEnum LangToAdd = LanguageEnum.es;

                    ContactModel contactModelBad = contactModelListGood[2];
                    IPrincipal   userBad         = new GenericPrincipal(new GenericIdentity(contactModelBad.LoginEmail, "Forms"), null);
                    vpScenarioLanguageService = new VPScenarioLanguageService((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), userBad);

                    VPScenarioLanguageModel vpScenarioLanguageModelRet = AddVPScenarioLanguageModel(LangToAdd, vpScenarioModelRet);
                    Assert.AreEqual(ServiceRes.EmailRequiresValidation, vpScenarioLanguageModelRet.Error);
                }
            }
        }
        public void VPScenarioLanguageService_GetVPScenarioLanguageWithVPScenarioIDAndLanguageDB_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture);

                using (TransactionScope ts = new TransactionScope())
                {
                    VPScenarioModel vpScenarioModelRet = vpScenarioServiceTest.AddVPScenarioModel();

                    LanguageEnum LangToAdd = LanguageEnum.es;

                    VPScenarioLanguageModel vpScenarioLanguageModelRet = AddVPScenarioLanguageModel(LangToAdd, vpScenarioModelRet);

                    VPScenarioLanguage vpScenarioLanguageRet2 = vpScenarioLanguageService.GetVPScenarioLanguageWithVPScenarioIDAndLanguageDB(vpScenarioLanguageModelRet.VPScenarioID, LangToAdd);
                    Assert.AreEqual(vpScenarioLanguageModelRet.VPScenarioID, vpScenarioLanguageRet2.VPScenarioID);
                    Assert.AreEqual(vpScenarioLanguageModelRet.Language, (LanguageEnum)vpScenarioLanguageRet2.Language);
                    Assert.AreEqual(LangToAdd, (LanguageEnum)vpScenarioLanguageRet2.Language);
                }
            }
        }
        public VPScenarioLanguageModel GetVPScenarioLanguageModelWithVPScenarioIDAndLanguageDB(int VPScenarioID, LanguageEnum Language)
        {
            VPScenarioLanguageModel vpScenarioLanguageModel = (from c in db.VPScenarioLanguages
                                                               where c.VPScenarioID == VPScenarioID &&
                                                               c.Language == (int)Language
                                                               select new VPScenarioLanguageModel
            {
                Error = "",
                VPScenarioID = c.VPScenarioID,
                DBCommand = (DBCommandEnum)c.DBCommand,
                Language = (LanguageEnum)c.Language,
                TranslationStatus = (TranslationStatusEnum)c.TranslationStatus,
                VPScenarioName = c.VPScenarioName,
                LastUpdateDate_UTC = c.LastUpdateDate_UTC,
                LastUpdateContactTVItemID = c.LastUpdateContactTVItemID,
            }).FirstOrDefault <VPScenarioLanguageModel>();

            if (vpScenarioLanguageModel == null)
            {
                return(ReturnError(string.Format(ServiceRes.CouldNotFind_With_Equal_, ServiceRes.VPScenarioLanguage, ServiceRes.VPScenarioID + "," + ServiceRes.Language, VPScenarioID.ToString() + "," + Language)));
            }

            return(vpScenarioLanguageModel);
        }
        // Fill
        public string FillVPScenarioLanguage(VPScenarioLanguage vpScenarioLanguageNew, VPScenarioLanguageModel vpScenarioLanguageModel, ContactOK contactOK)
        {
            vpScenarioLanguageNew.DBCommand          = (int)vpScenarioLanguageModel.DBCommand;
            vpScenarioLanguageNew.VPScenarioID       = vpScenarioLanguageModel.VPScenarioID;
            vpScenarioLanguageNew.Language           = (int)vpScenarioLanguageModel.Language;
            vpScenarioLanguageNew.TranslationStatus  = (int)vpScenarioLanguageModel.TranslationStatus;
            vpScenarioLanguageNew.VPScenarioName     = vpScenarioLanguageModel.VPScenarioName;
            vpScenarioLanguageNew.LastUpdateDate_UTC = DateTime.UtcNow;
            if (contactOK == null)
            {
                vpScenarioLanguageNew.LastUpdateContactTVItemID = 2;
            }
            else
            {
                vpScenarioLanguageNew.LastUpdateContactTVItemID = contactOK.ContactTVItemID;
            }

            return("");
        }
 private void CompareVPScenarioLanguageModels(VPScenarioLanguageModel vpScenarioLanguageModelNew, VPScenarioLanguageModel vpScenarioLanguageModelRet)
 {
     Assert.AreEqual(vpScenarioLanguageModelNew.Language, vpScenarioLanguageModelRet.Language);
     Assert.AreEqual(vpScenarioLanguageModelNew.VPScenarioName, vpScenarioLanguageModelRet.VPScenarioName);
 }
        private void FillVPScenarioLanguageModelNew(LanguageEnum Language, VPScenarioModel vpScenarioModel, VPScenarioLanguageModel vpScenarioLanguageModel)
        {
            vpScenarioLanguageModel.VPScenarioID      = vpScenarioModel.VPScenarioID;
            vpScenarioLanguageModel.VPScenarioName    = randomService.RandomString("VPScenarioName", 30);
            vpScenarioLanguageModel.Language          = Language;
            vpScenarioLanguageModel.TranslationStatus = TranslationStatusEnum.Translated;

            Assert.IsTrue(vpScenarioLanguageModel.VPScenarioID != 0);
            Assert.IsTrue(vpScenarioLanguageModel.VPScenarioName.Length == 30);
            Assert.IsTrue(vpScenarioLanguageModel.Language == Language);
            Assert.IsTrue(vpScenarioLanguageModel.TranslationStatus == TranslationStatusEnum.Translated);
        }