Example #1
0
        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@: проверить остальное - текст, хештеги, тело изображения
        }
Example #2
0
        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);
        }
Example #3
0
        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");
            }
        }
Example #4
0
        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"));
            }
        }
Example #5
0
        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);
        }