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

                using (TransactionScope ts = new TransactionScope())
                {
                    RetAddMWQMPlan retAddMWQMPlan = AddMWQMPlanAndSubElements((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en));

                    PartialViewResult partialViewResult = controller._MWQMPlanAddOrModify(retAddMWQMPlan.TVItemModelNB.TVItemID, retAddMWQMPlan.MWQMPlanModel.MWQMPlanID) as PartialViewResult;
                    Assert.IsNotNull(partialViewResult);

                    MWQMPlanController mwqmPlanController = (MWQMPlanController)partialViewResult.ViewBag.MWQMPlanController;
                    Assert.IsNotNull(mwqmPlanController);

                    int ProvinceTVItemIDRet = (int)partialViewResult.ViewBag.ProvinceTVItemID;
                    Assert.AreEqual(retAddMWQMPlan.TVItemModelNB.TVItemID, ProvinceTVItemIDRet);

                    int MWQMPlanIDRet = (int)partialViewResult.ViewBag.MWQMPlanID;
                    Assert.AreEqual(retAddMWQMPlan.MWQMPlanModel.MWQMPlanID, MWQMPlanIDRet);

                    MWQMPlanModel MWQMPlanModelRet = (MWQMPlanModel)partialViewResult.ViewBag.MWQMPlanModel;
                    Assert.IsNotNull(MWQMPlanModelRet);
                    Assert.AreEqual(retAddMWQMPlan.MWQMPlanModel.MWQMPlanID, MWQMPlanModelRet.MWQMPlanID);

                    List <MWQMPlanSubsectorModel> MWQMPlanSubsectorModelListRet = (List <MWQMPlanSubsectorModel>)partialViewResult.ViewBag.MWQMPlanSubsectorModelList;
                    Assert.IsTrue(MWQMPlanSubsectorModelListRet.Count == 1);

                    List <ContactModel> AdminContactModelListRet = (List <ContactModel>)partialViewResult.ViewBag.AdminContactModelList;
                    Assert.IsNull(AdminContactModelListRet); // because IsMWQMPlanner == true

                    ContactModel ContactModelRet = (ContactModel)partialViewResult.ViewBag.ContactModel;
                    Assert.IsNotNull(ContactModelRet);
                    Assert.AreEqual(contactModelListGood[0].ContactTVItemID, ContactModelRet.ContactTVItemID);

                    List <TVItemModel> TVItemModelSubsectorListRet = (List <TVItemModel>)partialViewResult.ViewBag.TVItemModelSubsectorList;
                    Assert.IsTrue(TVItemModelSubsectorListRet.Count > 0);

                    List <SampleTypeEnumTextOrdered> SampleTypeEnumTextOrderedListRet = (List <SampleTypeEnumTextOrdered>)partialViewResult.ViewBag.SampleTypeEnumTextOrderedList;
                    Assert.IsTrue(SampleTypeEnumTextOrderedListRet.Count > 0);

                    SampleTypeEnumTextOrdered SampleTypeEnumTextOrderedFirstRet = (SampleTypeEnumTextOrdered)partialViewResult.ViewBag.SampleTypeEnumTextOrderedFirst;
                    Assert.IsNotNull(SampleTypeEnumTextOrderedFirstRet);
                    Assert.AreEqual(SampleTypeEnum.Routine, SampleTypeEnumTextOrderedFirstRet.SampleType);

                    bool IsMWQMPlannerRet = (bool)partialViewResult.ViewBag.IsMWQMPlanner;
                    Assert.IsTrue(IsMWQMPlannerRet);
                }
            }
        }
        public void MWQMPlanController__LabSheetsTranferred_Test()
        {
            foreach (CultureInfo culture in setupData.cultureListGood)
            {
                SetupTest(contactModelListGood[0], culture, controllerAction);

                using (TransactionScope ts = new TransactionScope())
                {
                    LabSheet labSheet = (from c in labSheetService.db.LabSheets
                                         select c).FirstOrDefault();

                    if (labSheet != null)
                    {
                        labSheet.LabSheetStatus = (int)LabSheetStatusEnum.Transferred;
                        try
                        {
                            labSheetService.db.SaveChanges();
                        }
                        catch (Exception)
                        {
                            Assert.IsTrue(false);
                        }
                    }

                    PartialViewResult partialViewResult = controller._LabSheetsTranferred(labSheet.MWQMPlanID) as PartialViewResult;
                    Assert.IsNotNull(partialViewResult);

                    MWQMPlanController MWQMPlanControllerRet = (MWQMPlanController)partialViewResult.ViewBag.MWQMPlanController;
                    Assert.IsNotNull(MWQMPlanControllerRet);

                    List <ContactModel> AdminContactModelListRet = (List <ContactModel>)partialViewResult.ViewBag.AdminContactModelList;
                    Assert.IsNull(AdminContactModelListRet); // because IsMWQMPlanner == true

                    bool IsMWQMPlannerRet = (bool)partialViewResult.ViewBag.IsMWQMPlanner;
                    Assert.IsTrue(IsMWQMPlannerRet);

                    List <LabSheetModelAndA1Sheet> LabSheetModelAndA1SheetListRet = (List <LabSheetModelAndA1Sheet>)partialViewResult.ViewBag.LabSheetModelAndA1SheetList;
                    Assert.IsTrue(LabSheetModelAndA1SheetListRet.Count > 0);

                    AnalyzeMethodEnum LastAnalyzeMethodRet = (AnalyzeMethodEnum)partialViewResult.ViewBag.LastAnalyzeMethod;
                    Assert.AreEqual(AnalyzeMethodEnum.Error, LastAnalyzeMethodRet);

                    SampleMatrixEnum LastSampleMatrixRet = (SampleMatrixEnum)partialViewResult.ViewBag.LastSampleMatrix;
                    Assert.AreEqual(SampleMatrixEnum.Error, LastSampleMatrixRet);

                    LaboratoryEnum LastLaboratoryRet = (LaboratoryEnum)partialViewResult.ViewBag.LastLaboratory;
                    Assert.AreEqual(LaboratoryEnum.Error, LastLaboratoryRet);
                }
            }
        }
        private void SetupTest(ContactModel contactModelToDo, CultureInfo culture, string actionStr)
        {
            LanguageEnum languageEnum = (culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en);

            if (contactModelToDo == null)
            {
                user = null;
            }
            else
            {
                user = new GenericPrincipal(new GenericIdentity(contactModelToDo.LoginEmail, "Forms"), null);
            }
            routeData = new RouteData();
            routeData.Values.Add("culture", culture);
            routeData.Values.Add("controller", "MWQMPlan");
            routeData.Values.Add("action", actionStr);

            stubHttpContext            = new StubHttpContextBase();
            stubHttpRequestBase        = new StubHttpRequestBase();
            stubHttpContext.RequestGet = () => stubHttpRequestBase;
            requestContext             = new RequestContext(stubHttpContext, routeData);
            controller     = new MWQMPlanController();
            controller.Url = new UrlHelper(requestContext);
            controller.ControllerContext = new ControllerContext(stubHttpContext, routeData, controller);
            stubHttpContext.UserGet      = () => user;
            randomService                = new RandomService(languageEnum, user);
            mwqmPlanService              = new MWQMPlanService(languageEnum, user);
            tvItemService                = new TVItemService(languageEnum, user);
            mwqmPlanSubsectorService     = new MWQMPlanSubsectorService(languageEnum, user);
            mwqmPlanSubsectorSiteService = new MWQMPlanSubsectorSiteService(languageEnum, user);
            labSheetService              = new LabSheetService(languageEnum, user);

            controller.SetRequestContext(requestContext);

            // Assert
            Assert.IsNotNull(controller);
            Assert.AreEqual(2, controller.CultureListAllowable.Count);
            Assert.AreEqual("en-CA", controller.CultureListAllowable[0]);
            Assert.AreEqual("fr-CA", controller.CultureListAllowable[1]);
            Assert.IsNotNull(controller._ContactService);
            Assert.IsNotNull(controller._MWQMPlanController);
            Assert.IsNotNull(controller._AppTaskService);
            Assert.IsNotNull(controller._MWQMPlanService);
            Assert.IsNotNull(controller._MWQMPlanSubsectorService);
            Assert.IsNotNull(controller._MWQMPlanSubsectorSiteService);
            Assert.IsNotNull(controller._TVFileService);
            Assert.IsNotNull(controller._LabSheetService);
            Assert.IsNotNull(controller._BaseEnumService);
            Assert.IsNotNull(controller._RequestContext);
            Assert.IsNotNull(culture.Name, controller._RequestContext.RouteData.Values["culture"].ToString());
            Assert.IsNotNull("MWQMPlan", controller._RequestContext.RouteData.Values["controller"].ToString());
            Assert.IsNotNull(actionStr, controller._RequestContext.RouteData.Values["action"].ToString());
            Assert.AreEqual((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), controller.LanguageRequest);
            Assert.AreEqual((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), controller.ViewBag.Language);
            Assert.AreEqual(culture.Name, controller.CultureRequest);
            Assert.AreEqual(culture.Name, controller.ViewBag.Culture);
            if (contactModelToDo != null)
            {
                Assert.AreEqual(contactModelToDo.IsAdmin, controller.IsAdmin);
                Assert.AreEqual(contactModelToDo.IsAdmin, controller.ViewBag.IsAdmin);
            }
            Assert.AreEqual(true, controller.Debug);
            Assert.AreEqual(true, controller.ViewBag.Debug);
        }