public IEnumerable<PageRequest> GetDomainRequests(IPageSelector selector) { var time = DateTime.Now.AddSeconds(_config.CoreDelay * 2); _activeRequests.AddOrUpdate(selector.Id, time, ( guid, date) => time ); return Cache.Get<IEnumerable<PageRequest>>(selector.Id.ToString() + "/requests"); }
public void NewPageFound_Returns_This_Page() { SitePage page = new SitePage { URL = "https://dummy/url" }; //pageSelectorForNewPages в данном тесте имеет осмысленную реализацию и выдает всегда одну страницу var stub = new Stubs.PageSelectorStub { DontThrowNotImpl = true, Result = page }; IPageSelector pageSelectorForNewPages = stub; IFindAnimatedByPage animatedSelectorForNewImages = new Stubs.AnimatedSelectorStub(); IPageSelector pageSelectorForAnyPages = new Stubs.PageSelectorStub(); IFindAnimatedByPage findAnimatedByPage = new Stubs.FindAnimatedByPageStub(); IPageOrExternalImageSelector pageOrExternalImageSelector = new Stubs.PageOrExternalImageSelectorStub(); IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast = new Stubs.AnimatedSelectorWithExcludeLastStub(); 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.IsNull(result.Image, "Не очікувалося заповнення TwittData.Image"); Assert.AreSame(page, result.Page); }
public void NewAnimated_Returns_PageAndImage() { var stub = new Stubs.PageSelectorStub { DontThrowNotImpl = true, Result = null //в этом тесте новых страниц нет, поэтому первый селектор вернет null }; IPageSelector pageSelectorForNewPages = stub; //а главную "роль" в тесте исполнит селектор новых аним.изображений - он должен вернуть AnimatedImage animatedImage = new AnimatedImage { BlobName = "code-geass:img1.gif", TweetDate = null //гифка новая даты твита не должно быть }; var animNewStub = new Stubs.AnimatedSelectorStub { DontThrowNotImpl = true, Result = new AnimatedImage[] { animatedImage } //стаб вернет этот результат }; IFindAnimatedByPage animatedSelectorForNewImages = animNewStub; //в этом тесте ожидается работа стаба FindPageByBlobNameStub - он должен "найти" страницу по имени блоба SitePage page = new SitePage { URL = "https://dummy/code-geass" }; var findPageByBlob = new Stubs.FindPageByBlobNameStub { DontThrowNotImpl = true, Result = page }; //имитируем найденную страницу... IFindPageByBlobName findPageByBlobName = findPageByBlob; IPageSelector pageSelectorForAnyPages = new Stubs.PageSelectorStub(); IFindAnimatedByPage findAnimatedByPage = new Stubs.FindAnimatedByPageStub(); IPageOrExternalImageSelector pageOrExternalImageSelector = new Stubs.PageOrExternalImageSelectorStub(); IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast = new Stubs.AnimatedSelectorWithExcludeLastStub(); 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.IsTrue(findPageByBlob.UsedBlobNameForFind == animatedImage.BlobName); Assert.AreSame(page, result.Page); Assert.AreSame(animatedImage, result.Image); }
public static void Copy(IPageSelector source, IPageSelector target) { target.Id = source.Id; target.Pattern = source.Pattern; target.ParentId = source.ParentId; target.SelectorType = source.SelectorType; }
public void NewAnimated_FindPageByBlobName_Returns_Null_Exception() { var stub = new Stubs.PageSelectorStub { DontThrowNotImpl = true, Result = null //в этом тесте новых страниц нет, поэтому первый селектор вернет null }; IPageSelector pageSelectorForNewPages = stub; //это часть урла, а блоб всегда содержит в начале такое же (до двоеточия) string codeGeassURLPart = "code-geass"; //а главную "роль" в тесте исполнит селектор новых аним.изображений - он должен вернуть AnimatedImage animatedImage = new AnimatedImage { BlobName = "code-geass:img1.gif", TweetDate = null //гифка новая даты твита не должно быть }; var animNewStub = new Stubs.AnimatedSelectorStub { DontThrowNotImpl = true, Result = new AnimatedImage[] { animatedImage } //стаб вернет этот результат }; IFindAnimatedByPage animatedSelectorForNewImages = animNewStub; //в этом тесте ожидается работа стаба FindPageByBlobNameStub - он должен НЕ найти страницу по имени блоба (вернуть null) //и это приведет в итоге к исключению var findPageByBlob = new Stubs.FindPageByBlobNameStub { DontThrowNotImpl = true, Result = null }; //имитируем найденную страницу... IFindPageByBlobName findPageByBlobName = findPageByBlob; IPageSelector pageSelectorForAnyPages = new Stubs.PageSelectorStub(); IFindAnimatedByPage findAnimatedByPage = new Stubs.FindAnimatedByPageStub(); IPageOrExternalImageSelector pageOrExternalImageSelector = new Stubs.PageOrExternalImageSelectorStub(); IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast = new Stubs.AnimatedSelectorWithExcludeLastStub(); var pageForTwittingSelector = new kawaii.twitter.core.SelectLogic.PageForTwittingSelector(pageSelectorForNewPages, animatedSelectorForNewImages, pageSelectorForAnyPages, findAnimatedByPage, pageOrExternalImageSelector, animatedSelectorWithExcludeLast, new TweetCreator.Stubs.Logger()); try { TwittData result = pageForTwittingSelector.GetPageForTwitting().Result; } catch (AggregateException aggrEx) { ApplicationException appEx = (ApplicationException)aggrEx.InnerExceptions[0]; //это и должно было произойти. В тексте наш спец.текст Assert.IsTrue(appEx.Message.Contains("Find page by blob name failed for")); Assert.IsTrue(appEx.Message.Contains(codeGeassURLPart)); } }
void _PageFoundBody(AnimatedImage[] resultForFindAnimated) { SitePage page = new SitePage { URL = "https://dummy/url" }; //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; //в нашем тесте этот универсальный поиск выдает null (нет аним.изображений для страницы) var stubFindAnimated = new Stubs.FindAnimatedByPageStub { DontThrowNotImpl = true, Result = resultForFindAnimated }; IFindAnimatedByPage findAnimatedByPage = stubFindAnimated; IPageOrExternalImageSelector pageOrExternalImageSelector = new Stubs.PageOrExternalImageSelectorStub(); IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast = new Stubs.AnimatedSelectorWithExcludeLastStub(); 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.IsNull(result.Image, "Не очікувалося заповнення TwittData.Image"); Assert.AreSame(page, result.Page); }
public IEnumerable <PageRequest> GetDomainRequests(IPageSelector selector) { var time = DateTime.Now.AddSeconds(_config.CoreDelay * 2); _activeRequests.AddOrUpdate(selector.Id, time, (guid, date) => time); return(Cache.Get <IEnumerable <PageRequest> >(selector.Id.ToString() + "/requests")); }
private static bool PutList(IPageSelector site, IEnumerable <PageRequest> list) { if (site == null) { return(false); } _domainStatistics.SetDomainRequests(site, list); return(true); }
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 No_Page_For_Twitting() { //этот аналог важен для покрытия кода 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 = null //Это ситуация которую моделирует тест - такое не должно быть в реальной системе (и будет выброс исключения) }; IPageSelector pageSelectorForAnyPages = stubAnyPages; //в нашем тесте этот универсальный поиск выдает null (нет аним.изображений для страницы) var stubFindAnimated = new Stubs.FindAnimatedByPageStub { DontThrowNotImpl = true, Result = null }; IFindAnimatedByPage findAnimatedByPage = stubFindAnimated; IPageOrExternalImageSelector pageOrExternalImageSelector = new Stubs.PageOrExternalImageSelectorStub(); IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast = new Stubs.AnimatedSelectorWithExcludeLastStub(); var pageForTwittingSelector = new kawaii.twitter.core.SelectLogic.PageForTwittingSelector(pageSelectorForNewPages, animatedSelectorForNewImages, pageSelectorForAnyPages, findAnimatedByPage, pageOrExternalImageSelector, animatedSelectorWithExcludeLast, new TweetCreator.Stubs.Logger()); try { TwittData result = pageForTwittingSelector.GetPageForTwitting().Result; Assert.Fail("Ожидался выброс исключения ApplicationException так как селектор pageSelectorForAnyPages вернул null (чего быть в работе не должно никогда)"); } catch (System.AggregateException aggrEx) { ApplicationException appEx = (ApplicationException)aggrEx.InnerExceptions[0]; //это и должно было произойти. В тексте наш спец.текст Assert.IsTrue(appEx.Message.Contains("No page found for twitting")); } }
private DomainStatistics GetCountOnly(IPageSelector site) { var data = new DomainStatistics(site); var cachedData = _domainStats.GetDomainStatistics(site); if (cachedData != null) { data.Count = cachedData.Count; } return(data); }
public void SetDomainStatistics(IPageSelector selector, DomainStatisticsData domainStatistics) { Cache.Put(selector.Id.ToString(), domainStatistics, DateTime.Now.AddSeconds(250)); // hack for domain list var list = Cache.Get<Dictionary<Guid, IPageSelector>>("domains") ?? new Dictionary<Guid, IPageSelector>(); if (!list.ContainsKey(selector.Id)) { list.Add(selector.Id, selector); Cache.Put("domains", list); } }
public void SetDomainStatistics(IPageSelector selector, DomainStatisticsData domainStatistics) { Cache.Put(selector.Id.ToString(), domainStatistics, DateTime.Now.AddSeconds(250)); // hack for domain list var list = Cache.Get <Dictionary <Guid, IPageSelector> >("domains") ?? new Dictionary <Guid, IPageSelector>(); if (!list.ContainsKey(selector.Id)) { list.Add(selector.Id, selector); Cache.Put("domains", list); } }
public void Ctor_PageSelectorForAnyPages_null_Fail() { IPageSelector pageSelectorForNewPages = new Stubs.PageSelectorStub(); IFindAnimatedByPage animatedSelectorForNewImages = new Stubs.AnimatedSelectorStub(); IPageSelector pageSelectorForAnyPages = null; IFindAnimatedByPage findAnimatedByPage = new Stubs.FindAnimatedByPageStub(); IPageOrExternalImageSelector pageOrExternalImageSelector = new Stubs.PageOrExternalImageSelectorStub(); IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast = new Stubs.AnimatedSelectorWithExcludeLastStub(); 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 == "pageSelectorForAnyPages"); } }
public DomainStatistics(IPageSelector selector) { if (selector == null) { throw new NullReferenceException("Selector is null"); } var site = selector as Site; if (site != null) { SelectorType = (int)PageSelectorType.DomainPattern; Domain = site.Domain; SiteId = site.Id; UserId = site.UserId; return; } var page = selector as Page; if (page != null) { SelectorType = (int)PageSelectorType.PagePattern; Domain = page.PagePattern; SiteId = page.DomainId; PageId = page.Id; return; } var domainSelector = selector as DomainSelector; if (domainSelector != null) { SelectorType = (int)PageSelectorType.DomainString; Domain = domainSelector.Pattern; SiteId = domainSelector.ParentId.Value; return; } throw new InvalidOperationException("Unsupported selector type specified " + selector.GetType().Name); }
public DomainStatisticsData GetDomainStatistics(IPageSelector selector) { return(null); }
public void PageFound_And_AnimatedFound_Random_Select_PageOnly() { //Тест-кейс: найдена не-новая страница и у нее есть внешние изображения. Рандомизированный выбор "решил" что их не нужно использовать SitePage page = new SitePage { URL = "https://dummy/url" }; //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; //аним.изображения найдены, но их не будем использовать AnimatedImage[] animatedImgs = new AnimatedImage[] { //здесь нам не важно что - оно просто должно быть, тест "не выбирает" это new AnimatedImage() { BlobName = "dummy", TweetDate = new DateTime(2020, 04, 26, 00, 00, 00) } }; var stubFindAnimated = new Stubs.FindAnimatedByPageStub { DontThrowNotImpl = true, Result = animatedImgs }; IFindAnimatedByPage findAnimatedByPage = stubFindAnimated; //этот стаб имитирует "случайное решение" о том использовать ли изобр.со страницы , или внешнее анимированное. //В этом тесте он всегда выбирает "со страницы" var stubRandomPageOrImg = new Stubs.PageOrExternalImageSelectorStub(); stubRandomPageOrImg.DontThrowNotImpl = true; stubRandomPageOrImg.UseExternalAnimatedImage = false; //именно это важно для данного теста IPageOrExternalImageSelector pageOrExternalImageSelector = stubRandomPageOrImg; IAnimatedSelectorWithExcludeLast animatedSelectorWithExcludeLast = new Stubs.AnimatedSelectorWithExcludeLastStub(); 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.IsNull(result.Image, "Не очікувалося заповнення TwittData.Image"); Assert.AreSame(page, result.Page); }
public List<PageRequest> GetDomainRequests(IPageSelector selector) { _browser.Navigate(GetRequestUri(selector), false); return _jsonSerrializer.Deserialize<List<PageRequest>>(_browser.Html); }
public bool Contains(IPageSelector selector) { throw new NotImplementedException(); }
public void SetDomainRequests(IPageSelector selector, IEnumerable<PageRequest> events) { Cache.Put(selector.Id.ToString() + "/requests", events.ToArray(), DateTime.Now.AddSeconds(250)); }
public List <PageRequest> GetDomainRequests(IPageSelector selector) { _browser.Navigate(GetRequestUri(selector), false); return(_jsonSerrializer.Deserialize <List <PageRequest> >(_browser.Html)); }
public DomainStatisticsData GetDomainStatistics(IPageSelector selector) { return null; }
public IEnumerable <PageRequest> GetRequests(IPageSelector site) { _site = site; return(_domainRequestsQuery.Data); }
public IEnumerable<PageRequest> GetDomainRequests(IPageSelector selector) { return null; }
public IEnumerable <PageRequest> GetDomainRequests(IPageSelector selector) { return(_client.GetDomainRequests(selector)); }
public RawDomainStatistics(IPageSelector selector) : base(selector) { }
public bool Contains(IPageSelector selector) { DateTime time; return(_activeRequests.TryGetValue(selector.Id, out time) && time >= DateTime.Now); }
private DomainStatistics GetCountOnly(IPageSelector site) { var data = new DomainStatistics(site); var cachedData = _domainStats.GetDomainStatistics(site); if(cachedData != null) data.Count = cachedData.Count; return data; }
public DomainStatisticsData GetDomainStatistics(IPageSelector selector) { return(Cache.Get <DomainStatisticsData>(selector.Id.ToString())); }
public bool Contains(IPageSelector selector) { DateTime time; return _activeRequests.TryGetValue(selector.Id, out time) && time >= DateTime.Now; }
private static bool PutList(IPageSelector site, IEnumerable<PageRequest> list) { if (site == null) return false; _domainStatistics.SetDomainRequests(site, list); return true; }
public DomainStatisticsData GetDomainStatistics(IPageSelector selector) { return Cache.Get<DomainStatisticsData>(selector.Id.ToString()); }
public DomainStatistics(IPageSelector selector) { selector.CopyTo(this); }
public IEnumerable<PageRequest> GetRequests(IPageSelector site) { _site = site; return _domainRequestsQuery.Data; }
public void SetDomainRequests(IPageSelector selector, IEnumerable <PageRequest> events) { Cache.Put(selector.Id.ToString() + "/requests", events.ToArray(), DateTime.Now.AddSeconds(250)); }
private Uri GetRequestUri(IPageSelector selector) { return(new Uri(string.Format(RequestsPath, _endpoint, selector.Id))); }
public IEnumerable <PageRequest> GetDomainRequests(IPageSelector site) { return(_domainStats.GetDomainRequests(site)); }
private Uri GetRequestUri(IPageSelector selector) { return new Uri(string.Format(RequestsPath, _endpoint, selector.Id)); }
private void AddOrUpdateCounter(ConcurrentDictionary <Guid, RawDomainStatistics> dictionary, IPageSelector data, PageRequest request) { if (RawGatheringRequestModule.Contains(data)) { RawDomainStatistics counter = dictionary.GetOrAdd(data.Id, new RawDomainStatistics(data)); counter.AddItemInCounter(request); } }
public IEnumerable <PageRequest> GetDomainRequests(IPageSelector selector) { return(null); }
internal static bool Contains(IPageSelector selector) { return(_statisticsModule.Contains(selector)); }
public void SetDomainRequests(IPageSelector selector, IEnumerable <PageRequest> requests) { }
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); }
public void SetDomainRequests(IPageSelector selector, IEnumerable<PageRequest> requests) { }
public IEnumerable<PageRequest> GetDomainRequests(IPageSelector site) { return _domainStats.GetDomainRequests(site); }
public void SetDomainStatistics(IPageSelector selector, DomainStatisticsData domainStatistics) { Console.Write("{0}: {1}\t", selector.Id, domainStatistics.Count); }
public IEnumerable<PageRequest> GetDomainRequests(IPageSelector selector) { return _client.GetDomainRequests(selector); }