public async void TestTest() { int cartId = -1; var ct = new CancellationToken(); using (var db = new TestGoodMarketDb()) { var crudCart = new CRUDWrapper <Cart>(db); var recQuantity = new CartRecordQuantity(db); var recRemove = new CartRecordRemove(db); var cart = await crudCart.Create.Handle(new BaseCreateCommand <Cart>(new Cart(), false), ct); await db.SaveChangesAsync(); cartId = cart.Id; await recQuantity.Handle(new CartRecordQuantityMessage(cart.Id, 1, 10, false), ct); } using (var db = new TestGoodMarketDb()) { var crudCart = new CRUDWrapper <Cart>(db); var recQuantity = new CartRecordQuantity(db); var recRemove = new CartRecordRemove(db); var cart = await crudCart.Get.Handle(new BaseGetQuery <Cart>(cartId, false), ct); Assert.DoesNotContain(1, cart.Records); } }
public void Test() { int count = 1000; int count2 = 1000; var inc1 = new List <TestEntityDTO>(); var inc2 = new List <TestEntity2DTO>(); for (int i = 0; i < count; i++) { inc1.Add(new TestEntityDTO() { Name = $"Entity_{i}", Props = new Dictionary <string, string>() { }, SubsNames = new List <string>() { "", "" }, }); } for (int i = 0; i < count2; i++) { } using (var db = new TestGoodMarketDb()) { var crud = new CRUDWrapper <TestEntity>(db); var crudSub = new CRUDWrapper <TestEntity2>(db); } }
public async void RecordsTest() { int cartId = -1; var ct = new CancellationToken(); using (var db = new TestGoodMarketDb()) { var crudCart = new CRUDWrapper <Cart>(db); var recQuantity = new CartRecordQuantity(db); var recRemove = new CartRecordRemove(db); var cart = await crudCart.Create.Handle(new BaseCreateCommand <Cart>(new Cart(), false), ct); cartId = cart.Id; await recQuantity.Handle(new CartRecordQuantityMessage(cart.Id, 1, 10, false), ct); await recQuantity.Handle(new CartRecordQuantityMessage(cart.Id, 2, 10, false), ct); //Assert.True(db.Entry(cart).Property(e => e.Records).IsModified); await db.SaveChangesAsync(); Assert.Contains(1, cart.Records); Assert.Equal(10, cart[1]); Assert.Contains(2, cart.Records); Assert.Equal(10, cart[2]); await recRemove.Handle(new CartRecordRemoveMessage(cart.Id, 1, false), ct); Assert.DoesNotContain(1, cart.Records); Assert.Contains(2, cart.Records); Assert.Equal(10, cart[2]); //await db.SaveChangesAsync(); } using (var db2 = new TestGoodMarketDb()) { var crudCart = new CRUDWrapper <Cart>(db2); var recQuantity = new CartRecordQuantity(db2); var recRemove = new CartRecordRemove(db2); var cart = await crudCart.Get.Handle(new BaseGetQuery <Cart>(cartId, false), ct); Assert.NotNull(cart); Assert.DoesNotContain(1, cart.Records); Assert.Contains(2, cart.Records); Assert.Equal(10, cart[2]); cart.Add(66, 100); //await db2.SaveChangesAsync(); var testCart = await crudCart.Get.Handle(new BaseGetQuery <Cart>(cartId, false), ct); Assert.NotNull(testCart); Assert.Contains(66, testCart.Records); Assert.Equal(100, testCart[66]); } }
public void SQLTest() { using (var db = new TestGoodMarketDb()) { var crud = new CRUDWrapper <TestEntity>(db); var result = db.Add(new TestEntity() { Name = "Test Entity", SubList = new List <TestEntity2>() { new TestEntity2() { Name = "Sub Entity 1" }, new TestEntity2() { Name = "Sub Entity 2" }, } }); db.SaveChanges(); } }
/* * await TestEntity(count, // Число создаваемых сущностей * createCount, // Число созданных сущностей(учитывать зависимые сущности) * (i) => { }, // i - 0..count. Метод создания элемента * (e) => { }, // e - entity. Процедура проверки созданного entity * (e) => { }, // e - entity. Процедура изменения entity * (e) => { }); // e - entity. Процедура проверки изменения entity */ /// <summary> /// Обобщенная процедура проверки CRUD операций в одном контексте /// </summary> /// <typeparam name="T"></typeparam> /// <param name="count">Число создаваемых элементов</param> /// <param name="createdCount">c - число созданных в итоге элементов. /// <param name="deletedCount">c - число удалённых в итоге элементов. /// <param name="createFunc">i - [0..count]. Метод создания элемента</param> /// <param name="createCheckFunc">e - entity. Процедура проверки созданного entity</param> /// <param name="updateFunc">e - entity. Процедура изменения entity</param> /// <param name="updateCheckFunc">e - entity. Процедура проверки изменения entity</param> /// <returns></returns> private async Task TestEntityCRUD_OneContext <T>(int count, int createdCount, int deletedCount, Func <int, T> createFunc, Action <T> createCheckFunc, Action <T, TestGoodMarketDb> updateFunc, Action <T> updateCheckFunc) where T : class, IEntity, new() { using (var db = TestGoodMarketDb.Create()) { var ct = new CancellationToken(); var cqrs = new CRUDWrapper <T>(db); /* Создать count записей */ for (int i = 0; i < count; i++) { var entity = await cqrs.Attach.Handle(new BaseAttachCommand <T>(createFunc(i), false), ct); } Assert.Equal(createdCount, await db.SaveChangesAsync()); /* Проверка созданных записей */ var untrackEntities1 = await cqrs.GetAll.Handle(new BaseGetAllQuery <T>(false), ct); foreach (var entity in untrackEntities1) { createCheckFunc(entity); } /* Изменить count записей, выборка по одному */ var trackEntities = await cqrs.GetAll.Handle(new BaseGetAllQuery <T>(true), ct); foreach (var entity in trackEntities) { updateFunc(entity, db); await cqrs.Update.Handle(new BaseUpdateCommand <T>(entity, false), ct); } Assert.Equal(count, await db.SaveChangesAsync()); //_output.WriteLine($"Updates: {await db.SaveChangesAsync()}"); /* Проверить изменения */ var untrackEntities2 = await cqrs.GetAll.Handle(new BaseGetAllQuery <T>(false), ct); foreach (var cust in untrackEntities2) { updateCheckFunc(cust); } /* Удаление половины записей */ var trackEntities2 = await cqrs.GetAll.Handle(new BaseGetAllQuery <T>(true), ct); foreach (var cust in trackEntities2) { if (cust.Id % 2 == 0) // удаление всех чётных записей { await cqrs.Delete.Handle(new BaseDeleteCommand <T>(cust, false), ct); } } Assert.Equal(deletedCount, await db.SaveChangesAsync()); /* Проверка оставшихся записей */ var leftCust = (await cqrs.GetAll.Handle(new BaseGetAllQuery <T>(false), ct)).ToList(); Assert.Equal(count - deletedCount, leftCust.Count); } }