Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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]);
            }
        }
Exemplo n.º 4
0
 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();
     }
 }
Exemplo n.º 5
0
        /*
         *  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);
            }
        }