Esempio n. 1
0
        public void Test_UrlCheckTask_UrlMustBeUnique()
        {
            var options   = new DbContextOptionsBuilder <SiteCheckerDbContext>().UseInMemoryDatabase("Test_UrlCheckTask_UrlMustBeUnique").Options;
            var dataStore = new DbContextDataStore(new SiteCheckerDbContext(options));

            Assert.Equal(0, dataStore.GetAll <UrlCheckTask>().Count());

            var newTask = new UrlCheckTask {
                Url = "123"
            };

            dataStore.Add(newTask);
            dataStore.SaveChanges();

            Assert.Throws <InvalidOperationException>(() =>
            {
                dataStore.Add(new UrlCheckTask {
                    Url = "123"
                });
                dataStore.SaveChanges();
            });

            dataStore.Add(new UrlCheckTask {
                Url = "234"
            });
            dataStore.SaveChanges();
        }
Esempio n. 2
0
        public void Test_UrlCheckTask_UrlMustNotBeEmpty()
        {
            var options   = new DbContextOptionsBuilder <SiteCheckerDbContext>().UseInMemoryDatabase("Test_UrlCheckTask_UrlMustNotBeEmpty").Options;
            var dataStore = new DbContextDataStore(new SiteCheckerDbContext(options));

            var emptyUrlCheckTask = new UrlCheckTask();

            Assert.Throws <InvalidOperationException>(() =>
            {
                dataStore.Add(emptyUrlCheckTask);
                dataStore.SaveChanges();
            });

            dataStore.Add(new UrlCheckTask {
                Url = "http:/123/"
            });
            dataStore.SaveChanges();
        }
Esempio n. 3
0
        public void TestService()
        {
            ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };

            var loggerFactory = new LoggerFactory();

            var options = new DbContextOptionsBuilder <SiteCheckerDbContext>()
                          .UseInMemoryDatabase(databaseName: "InMemoryDatabase_UrlCheckTaskServiceTest_TestService")
                          .Options;

            var httpUrlChecker = new HttpUrlChecker();
            var dataStore      = new DbContextDataStore(new SiteCheckerDbContext(options));

            var dataStoreInitializer = new SiteCheckerDataStoreInitializer();

            dataStoreInitializer.Initialize(dataStore);

            // Количество задач в репозитории
            var taskCountInDataStore = dataStore.GetAll <UrlCheckTask>().Count();

            // Количество урлов для проверки в инициализаторе репозитория
            var dataStoreInitializerUrlCount = SiteCheckerDataStoreInitializer.UrlList.Distinct().Count();

            Assert.True(taskCountInDataStore > 0);
            Assert.Equal(dataStoreInitializerUrlCount, taskCountInDataStore);
            Assert.Equal(0, dataStore.GetAll <UrlCheckTaskResult>().Count());

            var urlCheckTaskService = new UrlCheckTaskService(httpUrlChecker, dataStore, loggerFactory);

            var waitMillisec = 10000;

            urlCheckTaskService.ProcessAllTasks(waitMillisec);
            urlCheckTaskService.ProcessAllTasks(waitMillisec);
            urlCheckTaskService.ProcessAllTasks(waitMillisec);
            urlCheckTaskService.ProcessAllTasks(waitMillisec);

            // Обработка задач была вызвана 4 раза. Результаты проверок сохраняются в БД. Количество выполненых проверок должно быть равно х4 от количества задач.
            var checkResultCount = dataStore.GetAll <UrlCheckTaskResult>().Count();

            Assert.Equal(taskCountInDataStore * 4, checkResultCount);
        }
Esempio n. 4
0
        public void TestDataStoreInitializer()
        {
            var options = new DbContextOptionsBuilder <SiteCheckerDbContext>()
                          .UseInMemoryDatabase("TestDataStoreInitializer")
                          .Options;

            var dataStore            = new DbContextDataStore(new SiteCheckerDbContext(options));
            var dataStoreInitializer = new SiteCheckerDataStoreInitializer();

            dataStoreInitializer.Initialize(dataStore);

            // Количество задач в репозитории
            var taskCountInDataStore = dataStore.GetAll <UrlCheckTask>().Count();

            // Количество урлов для проверки в инициализаторе репозитория
            var dataStoreInitializerUrlCount = SiteCheckerDataStoreInitializer.UrlList.Distinct().Count();

            Assert.True(taskCountInDataStore > 0);
            Assert.Equal(dataStoreInitializerUrlCount, taskCountInDataStore);
            Assert.Equal(0, dataStore.GetAll <UrlCheckTaskResult>().Count());
        }