public void EditSubscribeTest() { //ARRANGE RepositoryEditItem <ObjectMappingForTest, EditParamOfCRUDOperation <ObjectMappingForTest> > repositoryItem = new RepositoryEditItem <ObjectMappingForTest, EditParamOfCRUDOperation <ObjectMappingForTest> >(_uow, context); MemoryCacheRepository <ObjectMappingForTest> cacheTestClass = new MemoryCacheRepository <ObjectMappingForTest>(); HandlerCRUD <ObjectMappingForTest, EditParamOfCRUDOperation <ObjectMappingForTest> > processingObjectTestCalss = new HandlerCRUD <ObjectMappingForTest, EditParamOfCRUDOperation <ObjectMappingForTest> >(repositoryItem); FetchDomainData <ObjectMappingForTest> fetchDomainDataTestClass = new FetchDomainData <ObjectMappingForTest>(_uow); //ACT CacheCRUDBLLDecorator <ObjectMappingForTest, EditParamOfCRUDOperation <ObjectMappingForTest> > processingObjectCacheDecorator = new EditCacheCRUDBLLDecorator <ObjectMappingForTest>(processingObjectTestCalss, cacheTestClass); var resultSave = processingObjectCacheDecorator.Execute(new EditParamOfCRUDOperation <ObjectMappingForTest>() { Item = new ObjectMappingForTest() { Id = 1, IntValue = 22, IntValue2 = 33 } }).Result; ObjectMappingForTest resultFromCache = cacheTestClass.GetByIdAsync(1).Result; ObjectMappingForTest resultFromDB = fetchDomainDataTestClass.GetByIdAsync(1).Result; //ASSERT Assert.IsNotNull(resultFromCache); //В кеше есть данные Assert.AreEqual(resultFromDB.IntValue, resultFromCache.IntValue); //Проверка, что данные добавленные одинаковые Assert.AreEqual(resultFromDB.IntValue2, resultFromCache.IntValue2); Assert.AreEqual(33, resultFromDB.IntValue2); }
public void EditTest() { CreateContext(); DefaultController <ObjectMappingForTest> defaultController = new DefaultController <ObjectMappingForTest>(new FakeLogger(), new FetchDomainData <ObjectMappingForTest>(_uow), new HandlerCRUD <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> >(new RepositoryAddItem <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> >(_uow, context)), new HandlerCRUD <ObjectMappingForTest, EditParamOfCRUDOperation <ObjectMappingForTest> >(new RepositoryEditItem <ObjectMappingForTest, EditParamOfCRUDOperation <ObjectMappingForTest> >(_uow, context)), new HandlerCRUD <ObjectMappingForTest, DeleteParamOfCRUDOperation <ObjectMappingForTest> >(new RepositoryDeleteItem <ObjectMappingForTest, DeleteParamOfCRUDOperation <ObjectMappingForTest> >(_uow, context))); //Проверка редактирования без ID.Будет ошибка, так как нет идентификатора записи EditParamOfCRUDOperation <ObjectMappingForTest> paramQueryAdd = new EditParamOfCRUDOperation <ObjectMappingForTest>(); paramQueryAdd.Item = new ObjectMappingForTest() { IntValue = 1, IntValue2 = 1, StrValue = "1" }; var exArgumentException = Assert.ThrowsExceptionAsync <ArgumentException>(() => defaultController.Edit(paramQueryAdd)); Assert.AreEqual("Объект не найден в БД для изменения.", exArgumentException.Result.Message); //Проверка успешного изменения записи paramQueryAdd.Item = new ObjectMappingForTest() { Id = 3, IntValue = 1, IntValue2 = 1, StrValue = "1" }; JsonResult resultAdd = defaultController.Edit(paramQueryAdd).Result; BaseResultType <PrepareItemResult <ObjectMappingForTest> > resultSuccessQuery = (BaseResultType <PrepareItemResult <ObjectMappingForTest> >)resultAdd.Value; Assert.AreEqual(ResultStatus.Success, resultSuccessQuery.Status); Assert.IsNotNull(resultSuccessQuery.Data.Item); Assert.IsInstanceOfType(resultSuccessQuery.Data.Item, typeof(ObjectMappingForTest), "Вернулся тип объекта не ObjectMappingForTest после сохранения этого объекта."); Assert.AreEqual(1, ((ObjectMappingForTest)resultSuccessQuery.Data.Item).IntValue); Assert.AreEqual(1, ((ObjectMappingForTest)resultSuccessQuery.Data.Item).IntValue2); Assert.AreEqual("1", ((ObjectMappingForTest)resultSuccessQuery.Data.Item).StrValue); Assert.AreEqual(3, ((ObjectMappingForTest)resultSuccessQuery.Data.Item).Id); //Проверка запроса из БД, что запись не добавилась JsonResult result = defaultController.GetAsync(new FetchDataParameters() { CountOnPage = 10, PageNumber = 1 }).Result; BaseResultType <ResultFetchData <ObjectMappingForTest> > fetchDataResultQuery = (BaseResultType <ResultFetchData <ObjectMappingForTest> >)result.Value; Assert.AreEqual(ResultStatus.Success, fetchDataResultQuery.Status); Assert.AreEqual(3, fetchDataResultQuery.Data.TotalCountRows); ObjectMappingForTest itemFromDB = fetchDataResultQuery.Data.Items[2]; Assert.AreEqual(1, itemFromDB.IntValue); Assert.AreEqual(1, itemFromDB.IntValue2); Assert.AreEqual("1", itemFromDB.StrValue); Assert.AreEqual(3, itemFromDB.Id); }
public void ValidateTest() { var options = new DbContextOptionsBuilder <ApplicationContextForTest>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; ApplicationContextForTest context = new ApplicationContextForTest(options); ValidateItemInContext <ObjectMappingForTest> validateItemInContext = new ValidateItemInContext <ObjectMappingForTest>(context); ObjectMappingForTest item = new ObjectMappingForTest(); //Объекта нет в контексте. ValidateContextResult validateContextResult = validateItemInContext.Validate(item); Assert.AreEqual(ResultStatus.Fail, validateContextResult.Status); Assert.AreEqual("Не пройдена проверка записи \"ObjectMappingForTest\":" + Environment.NewLine + "Не заполнено значение \"IntValue\"." + Environment.NewLine + "Не заполнено значение \"Строка\".", validateContextResult.Message); //Добавили в контекст, но с незаполненными обязательными полями validateContextResult = validateItemInContext.Validate(item); Assert.AreEqual(ResultStatus.Fail, validateContextResult.Status); Assert.AreEqual(1, validateContextResult.Count); Assert.AreEqual(2, validateContextResult[0].Fields.Count); Assert.AreEqual("IntValue", validateContextResult[0].Fields[0].Name); Assert.AreEqual("Строка", validateContextResult[0].Fields[1].Name); //Заполнили обязательные поля, чтобы прошла валидация item.IntValue = 1; item.IntValue2 = 2; validateContextResult = validateItemInContext.Validate(item); Assert.AreEqual(ResultStatus.Success, validateContextResult.Status); Assert.AreEqual(0, validateContextResult.Count); }
public void AddLogTest(long?id) { RepositoryAddItem <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> > repositoryItem = new RepositoryAddItem <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> >(_uow, context); CreateContext(); //ARRANGE LogTest logTestClass = new LogTest(); Assert.AreEqual(0, logTestClass.LogItemsCollection.Count);//Пустые логи HandlerCRUD <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> > processingObjectTestCalss = new HandlerCRUD <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> >(repositoryItem); ObjectMappingForTest item = new ObjectMappingForTest() { IntValue = 22, IntValue2 = 33 }; if (id != null) { item.Id = (long)id; } //ACT LogerCRUDBLLDecoratorDecorator <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> > processingObjectLogDecorator = new LogerCRUDBLLDecoratorDecorator <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> >(processingObjectTestCalss, logTestClass); BaseResultType <PrepareItemResult <ObjectMappingForTest> > resultSave = processingObjectLogDecorator.Execute(new AddParamOfCRUDOperation <ObjectMappingForTest>() { Item = item }).Result; //ASSERT Assert.AreEqual(ResultStatus.Success, resultSave.Status); Assert.AreEqual(1, logTestClass.GetCount());//Лог добавился }
public void CreateTest() { ObjectMappingForTest item = repository.Create(); Assert.IsNotNull(item, "Не добавлен объект в контекст."); //Провека, что создан пустой объект с дефолтными значениями и следующим id Assert.AreEqual(8, item.Id); Assert.IsNull(item.IntValue); Assert.IsNull(item.StrValue); Assert.IsNull(item.SubObject); }
public void DeleteTest() { ObjectMappingForTest item = repository.GetByIdAsync(2).Result; Assert.IsNotNull(item, "Не найден объект по ID."); repository.Delete(2); context.SaveChanges(); item = repository.GetByIdAsync(2).Result; Assert.IsNull(item, "Не удален объект в контекста."); }
public void GetByIdTest() { ReCreateContext(); ObjectMappingForTest item = repository.GetByIdAsync(2).Result; Assert.IsNotNull(item, "Не найден объект по ID."); //Провека, что найден именно тот, который с id = 2 Assert.AreEqual(2, item.Id); Assert.AreEqual(2, item.IntValue); Assert.AreEqual("2", item.StrValue); Assert.IsNull(repository.GetByIdAsync(20).Result, "Такой записи нет и должно быть исключение."); }
public void DeleteInCacheAndDataBaseTest() { //ARRANGE RepositoryAddItem <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> > repositoryAddItem = new RepositoryAddItem <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> >(_uow, context); RepositoryDeleteItem <ObjectMappingForTest, DeleteParamOfCRUDOperation <ObjectMappingForTest> > repositoryDeleteItem = new RepositoryDeleteItem <ObjectMappingForTest, DeleteParamOfCRUDOperation <ObjectMappingForTest> >(_uow, context); MemoryCacheRepository <ObjectMappingForTest> cacheTestClass = new MemoryCacheRepository <ObjectMappingForTest>(); HandlerCRUD <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> > processingObjectTestCalss = new HandlerCRUD <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> >(repositoryAddItem); HandlerCRUD <ObjectMappingForTest, DeleteParamOfCRUDOperation <ObjectMappingForTest> > processingDeleteObjectTestClass = new HandlerCRUD <ObjectMappingForTest, DeleteParamOfCRUDOperation <ObjectMappingForTest> >(repositoryDeleteItem); FetchDomainData <ObjectMappingForTest> fetchDomainDataTestClass = new FetchDomainData <ObjectMappingForTest>(_uow); //ACT CacheCRUDBLLDecorator <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> > processingObjectCacheDecorator = new AddCacheCRUDBLLDecorator <ObjectMappingForTest>(processingObjectTestCalss, cacheTestClass); CacheCRUDBLLDecorator <ObjectMappingForTest, DeleteParamOfCRUDOperation <ObjectMappingForTest> > processingDeleteObjectCacheDecorator = new DeleteCacheCRUDBLLDecorator <ObjectMappingForTest>(processingDeleteObjectTestClass, cacheTestClass); var resultSave = processingObjectCacheDecorator.Execute(new AddParamOfCRUDOperation <ObjectMappingForTest>() { Item = new ObjectMappingForTest() { IntValue = 2222, IntValue2 = 3333 } }).Result; ObjectMappingForTest resultFromCache = cacheTestClass.GetByIdAsync(2).Result; ObjectMappingForTest resultFromDB = fetchDomainDataTestClass.GetByIdAsync(2).Result; //ASSERT Assert.IsNotNull(resultFromCache); //В кеше есть данные Assert.AreEqual(resultFromDB.IntValue, resultFromCache.IntValue); //Проверка, что данные добавленные одинаковые Assert.AreEqual(resultFromDB.IntValue2, resultFromCache.IntValue2); Assert.AreEqual(3333, resultFromDB.IntValue2); //ACT - Удаляем данные resultSave = processingDeleteObjectCacheDecorator.Execute(new DeleteParamOfCRUDOperation <ObjectMappingForTest>() { Item = new ObjectMappingForTest() { Id = 2 } }).Result; resultFromCache = cacheTestClass.GetByIdAsync(3).Result; var exArgumentException = Assert.ThrowsExceptionAsync <ArgumentException>(() => fetchDomainDataTestClass.GetByIdAsync(3)); //ASSERT Assert.IsNull(resultFromCache);//В кеше есть данные }
public void GetByIdTest() { CreateContext(); FetchDomainData <ObjectMappingForTest> bll = new FetchDomainData <ObjectMappingForTest>(_uow); var ex = Assert.ThrowsExceptionAsync <ArgumentException>(() => bll.GetByIdAsync(10), "Запись не найдена."); //Проверка успешного получения записи ObjectMappingForTest resultGetById = bll.GetByIdAsync(1).Result; Assert.IsNotNull(resultGetById); Assert.AreEqual(1, resultGetById.Id); Assert.AreEqual(2, resultGetById.IntValue); Assert.AreEqual("2", resultGetById.StrValue); }
public void ValidateContextTest() { var options = new DbContextOptionsBuilder <ApplicationContextForTest>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; ApplicationContextForTest context = new ApplicationContextForTest(options); ObjectMappingForTest objectMappingForTest = new ObjectMappingForTest(); context.SaveChanges(); context.Set <ObjectMappingForTest>().Add(objectMappingForTest); // var result = Assert.ThrowsException<DbEntityValidationException>(() => context.SaveChanges()); //Assert.IsFalse(validateContextResult.IsSuccess); //Assert.AreEqual(1, validateContextResult.Count); //Assert.AreEqual(2, validateContextResult[0].Fields.Count); //Assert.AreEqual("IntValue", validateContextResult[0].Fields[0].Name); //Assert.AreEqual("Строка", validateContextResult[0].Fields[1].Name); }
public void UpdateItemTest() { ObjectMappingForTest sourceObjectMappingForTest = new ObjectMappingForTest(); sourceObjectMappingForTest.IntValue = 1; sourceObjectMappingForTest.StrValue = "str"; sourceObjectMappingForTest.SubObject = new SubObjectMappingForTest() { IntValueSub = 2, StrValueSub = "str2" }; ObjectMappingForTest objectMappingForTest = new ObjectMappingForTest(); new MappingEntity().UpdateItem <ObjectMappingForTest>(objectMappingForTest, sourceObjectMappingForTest); Assert.AreEqual(sourceObjectMappingForTest.IntValue, objectMappingForTest.IntValue); Assert.AreEqual(sourceObjectMappingForTest.StrValue, objectMappingForTest.StrValue); Assert.IsNull(objectMappingForTest.SubObject, "Мапятся только простые типы."); }
public void CheckWorkWithCacheTest() { //ARRANGE RepositoryAddItem <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> > repositoryAddItem = new RepositoryAddItem <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> >(_uow, context); MemoryCacheRepository <ObjectMappingForTest> cacheTestClass = new MemoryCacheRepository <ObjectMappingForTest>(); HandlerCRUD <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> > processingObjectTestCalss = new HandlerCRUD <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> >(repositoryAddItem); FetchDomainData <ObjectMappingForTest> fetchDomainDataTestClass = new FetchDomainData <ObjectMappingForTest>(_uow); //ACT CacheCRUDBLLDecorator <ObjectMappingForTest, AddParamOfCRUDOperation <ObjectMappingForTest> > processingObjectCacheDecorator = new AddCacheCRUDBLLDecorator <ObjectMappingForTest>(processingObjectTestCalss, cacheTestClass); ObjectMappingForTest resultFromCache = cacheTestClass.GetByIdAsync(1).Result; ObjectMappingForTest resultFromDB = fetchDomainDataTestClass.GetByIdAsync(1).Result; //ASSERT Assert.IsNull(resultFromCache); //В "БД" есть запись, но в кеше нет ее; Assert.IsNotNull(resultFromDB); //В "БД" есть запись }