public void TweetCreator_OneTweet_Test() { var testDB = new TestDB(); var sitePagesCollection = testDB.CreateSitePagesTestDB("tweetcreator_sitepages_1"); var animatedCollection = testDB.CreateAnimatedTestDB("tweetcreator_animated_1"); HttpClient httpClient = new HttpClient(); ITwitterTextCreator textCreator = new kawaii.twitter.core.Text.TwitterTextCreator(); IImageOnWeb imageOnWeb = new kawaii.twitter.core.HtmlParsers.ImageOnWeb(httpClient); ITwitterImageURL twitterImageURL = new kawaii.twitter.core.HtmlParsers.TwitterImageURL(httpClient); //--- блок для lastTweetUpdater DateTime nowDate = new DateTime(2020, 04, 26, 10, 00, 00); var dateSupply = new SelectLogic.Stubs.DateSupplyStub { Now = nowDate }; IAnimatedTweetDateUpdater animatedTweetDateUpdater = new AnimatedTweetDateUpdater(animatedCollection); ISitePageTweetDateUpdater sitePageTweetDateUpdater = new SitePageTweetDateUpdater(sitePagesCollection); ILastTweetUpdater lastTweetUpdater = new kawaii.twitter.core.SelectLogic.LastTweetUpdater(dateSupply, animatedTweetDateUpdater, sitePageTweetDateUpdater); //--- var service = new Stubs.TwitterServiceStub(); //стаб для анализа (проверим что в него попадет в итоге) IBlobDownload blobDownload = new Stubs.BlobDownloadStub(); //в данном тесте он не применяется (выбросит исключение) //селектор - главная вещь, но здесь он будет "простой" //Мы берем в обработку одну страницу: string url = "https://kawaii-mobile.com/2020/10/uchuu-no-stellvia/"; var findResultStellvia = sitePagesCollection.FindAsync(x => x.URL == url).Result; var pageStellvia = findResultStellvia.FirstOrDefault(); var selector = new Stubs.PageForTwittingSelectorStub { ResultPage = pageStellvia }; var creator = new kawaii.twitter.core.TweetCreator(selector, textCreator, twitterImageURL, imageOnWeb, blobDownload, service, lastTweetUpdater, new Stubs.Logger()); creator.Execute().Wait(); //проверка состояния базы после данной операции: var findResultStellvia2 = sitePagesCollection.FindAsync(x => x.URL == url).Result; var pageStellvia2 = findResultStellvia2.FirstOrDefault(); //1) должна быть дата твита - та что мы задали Assert.IsTrue(pageStellvia2.TweetDate == nowDate); //2) проверяем, что там прислали в "твит-текст" Assert.IsNotNull(service.ResultText); Assert.IsTrue(service.ResultText.Contains(url)); //3) TODO@: проверить остальное - текст, хештеги, тело изображения }
public void LastTweetUpdater_ForPage_And_Animated_Test() { //тест дата твита var dtNow1 = new DateTime(2020, 10, 14, 0, 0, 0); var nowDate = new SelectLogic.Stubs.DateSupplyStub { Now = dtNow1 }; var animatedTweetDateUpdaterStub = new Stubs.AnimatedTweetDateUpdaterStub { DontThrowNotImpl = true }; var pageUpdStub = new Stubs.SitePageTweetDateUpdaterStub { DontThrowNotImpl = true //режим работы правильный }; var upd = new LastTweetUpdater(nowDate, animatedTweetDateUpdaterStub, pageUpdStub); var page = new db.SitePage { Title = "https://kawaii-mobile.com/2020/10/uchuu-no-stellvia/", URL = "Uchuu no Stellvia" }; var img = new db.AnimatedImage { BlobName = "uchuu-no-stellvia", }; TwittData data = new TwittData { Image = img, Page = page }; upd.UpdateLastTweetDate(data); Assert.IsTrue(pageUpdStub.CalledDate == dtNow1); Assert.AreSame(pageUpdStub.CalledPage, page); Assert.IsTrue(animatedTweetDateUpdaterStub.CalledDate == dtNow1); Assert.AreSame(animatedTweetDateUpdaterStub.CalledImage, img); }
public void LastTweetUpdater_Ctor_AnimatedTweetDateUpdater_Test() { var nowDate = new SelectLogic.Stubs.DateSupplyStub(); //var animatedTweetDateUpdaterStub = new Stubs.AnimatedTweetDateUpdaterStub(); var pageUpdStub = new Stubs.SitePageTweetDateUpdaterStub(); try { var upd = new LastTweetUpdater(nowDate, null, pageUpdStub); Assert.Fail("Очікувалося виключення ArgumentNullException"); } catch (ArgumentNullException ex) { Assert.IsTrue(ex.ParamName == "animatedTweetDateUpdater"); } }
public void LastTweetUpdater_UpdateLastTweetDate_PageNull_Test() { var nowDate = new SelectLogic.Stubs.DateSupplyStub(); var animatedTweetDateUpdaterStub = new Stubs.AnimatedTweetDateUpdaterStub(); var pageUpdStub = new Stubs.SitePageTweetDateUpdaterStub(); var upd = new LastTweetUpdater(nowDate, animatedTweetDateUpdaterStub, pageUpdStub); try { TwittData data = new TwittData(); upd.UpdateLastTweetDate(data); Assert.Fail("Очікувалося виключення ArgumentNullException"); } catch (ArgumentNullException ex) { Assert.IsTrue(ex.ParamName == "data"); Assert.IsTrue(ex.Message.Contains("data.Page")); } }
public void LastTweetUpdater_ForPage_Only_Test() { //тест дата твита var dtNow1 = new DateTime(2020, 10, 14, 0, 0, 0); var nowDate = new SelectLogic.Stubs.DateSupplyStub { Now = dtNow1 }; //это в данном тесте не применяется (и выбросит исключение если туда пройдет) var animatedTweetDateUpdaterStub = new Stubs.AnimatedTweetDateUpdaterStub(); var pageUpdStub = new Stubs.SitePageTweetDateUpdaterStub { DontThrowNotImpl = true //режим работы правильный }; var upd = new LastTweetUpdater(nowDate, animatedTweetDateUpdaterStub, pageUpdStub); var page = new db.SitePage { Title = "https://kawaii-mobile.com/2020/10/uchuu-no-stellvia/", URL = "Uchuu no Stellvia" }; TwittData data = new TwittData { Image = null, Page = page }; upd.UpdateLastTweetDate(data); Assert.IsTrue(pageUpdStub.CalledDate == dtNow1); Assert.AreSame(pageUpdStub.CalledPage, page); }