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(); }
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); }
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()); }