public void AddAdvertsToViewModel_WhenOnGetAdvertsByIdEventIsRaised(string testPicturePath)
        {
            var advertDetailViewMock = new Mock <IAdvertDetailView>();

            advertDetailViewMock.SetupGet(view => view.Model).Returns(new AdvertDetailViewModel());

            var advertServiceMock = new Mock <IAdvertServices>();
            var advert            = new Advert()
            {
                Title = "Test Advert"
            };

            advertServiceMock.Setup(a => a.GetById(It.IsAny <int>())).Returns(advert);

            var pictureServiceMock = new Mock <IPictureServices>();

            var advertDetailPresenter = new AdvertDetailPresenter(
                advertDetailViewMock.Object,
                pictureServiceMock.Object,
                advertServiceMock.Object);

            var getAdvertsByIdEventArgs = new GetAdvertsByIdEventArgs(3);

            var expectedAdvertsCollection = new List <Advert>();

            expectedAdvertsCollection.Add(advert);

            advertDetailViewMock.Raise(v => v.OnGetAdvertsById += null, getAdvertsByIdEventArgs);

            CollectionAssert.AreEquivalent(expectedAdvertsCollection, advertDetailViewMock.Object.Model.Adverts);
        }
        public void AddPicturesToViewModel_WhenOnGetPicturesByAdvertIdEventIsRaised(string testPicturePath)
        {
            var advertDetailViewMock = new Mock <IAdvertDetailView>();

            advertDetailViewMock.SetupGet(view => view.Model).Returns(new AdvertDetailViewModel());

            var advertServiceMock = new Mock <IAdvertServices>();

            var pictures = new List <Picture>()
            {
                new Picture()
                {
                    Name = "1.jpg"
                },
                new Picture()
                {
                    Name = "2.jpg"
                },
            }.AsQueryable();
            var pictureServiceMock = new Mock <IPictureServices>();

            pictureServiceMock.Setup(p => p.GetPicturesByAdvertId(It.IsAny <int>())).Returns(pictures);

            var advertDetailPresenter = new AdvertDetailPresenter(
                advertDetailViewMock.Object,
                pictureServiceMock.Object,
                advertServiceMock.Object);

            var getPicturesEventArgs = new GetPicturesEventArgs(3);

            advertDetailViewMock.Raise(v => v.OnGetPicturesByAdvertId += null, getPicturesEventArgs);

            CollectionAssert.AreEquivalent(pictures, advertDetailViewMock.Object.Model.Pictures);
        }
        public void CreateAnInstanceInheritingPresenter_WhenParametersAreCorrect()
        {
            var advertDetailView = new Mock <IAdvertDetailView>();
            var pictureService   = new Mock <IPictureServices>();
            var advertService    = new Mock <IAdvertServices>();

            var advertDetailPresenter = new AdvertDetailPresenter(advertDetailView.Object, pictureService.Object, advertService.Object);

            Assert.That(advertDetailPresenter, Is.InstanceOf <Presenter <IAdvertDetailView> >());
        }
        public void ShouldThrowArgumentException_WhenGetPicturePathEventArgsAdvertIdPropertyIsNotPositive(int invalidAdvertId)
        {
            var advertDetailViewMock = new Mock <IAdvertDetailView>();
            var advertServiceMock    = new Mock <IAdvertServices>();
            var pictureServiceMock   = new Mock <IPictureServices>();

            var advertDetailPresenter = new AdvertDetailPresenter(
                advertDetailViewMock.Object,
                pictureServiceMock.Object,
                advertServiceMock.Object);

            var getAdvertsByIdEventArgs = new GetAdvertsByIdEventArgs(invalidAdvertId);

            Assert.That(
                () => advertDetailPresenter.View_OnGetAdvertsById(null, getAdvertsByIdEventArgs),
                Throws.InstanceOf <ArgumentException>());
        }
        public void InvokeIAdvertService_GetByIdMethodOnce()
        {
            var advertDetailViewMock = new Mock <IAdvertDetailView>();

            advertDetailViewMock.SetupGet(view => view.Model).Returns(new AdvertDetailViewModel());

            var advertServiceMock  = new Mock <IAdvertServices>();
            var pictureServiceMock = new Mock <IPictureServices>();

            var advertDetailPresenter = new AdvertDetailPresenter(
                advertDetailViewMock.Object,
                pictureServiceMock.Object,
                advertServiceMock.Object);

            var getAdvertsByIdEventArgs = new GetAdvertsByIdEventArgs(3);

            advertDetailPresenter.View_OnGetAdvertsById(null, getAdvertsByIdEventArgs);

            advertServiceMock.Verify(service => service.GetById(It.IsAny <int>()), Times.Once);
        }