示例#1
0
 public ActionResult AddHobby(HobbyModel model)
 {
     if (ModelState.IsValid)
     {
         _uow.HobbiesRepository.Insert(model.ToDto(_uow.LanguagesRepository.Get().ToList()));
         _uow.Save();
         return(RedirectToAction(nameof(ShowHobbies)));
     }
     return(RedirectToAction(nameof(AddHobby)));
 }
        public void Should_Transform_HobbyModel_To_Hobby()
        {
            var image = TestResources.TestsResources.test;

            var expectedStream = new MemoryStream();

            image.Save(expectedStream, ImageFormat.Jpeg);

            var expectedWebImage = new WebImage(expectedStream);

            expectedWebImage.Resize(350, 200, false);

            var expected = new Hobby()
            {
                Id      = 1,
                Content = expectedWebImage.GetBytes(),
                Texts   = new List <Text>()
                {
                    new Text()
                    {
                        Language = _languages[0], Value = "hb1.fr"
                    },
                    new Text()
                    {
                        Language = _languages[1], Value = "hb1.en"
                    }
                }
            };

            var imgFake = new Mock <HttpPostedFileBase>();

            imgFake.Setup(x => x.InputStream).Returns(new MemoryStream(expectedWebImage.GetBytes()));

            var act = new HobbyModel()
            {
                Picture = imgFake.Object,
                Texts   = new List <TextModel>()
                {
                    new TextModel()
                    {
                        Language = _languages[0], Value = "hb1.fr"
                    },
                    new TextModel()
                    {
                        Language = _languages[1], Value = "hb1.en"
                    }
                }
            };

            var result = act.ToDto(_languages);

            Assert.AreEqual(expected.Content, result.Content);
            AssertExtension.CompareIEnumerable(expected.Texts, result.Texts,
                                               (x, y) => x.Language == y.Language && x.Value == y.Value);
        }
        public void AddHobby_Get_Test()
        {
            // Act
            var uow        = new UnitOfWorkFakeFactory().Uow.Object;
            var controller = new IntroductionController(uow);

            var result = controller.AddHobby() as ViewResult;

            var expected = new HobbyModel()
            {
                Texts = uow.LanguagesRepository.Get().ToList().Select(l => new TextModel()
                {
                    Language = l
                }).ToList()
            };

            // Assert
            Assert.IsNotNull(result);
            AssertExtension.PropertyValuesAreEquals(expected, result.Model);
        }
        public static Hobby ToDto(this HobbyModel model, List <Language> languages)
        {
            var newHobby = new Hobby()
            {
                Texts = model.Texts.ToDto(languages)
            };

            if (model.Picture == null)
            {
                return(newHobby);
            }

            var img = new WebImage(model.Picture.InputStream);

            if (img.Width != 350 || img.Height != 200)
            {
                img.Resize(350, 200, false);
            }

            newHobby.Content = img.GetBytes();
            return(newHobby);
        }
        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());
        }