public void AddWork_Post_Test()
        {
            // Act
            var       uow       = new UnitOfWorkFakeFactory().Uow.Object;
            const int jobId     = 1;
            var       paramUser = new AddWorkModel()
            {
                JobId = jobId,
                Texts = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[0], Value = "NewJob.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[1], Value = "NewJob.en"
                    }
                }
            };

            var expected = paramUser.ToDto(uow.JobsRepository.Get().ToList(),
                                           uow.LanguagesRepository.Get().ToList());

            expected.Id = uow.WorksRepository.Get().Count() + 1;

            var nbWorks = uow.WorksRepository.Get().ToList().Count;
            var result  = new IntroductionController(uow).AddWork(paramUser) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["Action"], nameof(IntroductionController.ShowJobs));
            Assert.AreEqual(nbWorks + 1, uow.WorksRepository.Get().Count());
            AssertExtension.PropertyValuesAreEquals(expected, uow.WorksRepository.Get().Last());
        }
        public void AddGraduation_Post_Test()
        {
            // Act
            var uow       = new UnitOfWorkFakeFactory().Uow.Object;
            var paramUser = new GraduationModel()
            {
                ObtainingDateTime = new DateTime(2010, 9, 1),
                Texts             = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[0], Value = "Graduation.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[1], Value = "Graduation.en"
                    }
                }
            };
            var expected = paramUser.ToDto(uow.LanguagesRepository.Get().ToList());

            expected.Id = uow.GradesRepository.Get().Count() + 1;

            var nbGrades = uow.GradesRepository.Get().ToList().Count;
            var result   = new IntroductionController(uow).AddGraduation(paramUser) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["Action"], nameof(IntroductionController.ShowGraduations));
            Assert.AreEqual(nbGrades + 1, uow.GradesRepository.Get().Count());
            AssertExtension.PropertyValuesAreEquals(expected, uow.GradesRepository.Get().Last());
        }
        public void DeleteHobbyTest()
        {
            // Arrange
            var uow        = new UnitOfWorkFakeFactory().Uow.Object;
            var controller = new IntroductionController(uow);

            var expectedList = new List <Hobby>(uow.HobbiesRepository.Get().ToList());
            var idToRemove   = expectedList.Last().Id;

            expectedList.RemoveAll(x => x.Id == idToRemove);

            // Act
            var result = controller.DeleteHobby(idToRemove) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["action"], nameof(IntroductionController.ShowHobbies));
            AssertExtension.CompareIEnumerable(expectedList, uow.HobbiesRepository.Get().ToList(),
                                               (x, y)
                                               => x.Id == y.Id &&
                                               x.Content == y.Content
                                               &&
                                               AssertExtension.CompareIEnumerable(x.Texts, y.Texts,
                                                                                  (a, b) => a.Language == b.Language && a.Value == b.Value)
                                               );
        }
        public void DeleteGraduationTest()
        {
            // Arrange
            var uow        = new UnitOfWorkFakeFactory().Uow.Object;
            var controller = new IntroductionController(uow);

            var expectedList = new List <Grade>(uow.GradesRepository.Get().ToList());
            var idToRemove   = expectedList.Last().Id;

            expectedList.RemoveAll(x => x.Id == idToRemove);

            // Act
            var expected = new GraduationsModel {
                Graduations = expectedList
            };
            var result = controller.DeleteGraduation(idToRemove) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["action"], nameof(IntroductionController.ShowGraduations));
            AssertExtension.CompareIEnumerable(expected.Graduations, uow.GradesRepository.Get().ToList(),
                                               (x, y) => x.ObtainingDateTime == y.ObtainingDateTime &&
                                               x.Id == y.Id
                                               &&
                                               AssertExtension.CompareIEnumerable(x.Texts, y.Texts,
                                                                                  (a, b) => a.Language == b.Language && a.Value == b.Value)
                                               );
        }
        public void AddJob_Post_Test()
        {
            // Act
            var uow       = new UnitOfWorkFakeFactory().Uow.Object;
            var paramUser = new JobModel()
            {
                StarterDate    = new DateTime(2000, 1, 15),
                EndDate        = new DateTime(2001, 1, 16),
                IsNotActualJob = true,
                Texts          = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[0], Value = "NewSkillCat.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[1], Value = "NewSkillCat.en"
                    }
                }
            };
            var expected = paramUser.ToDto(uow.LanguagesRepository.Get().ToList());

            expected.Id = uow.SkillCategoriesRepository.Get().Count() + 1;

            var nbJobs = uow.JobsRepository.Get().ToList().Count;
            var result = new IntroductionController(uow).AddJob(paramUser) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["Action"], nameof(IntroductionController.ShowJobs));
            Assert.AreEqual(nbJobs + 1, uow.JobsRepository.Get().Count());
            AssertExtension.PropertyValuesAreEquals(expected, uow.JobsRepository.Get().Last());
        }
        public void DeleteJobTest()
        {
            // Arrange
            var uow        = new UnitOfWorkFakeFactory().Uow.Object;
            var controller = new IntroductionController(uow);

            var expectedList = new List <Job>(uow.JobsRepository.Get().ToList());
            var idToRemove   = expectedList.Last().Id;

            expectedList.RemoveAll(x => x.Id == idToRemove);

            // Act
            var result = controller.DeleteJob(idToRemove) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["action"], nameof(IntroductionController.ShowJobs));
            AssertExtension.CompareIEnumerable(expectedList, uow.JobsRepository.Get().ToList(),
                                               (x, y) => x.StarterDate == y.StarterDate &&
                                               x.EndDate == y.EndDate &&
                                               x.Id == y.Id &&
                                               AssertExtension.CompareIEnumerable(x.Works, y.Works, (a, b) => a.Id == b.Id)
                                               &&
                                               AssertExtension.CompareIEnumerable(x.Texts, y.Texts,
                                                                                  (c, d) => c.Language == d.Language && c.Value == d.Value)
                                               );
        }
        public void DeleteSkillCategoryTest()
        {
            // Arrange
            var uow        = new UnitOfWorkFakeFactory().Uow.Object;
            var controller = new IntroductionController(uow);

            var expectedList = new List <SkillCategory>(uow.SkillCategoriesRepository.Get().ToList());
            var idToRemove   = expectedList.Last().Id;

            expectedList.RemoveAll(x => x.Id == idToRemove);

            // Act
            var result = controller.DeleteSkillCategory(idToRemove) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["action"], nameof(IntroductionController.ShowSkills));
            AssertExtension.CompareIEnumerable(expectedList, uow.SkillCategoriesRepository.Get().ToList(),
                                               (x, y) => x.DisplayPriority == y.DisplayPriority &&
                                               x.Id == y.Id &&
                                               AssertExtension.CompareIEnumerable(x.Skills, y.Skills,
                                                                                  (a, b) => a.Id == b.Id && a.KnowledgePercent == b.KnowledgePercent) &&
                                               AssertExtension.CompareIEnumerable(x.Texts, y.Texts,
                                                                                  (c, d) => c.Language == d.Language && c.Value == d.Value)
                                               );
        }
        public void IntroductionTest()
        {
            // Act
            var uow    = new UnitOfWorkFakeFactory().Uow;
            var result = new HomeController(uow.Object).Introduction() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
        public void ContactTest()
        {
            // Act
            var uow    = new UnitOfWorkFakeFactory().Uow;
            var result = new HomeController(uow.Object).Contact() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
            AssertExtension.PropertyValuesAreEquals(
                result.Model,
                uow.Object.UsersRepository.Get().FirstOrDefault().ToDto(uow.Object.LanguagesRepository.Get().ToList())
                );
        }
        public void GetHobbyImageTest()
        {
            // Act
            var uow        = new UnitOfWorkFakeFactory().Uow.Object;
            var controller = new IntroductionController(uow);

            const int imgId    = 1;
            var       result   = controller.GetHobbyImage(imgId);
            var       expected = new ImageResult(uow.HobbiesRepository.Find(imgId).Content, "image/jpeg");

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(expected, result);
        }
        public void EditApplicationUser_Get_Test()
        {
            // Act
            var uow      = new UnitOfWorkFakeFactory().Uow;
            var result   = new HomeController(uow.Object).EditApplicationUser() as ViewResult;
            var expected = uow.Object.UsersRepository.Get().FirstOrDefault().ToDto(uow.Object.LanguagesRepository.Get().ToList());

            expected.IsEditMode = true;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.ViewName, "Index");
            AssertExtension.PropertyValuesAreEquals(result.Model, expected);
        }
        public void ShowGraduationTest()
        {
            // Act
            var uow        = new UnitOfWorkFakeFactory().Uow.Object;
            var controller = new IntroductionController(uow);

            var result = controller.ShowGraduations() as ViewResult;

            var expected = new GraduationsModel {
                Graduations = uow.GradesRepository.Get().ToList()
            };

            // Assert
            Assert.IsNotNull(result);
            AssertExtension.PropertyValuesAreEquals(expected, result.Model);
        }
        public void AddJob_Get_Test()
        {
            // Act
            var uow        = new UnitOfWorkFakeFactory().Uow.Object;
            var controller = new IntroductionController(uow);
            var expected   = new JobModel()
            {
                Texts = uow.LanguagesRepository.Get().Select(language => new TextModel()
                {
                    Language = language
                }).ToList(),
            };

            var result = controller.AddJob() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
            AssertExtension.PropertyValuesAreEquals(expected, result.Model);
        }
        public void AddSkill_Post_Test()
        {
            // Act
            var       uow = new UnitOfWorkFakeFactory().Uow.Object;
            const int skillCategorieId = 1;
            var       paramUser        = new AddSkillModel()
            {
                KnowledgePercent = 50,
                CategoryId       = skillCategorieId,
                Texts            = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[0], Value = "NewSkill.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[1], Value = "NewSkill.en"
                    }
                }
            };

            var expected = paramUser.ToDto(uow.SkillCategoriesRepository.Get().ToList(),
                                           uow.LanguagesRepository.Get().ToList());

            expected.Id = uow.SkillsRepository.Get().Count() + 1;

            var nbSkills = uow.SkillsRepository.Get().ToList().Count;
            var result   = new IntroductionController(uow).AddSkill(paramUser) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["Action"], nameof(IntroductionController.ShowSkills));
            Assert.AreEqual(nbSkills + 1, uow.SkillsRepository.Get().Count());
            AssertExtension.PropertyValuesAreEquals(expected, uow.SkillsRepository.Get().Last());
        }
        public void AddHobby_Post_Test()
        {
            // Act
            var uow   = new UnitOfWorkFakeFactory().Uow.Object;
            var image = TestResources.TestsResources.test;

            var expectedStream = new MemoryStream();

            image.Save(expectedStream, ImageFormat.Jpeg);
            var expectedFile = new Mock <HttpPostedFileBase>();

            expectedFile.Setup(x => x.InputStream).Returns(expectedStream);

            var paramStream = new MemoryStream();

            image.Save(paramStream, ImageFormat.Jpeg);
            var paramFile = new Mock <HttpPostedFileBase>();

            paramFile.Setup(x => x.InputStream).Returns(paramStream);

            var paramUser = new HobbyModel()
            {
                Picture = paramFile.Object,
                Texts   = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[0], Value = "Graduation.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[1], Value = "Graduation.en"
                    }
                }
            };
            var expected = new HobbyModel()
            {
                Picture = expectedFile.Object,
                Texts   = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[0], Value = "Graduation.fr"
                    },
                    new TextModel()
                    {
                        Language = uow.LanguagesRepository.Get().ToList()[1], Value = "Graduation.en"
                    }
                }
            }.ToDto(uow.LanguagesRepository.Get().ToList());

            expected.Id = uow.HobbiesRepository.Get().Count() + 1;

            var nbHobbies = uow.HobbiesRepository.Get().ToList().Count;
            var result    = new IntroductionController(uow).AddHobby(paramUser) as RedirectToRouteResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["Action"], nameof(IntroductionController.ShowHobbies));
            Assert.AreEqual(nbHobbies + 1, uow.HobbiesRepository.Get().Count());
            AssertExtension.PropertyValuesAreEquals(expected, uow.HobbiesRepository.Get().Last());
        }
        public void ShowSkills_Test()
        {
            var uow      = new UnitOfWorkFakeFactory().Uow.Object;
            var expected = new SkillCategoriesModel()
            {
                Categories = uow.SkillCategoriesRepository.Get().ToList(),
                ChartDatas = new ChartPie()
                {
                    Infos  = new CharPieInfo(),
                    Slices = new List <ChartPieSlice>()
                    {
                        new ChartPieSlice()
                        {
                            Label   = uow.SkillCategoriesRepository.Find(1).Texts.GetText(CultureInfo.CurrentUICulture),
                            Color   = "#4285f4",
                            Value   = 2,
                            ToolTip = uow.SkillCategoriesRepository.Find(1).Texts.GetText(CultureInfo.CurrentUICulture),
                            Slices  = new List <ChartPieSlice>()
                            {
                                new ChartPieSlice()
                                {
                                    Label   = uow.SkillsRepository.Find(1).Texts.GetText(CultureInfo.CurrentUICulture),
                                    Color   = "#4285f4",
                                    Value   = uow.SkillsRepository.Find(1).KnowledgePercent,
                                    ToolTip =
                                        uow.SkillsRepository.Find(1).Texts.GetText(CultureInfo.CurrentUICulture) + " " +
                                        Utilities.GetGlyphiconStarsFromPercents(
                                            uow.SkillsRepository.Find(1).KnowledgePercent, 5)
                                },
                                new ChartPieSlice()
                                {
                                    Label   = uow.SkillsRepository.Find(2).Texts.GetText(CultureInfo.CurrentUICulture),
                                    Color   = "#4285f4",
                                    Value   = uow.SkillsRepository.Find(2).KnowledgePercent,
                                    ToolTip =
                                        uow.SkillsRepository.Find(2).Texts.GetText(CultureInfo.CurrentUICulture) + " " +
                                        Utilities.GetGlyphiconStarsFromPercents(
                                            uow.SkillsRepository.Find(2).KnowledgePercent, 5)
                                },
                            }
                        },
                        new ChartPieSlice()
                        {
                            Label   = uow.SkillCategoriesRepository.Find(2).Texts.GetText(CultureInfo.CurrentUICulture),
                            Color   = "#34a853",
                            Value   = 2,
                            ToolTip = uow.SkillCategoriesRepository.Find(2).Texts.GetText(CultureInfo.CurrentUICulture),
                            Slices  = new List <ChartPieSlice>()
                            {
                                new ChartPieSlice()
                                {
                                    Label   = uow.SkillsRepository.Find(3).Texts.GetText(CultureInfo.CurrentUICulture),
                                    Color   = "#34a853",
                                    Value   = uow.SkillsRepository.Find(3).KnowledgePercent,
                                    ToolTip =
                                        uow.SkillsRepository.Find(3).Texts.GetText(CultureInfo.CurrentUICulture) + " " +
                                        Utilities.GetGlyphiconStarsFromPercents(
                                            uow.SkillsRepository.Find(3).KnowledgePercent, 5)
                                },
                                new ChartPieSlice()
                                {
                                    Label   = uow.SkillsRepository.Find(4).Texts.GetText(CultureInfo.CurrentUICulture),
                                    Color   = "#34a853",
                                    Value   = uow.SkillsRepository.Find(4).KnowledgePercent,
                                    ToolTip =
                                        uow.SkillsRepository.Find(4).Texts.GetText(CultureInfo.CurrentUICulture) + " " +
                                        Utilities.GetGlyphiconStarsFromPercents(
                                            uow.SkillsRepository.Find(4).KnowledgePercent, 5)
                                },
                            }
                        }
                    }
                }
            };

            var controller = new IntroductionController(uow);
            var result     = controller.ShowSkills() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(expected.ChartDatas.ToJson(), ((SkillCategoriesModel)result.Model).ChartDatas.ToJson());
        }
        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);
        }