Example #1
0
 public PageForTwittingSelector(IPageSelector pageSelectorForNewPages, IFindAnimatedByPage findNewAnimatedByPage, IPageSelector pageSelectorForAnyPages, IFindAnimatedByPage findAnimatedByPage, IPageOrExternalImageSelector pageOrExternalImageSelector, IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast, kawaii.twitter.Logs.ILogger log)
 {
     _PageSelectorForNewPages         = pageSelectorForNewPages ?? throw new ArgumentNullException(nameof(pageSelectorForNewPages));
     _FindNewAnimatedByPage           = findNewAnimatedByPage ?? throw new ArgumentNullException(nameof(findNewAnimatedByPage));
     _PageSelectorForAnyPages         = pageSelectorForAnyPages ?? throw new ArgumentNullException(nameof(pageSelectorForAnyPages));
     _FindAnimatedByPage              = findAnimatedByPage ?? throw new ArgumentNullException(nameof(findAnimatedByPage));
     _PageOrExternalImageSelector     = pageOrExternalImageSelector ?? throw new ArgumentNullException(nameof(pageOrExternalImageSelector));
     _AnimatedSelectorWithExcludeLast = animatedSelectorWithExcludeLast ?? throw new ArgumentNullException(nameof(animatedSelectorWithExcludeLast));
     _Log = log ?? throw new ArgumentNullException(nameof(log));
 }
Example #2
0
        public void Ctor_AnimatedSelectorWithExcludeLast_null_Fail()
        {
            IPageSelector                    pageSelectorForNewPages         = new Stubs.PageSelectorStub();
            IFindAnimatedByPage              animatedSelectorForNewImages    = new Stubs.AnimatedSelectorStub();
            IPageSelector                    pageSelectorForAnyPages         = new Stubs.PageSelectorStub();
            IFindAnimatedByPage              findAnimatedByPage              = new Stubs.FindAnimatedByPageStub();
            IPageOrExternalImageSelector     pageOrExternalImageSelector     = new Stubs.PageOrExternalImageSelectorStub();
            IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast = null;

            try
            {
                var pageForTwittingSelector = new kawaii.twitter.core.SelectLogic.PageForTwittingSelector(pageSelectorForNewPages, animatedSelectorForNewImages, pageSelectorForAnyPages, findAnimatedByPage, pageOrExternalImageSelector, animatedSelectorWithExcludeLast, new TweetCreator.Stubs.Logger());
                Assert.Fail(_FAIL_MESSAGE_ARGUMENTNULL_EXPECTED);
            }
            catch (ArgumentNullException ex)
            {
                Assert.IsTrue(ex.ParamName != null && ex.ParamName == "animatedSelectorWithExcludeLast");
            }
        }
Example #3
0
        public void PageFound_And_AnimatedFound_Random_Select_Animated()
        {
            //Тест-кейс: найдена не-новая страница и у нее есть внешние изображения. Рандомизированный выбор "решил" использовать одно из них
            SitePage page = new SitePage
            {
                URL = "https://kawaii-mobile.com/oregairu"
            };

            //pageSelectorForNewPages в данном тесте выдает null чтобы логика прошла дальше (нет новых страниц)
            var stubNewPages = new Stubs.PageSelectorStub
            {
                DontThrowNotImpl = true,
                Result           = null
            };

            //этот стаб вернет null (нет новых аним.изображений)
            var animNewStub = new Stubs.AnimatedSelectorStub
            {
                DontThrowNotImpl = true,
                Result           = null
            };


            IPageSelector       pageSelectorForNewPages      = stubNewPages;
            IFindAnimatedByPage animatedSelectorForNewImages = animNewStub;

            IFindPageByBlobName findPageByBlobName = new Stubs.FindPageByBlobNameStub();

            var stubAnyPages = new Stubs.PageSelectorStub
            {
                DontThrowNotImpl = true,
                Result           = page
            };
            IPageSelector pageSelectorForAnyPages = stubAnyPages;

            var anim1 = new AnimatedImage
            {
                BlobName  = "oregairu:img1.gif",
                TweetDate = new DateTime(2020, 04, 26, 00, 00, 00)
            };

            var anim2 = new AnimatedImage
            {
                BlobName  = "oregairu:yukinoshita.gif",
                TweetDate = new DateTime(2020, 01, 10, 22, 10, 00)
            };

            var anim3 = new AnimatedImage
            {
                BlobName  = "oregairu:hatiman.gif",
                TweetDate = new DateTime(2020, 02, 08, 08, 00, 00)
            };

            //аним.изображения найдены, тест использует всегда одно из них (anim2)
            AnimatedImage[] animatedImgs = new AnimatedImage[] { anim1, anim2, anim3 };

            var stubFindAnimated = new Stubs.FindAnimatedByPageStub
            {
                DontThrowNotImpl = true,
                Result           = animatedImgs
            };

            IFindAnimatedByPage findAnimatedByPage = stubFindAnimated;

            //этот стаб имитирует "случайное решение" о том использовать ли изобр.со страницы , или внешнее анимированное.
            //В этом тесте он всегда выбирает "со страницы"
            var stubRandomPageOrImg = new Stubs.PageOrExternalImageSelectorStub();

            stubRandomPageOrImg.DontThrowNotImpl         = true;
            stubRandomPageOrImg.UseExternalAnimatedImage = true;               //именно это важно для данного теста

            IPageOrExternalImageSelector pageOrExternalImageSelector = stubRandomPageOrImg;

            var animSelectorStub = new Stubs.AnimatedSelectorWithExcludeLastStub
            {
                DontThrowNotImpl = true,
                Result           = anim2
            };

            IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast = animSelectorStub;

            var pageForTwittingSelector = new kawaii.twitter.core.SelectLogic.PageForTwittingSelector(pageSelectorForNewPages, animatedSelectorForNewImages, pageSelectorForAnyPages, findAnimatedByPage, pageOrExternalImageSelector, animatedSelectorWithExcludeLast, new TweetCreator.Stubs.Logger());

            TwittData result = pageForTwittingSelector.GetPageForTwitting().Result;

            //проверяем что он вернул
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Page);

            //в тесте ожидается что вернут и изображение что мы указали
            Assert.IsNotNull(result.Image);
            Assert.AreSame(result.Image, anim2);

            Assert.AreSame(page, result.Page);
        }