public void NotificationQueries_UpsertTest()
        {
            //параметры
            Exception exception;
            var logger = new ShoutExceptionLogger();
            var target = new NotificationQueries(logger
                , SignaloBotTestParameters.ConnectionString, SignaloBotTestParameters.SqlPrefix);

            Notification notify = NotificationsTestCommonCreator.CreateNotification();

            List<NotificationMeta> notifyMetas = new List<NotificationMeta>()
            {
                NotificationsTestCommonCreator.CreateNotificationMeta(notify.NotificationID),
                NotificationsTestCommonCreator.CreateNotificationMeta(notify.NotificationID, "AuthorName"),
            };

            List<Guid> userIDs = new List<Guid>()
            {
                SignaloBotTestParameters.ExistingUserID,
                SequentialGuid.NewGuid(),
                SequentialGuid.NewGuid(),
                SequentialGuid.NewGuid()
            };

            //проверка
            target.Upsert(notify, notifyMetas, userIDs, out exception);
        }
        public void SignalQueries_UpdateCountersTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new SqlSignalQueries(logger, SignaloBotTestParameters.SqlConnetion);

            var updateParameters = new UpdateParameters()
            {
                UpdateDeliveryTypeLastSendDateUtc = true,

                UpdateCategorySendCount = true,
                UpdateCategoryLastSendDateUtc = true,
                CreateCategoryIfNotExist = true,

                UpdateTopicSendCount = false,
                UpdateTopicLastSendDateUtc = true,
                CreateTopicIfNotExist = true
            };

            var items = new List<SignalDispatchBase<Guid>>()
            {
                SignaloBotEntityCreator<Guid>.CreateSignal(),
                SignaloBotEntityCreator<Guid>.CreateSignal()
            };

            //проверка
            bool result = target.UpdateCounters(updateParameters, items).Result;
        }
        public void SubscriberQueries_SelectTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            SqlSubscriberQueries target = new SqlSubscriberQueries(logger, SignaloBotTestParameters.SqlConnetion);

            var subscriberParameters = new SubscribtionParameters()
            {
                DeliveryType = SignaloBotTestParameters.ExistingDeliveryType,
                CategoryID = SignaloBotTestParameters.ExistingCategoryID,
                TopicID = SignaloBotTestParameters.ExistingSubscriptionTopicID,
                CheckBlockedOfNDR = true,
                CheckCategoryEnabled = true
            };

            var usersRange = new UsersRangeParameters<Guid>()
            {
                FromUserIDs = new List<Guid>()
                {
                    SignaloBotTestParameters.ExistingUserID,
                    Guid.NewGuid()
                }
            };

            //проверка
            QueryResult<List<Subscriber<Guid>>> subscribers = 
                target.Select(subscriberParameters, usersRange).Result;
        }       
        public async Task SelectLatestFromEachCategoryTest()
        {
            ICommonLogger logger = new ShoutExceptionLogger();
            MongoDbContentQueries queries = new MongoDbContentQueries(logger, MongoDbConnectionSettings.FromConfig());

            QueryResult<List<ContentCategoryGroup<ObjectId>>> result = await queries.SelectLatestFromEachCategory(5);
            Assert.IsFalse(result.HasExceptions);            
        }
        public void UserCategorySettingsQueries_DeleteAllTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new SqlUserCategorySettingsQueries(logger, SignaloBotTestParameters.SqlConnetion);

            //проверка
            bool result = target.Delete(SignaloBotTestParameters.ExistingUserID).Result;
        }
        public void UserDeliveryTypeSettings_DisableAllDeliveryTypesTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new SqlUserDeliveryTypeSettingsQueries(logger, SignaloBotTestParameters.SqlConnetion);

            //проверка
            bool result = target.DisableAllDeliveryTypes(SignaloBotTestParameters.ExistingUserID).Result;
        }
        public void GetListTest()
        {
            ICommonLogger logger = new ShoutExceptionLogger();
            AmazonS3Settings settings = AmazonS3Settings.FromConfig();
            AmazonFileStorage target = new AmazonFileStorage(logger, settings);
            string folderPath = "posts-temp";

            QueryResult<List<FileDetails>> filesResult = target.GetList(folderPath).Result;
            Assert.IsFalse(filesResult.HasExceptions);
        }
        public void UserDeliveryTypeSettings_CheckAddressExistsTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new SqlUserDeliveryTypeSettingsQueries(logger, SignaloBotTestParameters.SqlConnetion);

            //проверка
            QueryResult<bool> exists =
                target.CheckAddressExists(SignaloBotTestParameters.ExistingDeliveryType, "*****@*****.**").Result;
        }
        public void CreateTest()
        {
            ICommonLogger logger = new ShoutExceptionLogger();
            AmazonS3Settings settings = AmazonS3Settings.FromConfig();
            AmazonFileStorage target = new AmazonFileStorage(logger, settings);
            byte[] fileBytes = File.ReadAllBytes("Content/test2.jpg");
            string pathName = "test.jpg";

            bool result = target.Create(pathName, fileBytes).Result;
            Assert.IsTrue(result);
        }
        public void UserDeliveryTypeSettings_UpdateTimeZoneTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new SqlUserDeliveryTypeSettingsQueries(logger, SignaloBotTestParameters.SqlConnetion);

            TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");

            //проверка
            bool result = target.UpdateTimeZone(SignaloBotTestParameters.ExistingUserID, timeZone).Result;
        }
        public void UserReceivePeriodQueries_DeleteCategoryTest()
        {
            //параметры
            ICommonLogger logger = new ShoutExceptionLogger();
            var target = new SqlUserReceivePeriodQueries(logger, SignaloBotTestParameters.SqlConnetion);


            //проверка
            bool result = target.Delete(SignaloBotTestParameters.ExistingUserID, SignaloBotTestParameters.ExistingDeliveryType
                , SignaloBotTestParameters.ExistingCategoryID).Result;
        }
        public async Task SelectTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new MongoDbUserTopicSettingsQueries(logger, SignaloBotTestParameters.MongoDbConnection);

            //проверка
            var result = await target.Select(SignaloBotTestParameters.ExistingUserObjectId,
                SignaloBotTestParameters.ExistingCategoryID
                , SignaloBotTestParameters.ExistingSubscriptionTopicID);
            Assert.IsFalse(result.HasExceptions);            
        }
        public void UserTopicSettingsQueries_UpsertTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new SqlUserTopicSettingsQueries(logger, SignaloBotTestParameters.SqlConnetion);

            UserTopicSettings<Guid> subscription = SignaloBotEntityCreator<Guid>.CreateUserTopicSettings(SignaloBotTestParameters.ExistingUserID);
            subscription.UserID = Guid.NewGuid();

            //проверка
            bool completed = target.Upsert(subscription, true).Result;
        }
 public void UserCategorySettingsQueries_UpsertIsEnabledTest()
 {
     //параметры
     var logger = new ShoutExceptionLogger();
     var target = new SqlUserCategorySettingsQueries(
         logger, SignaloBotTestParameters.SqlConnetion);
     UserCategorySettings<Guid> userCategorySettings = 
         SignaloBotEntityCreator<Guid>.CreateUserCategorySettings(SignaloBotTestParameters.ExistingUserID);
         
     //проверка
     bool result = target.UpsertIsEnabled(userCategorySettings).Result;
 }
        public void SignalQueries_InsertTest()
        {
            var logger = new ShoutExceptionLogger();
            var target = new SqlSignalQueries(logger, SignaloBotTestParameters.SqlConnetion);

            var items = new List<SignalDispatchBase<Guid>>()
            {
                SignaloBotEntityCreator<Guid>.CreateSignal(),
                SignaloBotEntityCreator<Guid>.CreateSignal()
            };

            //проверка
            target.Insert(items);
        }
        public void NotificationQueries_UpdateDirtyTest()
        {
            //параметры
            Exception exception;
            var logger = new ShoutExceptionLogger();
            NotificationQueries target = new NotificationQueries(logger
                , SignaloBotTestParameters.ConnectionString, SignaloBotTestParameters.SqlPrefix);

            int total;
            List<Notification> notifies = target.SelectUpdateLastVisit(SignaloBotTestParameters.ExistingUserID
                , false, out total, 0, 10, out exception);

            //проверка
            target.UpdateDirty(notifies, out exception);
        }
        public void UserDeliveryTypeSettings_UpdateNDRSettingsTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new SqlUserDeliveryTypeSettingsQueries(logger, SignaloBotTestParameters.SqlConnetion);
            var settings = new List<UserDeliveryTypeSettings<Guid>>()
            {
                SignaloBotEntityCreator<Guid>.CreateUserDeliveryTypeSettings(SignaloBotTestParameters.ExistingUserID),
                SignaloBotEntityCreator<Guid>.CreateUserDeliveryTypeSettings(Guid.NewGuid()),
                SignaloBotEntityCreator<Guid>.CreateUserDeliveryTypeSettings(Guid.NewGuid())
            };

            //проверка
            bool result = target.UpdateNDRSettings(settings).Result;
        }
 public void UserTopicSettingsQueries_SelectPageTest()
 {
     //параметры
     var logger = new ShoutExceptionLogger();
     var target = new SqlUserTopicSettingsQueries(logger, SignaloBotTestParameters.SqlConnetion);
     UserTopicSettings<Guid> subscription = SignaloBotEntityCreator<Guid>.CreateUserTopicSettings(SignaloBotTestParameters.ExistingUserID);
     List<int> categoryIDs = new List<int>()
     {
         SignaloBotTestParameters.ExistingCategoryID,
         SignaloBotTestParameters.ExistingCategoryID
     };
     //проверка
     TotalResult<List<UserTopicSettings<Guid>>> subscriptions = target.SelectPage(
         SignaloBotTestParameters.ExistingUserID, categoryIDs, 1, 10).Result;
 }
        public void UpdateTest()
        {
            ICommonLogger logger = new ShoutExceptionLogger();
            MongoDbContentQueries queries = new MongoDbContentQueries(logger, MongoDbConnectionSettings.FromConfig());

            var post = new Post<ObjectId>()
            {
                ContentID = new ObjectId("5665cedd166b493c9c8f25ee"),
                FullContent = "full",
                Url = "url"
            };

            ContentUpdateResult result = queries.Update(post, "A6kdU3Qt3kWGu4P_T6Vlhw", true).Result;
            Assert.IsTrue(result == ContentUpdateResult.Success);
        }
        public void NotificationMetaQueries_InsertNewTypeTest()
        {
            //параметры
            Exception exception;
            var logger = new ShoutExceptionLogger();
            var target = new NotificationMetaQueries(logger
                , SignaloBotTestParameters.ConnectionString, SignaloBotTestParameters.SqlPrefix);

            string metaType = "AuthorProfile";
            string metaKey = "101";
            string metaValue = "/default?author=101";

            //проверка
            target.InsertNewType(SignaloBotTestParameters.ExistingCategoryID, metaType,
                metaKey, metaValue, out exception);
        }
        public void InsertTest()
        {
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new MongoDbSignalDispatchQueries(logger, SignaloBotTestParameters.MongoDbConnection);

            var items = new List<SignalDispatchBase<ObjectId>>()
            {
                SignaloBotEntityCreator<ObjectId>.CreateSignal(),
                SignaloBotEntityCreator<ObjectId>.CreateSignal()
            };

            //проверка
            bool result = target.Insert(items).Result;
            Assert.IsTrue(result);
        }
        public void GetAmazonQuotaTest()
        {
            //setup
            ICommonLogger logger = new ShoutExceptionLogger();
            AmazonCredentials amazonCredentials = new AmazonCredentials(AmazonTestParameters.AWSRegion
              , AmazonTestParameters.AWSAccessKey, AmazonTestParameters.AWSSecretKey);
            List<LimitedPeriod> limitedPeriods = new List<LimitedPeriod>()
            {
                new LimitedPeriod(TimeSpan.FromMinutes(30), 5)
            };
            IJournalStorage journalStorage = new MemoryJournalStorage();
            AmazonLimitManager target = new AmazonLimitManager(limitedPeriods, journalStorage, amazonCredentials, logger);
            

            //test
            target.GetAmazonQuota();
        }
        public void UserReceivePeriodQueries_RewriteTest()
        {
            //параметры
            ICommonLogger logger = new ShoutExceptionLogger();
            var target = new SqlUserReceivePeriodQueries(logger, SignaloBotTestParameters.SqlConnetion);

            List<UserReceivePeriod<Guid>> periods = new List<UserReceivePeriod<Guid>>()
            {
                SignaloBotEntityCreator<Guid>.CreateUserReceivePeriod(1, 0),
                SignaloBotEntityCreator<Guid>.CreateUserReceivePeriod(1, 1),
                SignaloBotEntityCreator<Guid>.CreateUserReceivePeriod(1, 2)
            };
            
            //проверка
            bool result = target.Rewrite(SignaloBotTestParameters.ExistingUserID, SignaloBotTestParameters.ExistingDeliveryType
                , SignaloBotTestParameters.ExistingCategoryID, periods).Result;
        }
        public void TestGetRangesTest()
        {
            var logger = new ShoutExceptionLogger();
            var target = new MongoDbSubscriberQueries(logger, SignaloBotTestParameters.MongoDbConnection);

            Stopwatch sw = Stopwatch.StartNew();
            long count = target.TestCount().Result;
            TimeSpan countTime = sw.Elapsed;

            sw.Restart();
            int fragments = 6;
            List<ObjectId> rangeBorders = target.TestGetRanges(count, fragments).Result;
            TimeSpan rangeTime = sw.Elapsed;

            Assert.IsTrue(rangeBorders.Count >= (fragments - 1));

            //List<ObjectId> rangeBorders = target.TestGetRanges(100, 10).Result;
        }
        public void InsertTest()
        {
            ICommonLogger logger = new ShoutExceptionLogger();
            MongoDbContentQueries queries = new MongoDbContentQueries(logger, MongoDbConnectionSettings.FromConfig());

            DateTime t = new DateTime(2016, 1, 1, 12, 0, 0);

            var post = new Post<ObjectId>()
            {
                ContentID = ObjectId.GenerateNewId(),
                FullContent = "full",
                Url = "url",
                PublishTimeUtc = t
            };
            QueryResult<bool> result = queries.Insert(post).Result;

            Assert.IsFalse(result.HasExceptions);
            Assert.IsTrue(result.Result);
        }
        public void NotificationQueries_DeleteTagTest()
        {
            //параметры
            Exception exception;
            var logger = new ShoutExceptionLogger();
            NotificationQueries target = new NotificationQueries(logger
                , SignaloBotTestParameters.ConnectionString, SignaloBotTestParameters.SqlPrefix);

            //проверка
            target.DeleteTag(SignaloBotTestParameters.ExistingUserID, SignaloBotTestParameters.ExistingCategoryID
                , "tag", out exception);
        }
        public void UserDeliveryTypeSettings_SelectPageTest()
        {  
            //параметры
            var logger = new ShoutExceptionLogger();
            var target = new SqlUserDeliveryTypeSettingsQueries(logger, SignaloBotTestParameters.SqlConnetion);

            //проверка
            TotalResult<List<UserDeliveryTypeSettings<Guid>>> list = target.SelectPage(1, 10).Result;
        }
        public void NotificationQueries_SelectUpdateLastVisitTest()
        {
            //параметры
            Exception exception;
            var logger = new ShoutExceptionLogger();
            NotificationQueries target = new NotificationQueries(logger
                , SignaloBotTestParameters.ConnectionString, SignaloBotTestParameters.SqlPrefix);
            int firstIndex = 1;
            int lastIndex = 10;
            bool updateLastVisit = true;
            int total;

            //проверка
            List<Notification> notifies = target.SelectUpdateLastVisit(SignaloBotTestParameters.ExistingUserID
                , updateLastVisit, out total, firstIndex, lastIndex, out exception);
        }