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)); }
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"); } }
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); }