예제 #1
0
        public ActionResult EditApplicationUser(ApplicationUserModel model)
        {
            var result   = model.ToDto(_uow.LanguagesRepository.Get().ToList());
            var original = _uow.UsersRepository.Get().FirstOrDefault(x => x.Id == model.Id);

            if (original != null)
            {
                foreach (var text in original.DisplayWork.ToList())
                {
                    _uow.TextsRepository.Delete(text);
                }

                foreach (var text in original.ApplicationUserPresentations.ToList())
                {
                    _uow.TextsRepository.Delete(text);
                }

                foreach (var text in original.PresentationTitleTexts.ToList())
                {
                    _uow.TextsRepository.Delete(text);
                }

                foreach (var text in original.PresentationSubTitleTexts.ToList())
                {
                    _uow.TextsRepository.Delete(text);
                }

                _uow.UsersRepository.Delete(original);
            }

            _uow.UsersRepository.Insert(result);
            _uow.Save();
            return(RedirectToAction(nameof(Index)));
        }
        public void EditApplicationUser_Post_Test()
        {
            // Act
            var uow        = new UnitOfWorkFakeFactory().Uow;
            var usersCount = uow.Object.UsersRepository.Get().Count();
            var paramUser  = new ApplicationUserModel
            {
                Id          = 1,
                City        = "Prades",
                DateOfBirth = new DateTime(1990, 9, 21),
                Email       = "*****@*****.**",
                FamilyName  = "DURANT",
                FirstName   = "Jacques",
                LinkedInUrl = "LinkedInUrl",
                TwitterName = "",
                DisplayWork = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.Object.LanguagesRepository.Get().ToList()[0], Value = "NewJob.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.Object.LanguagesRepository.Get().ToList()[1], Value = "NewJob.en"
                    }
                },
                PresentationTexts = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.Object.LanguagesRepository.Get().ToList()[0], Value = "NewPresentation.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.Object.LanguagesRepository.Get().ToList()[1], Value = "NewPresentaiton.en"
                    }
                },
                PresentationSubTitleTexts = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.Object.LanguagesRepository.Get().ToList()[0], Value = "NewPresentationSubTitle.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.Object.LanguagesRepository.Get().ToList()[1], Value = "NewPresentationSubTitle.en"
                    }
                },
                PresentationTitleTexts = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.Object.LanguagesRepository.Get().ToList()[0], Value = "NewPresentationTitle.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.Object.LanguagesRepository.Get().ToList()[1], Value = "NewPresentationTitle.en"
                    }
                }
            };

            var result = new HomeController(uow.Object).EditApplicationUser(paramUser) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["Action"], nameof(HomeController.Index));

            Assert.AreEqual(usersCount, uow.Object.UsersRepository.Get().Count());
            var expected    = paramUser.ToDto(uow.Object.LanguagesRepository.Get().ToList());
            var resultModel = uow.Object.UsersRepository.Get().First();

            AssertExtension.PropertyValuesAreEquals(resultModel, expected);
        }
        public void Should_Transform_ApplicationUserModel_To_ApplicationUser()
        {
            var expected = new ApplicationUser()
            {
                Id          = 1,
                City        = "Perpignan",
                DateOfBirth = new DateTime(2000, 1, 20),
                FamilyName  = "Dupont",
                FirstName   = "Gilles",
                Email       = "*****@*****.**",
                PhoneNumber = "0033468000000",
                ZipCode     = "66000",
                LinkedInUrl = "gilles.dupont66",
                TwitterName = "gillesDupont",
                DisplayWork = new List <Text>()
                {
                    new Text()
                    {
                        Language = _languages[0], Value = "jb1.fr"
                    },
                    new Text()
                    {
                        Language = _languages[1], Value = "jb1.en"
                    }
                },
                ApplicationUserPresentations = new List <Text>()
                {
                    new Text()
                    {
                        Language = _languages[0], Value = "Presentation.fr"
                    },
                    new Text()
                    {
                        Language = _languages[1], Value = "Presentation.en"
                    }
                },
                PresentationTitleTexts = new List <Text>()
                {
                    new Text()
                    {
                        Language = _languages[0], Value = "PresentationTitle.fr"
                    },
                    new Text()
                    {
                        Language = _languages[1], Value = "PresentationTitle.en"
                    }
                },
                PresentationSubTitleTexts = new List <Text>()
                {
                    new Text()
                    {
                        Language = _languages[0], Value = "PresentationSubTitle.fr"
                    },
                    new Text()
                    {
                        Language = _languages[1], Value = "PresentationSubTitle.en"
                    }
                }
            };

            var model = new ApplicationUserModel()
            {
                Id          = 1,
                City        = "Perpignan",
                DateOfBirth = new DateTime(2000, 1, 20),
                FamilyName  = "Dupont",
                FirstName   = "Gilles",
                Email       = "*****@*****.**",
                PhoneNumber = "0033468000000",
                ZipCode     = "66000",
                LinkedInUrl = "gilles.dupont66",
                TwitterName = "gillesDupont",
                DisplayWork = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = _languages[0], Value = "jb1.fr"
                    },
                    new TextModel()
                    {
                        Language = _languages[1], Value = "jb1.en"
                    }
                },
                PresentationTexts = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = _languages[0], Value = "Presentation.fr"
                    },
                    new TextModel()
                    {
                        Language = _languages[1], Value = "Presentation.en"
                    }
                },
                PresentationTitleTexts = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = _languages[0], Value = "PresentationTitle.fr"
                    },
                    new TextModel()
                    {
                        Language = _languages[1], Value = "PresentationTitle.en"
                    }
                },
                PresentationSubTitleTexts = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = _languages[0], Value = "PresentationSubTitle.fr"
                    },
                    new TextModel()
                    {
                        Language = _languages[1], Value = "PresentationSubTitle.en"
                    }
                },
            };

            var result = model.ToDto(_languages);

            Assert.AreEqual(expected.Id, result.Id);
            Assert.AreEqual(expected.City, result.City);
            Assert.AreEqual(expected.DateOfBirth, result.DateOfBirth);
            Assert.AreEqual(expected.FamilyName, result.FamilyName);
            Assert.AreEqual(expected.FirstName, result.FirstName);
            Assert.AreEqual(expected.Email, result.Email);
            Assert.AreEqual(expected.PhoneNumber, result.PhoneNumber);
            Assert.AreEqual(expected.ZipCode, result.ZipCode);
            Assert.AreEqual(expected.LinkedInUrl, result.LinkedInUrl);
            Assert.AreEqual(expected.TwitterName, result.TwitterName);

            AssertExtension.CompareIEnumerable(expected.DisplayWork, result.DisplayWork,
                                               (x, y) => x.Language == y.Language && x.Value == y.Value);
            AssertExtension.CompareIEnumerable(expected.ApplicationUserPresentations, result.ApplicationUserPresentations,
                                               (x, y) => x.Language == y.Language && x.Value == y.Value);
            AssertExtension.CompareIEnumerable(expected.PresentationTitleTexts, result.PresentationTitleTexts,
                                               (x, y) => x.Language == y.Language && x.Value == y.Value);
            AssertExtension.CompareIEnumerable(expected.PresentationSubTitleTexts, result.PresentationSubTitleTexts,
                                               (x, y) => x.Language == y.Language && x.Value == y.Value);
        }