public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();

            Assert.IsInstanceOfType(rv.Model, typeof(EmojiEntityVM));

            EmojiEntityVM vm = rv.Model as EmojiEntityVM;
            EmojiEntity   v  = new EmojiEntity();

            v.Img     = "8gUVaqE3g";
            v.Title   = "58P39INO";
            v.Sort    = 55;
            vm.Entity = v;
            _controller.Create(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <EmojiEntity>().FirstOrDefault();

                Assert.AreEqual(data.Img, "8gUVaqE3g");
                Assert.AreEqual(data.Title, "58P39INO");
                Assert.AreEqual(data.Sort, 55);
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
        public void BatchDeleteTest()
        {
            EmojiEntity v1 = new EmojiEntity();
            EmojiEntity v2 = new EmojiEntity();

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v1.Img   = "8gUVaqE3g";
                v1.Title = "58P39INO";
                v1.Sort  = 55;
                v2.Img   = "iEZ4tXj7A";
                v2.Title = "1R2vyV";
                v2.Sort  = 9;
                context.Set <EmojiEntity>().Add(v1);
                context.Set <EmojiEntity>().Add(v2);
                context.SaveChanges();
            }

            PartialViewResult rv = (PartialViewResult)_controller.BatchDelete(new Guid[] { v1.ID, v2.ID });

            Assert.IsInstanceOfType(rv.Model, typeof(EmojiEntityBatchVM));

            EmojiEntityBatchVM vm = rv.Model as EmojiEntityBatchVM;

            vm.Ids = new Guid[] { v1.ID, v2.ID };
            _controller.DoBatchDelete(vm, null);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                Assert.AreEqual(context.Set <EmojiEntity>().Count(), 0);
            }
        }
        public void DeleteTest()
        {
            EmojiEntity v = new EmojiEntity();

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Img   = "8gUVaqE3g";
                v.Title = "58P39INO";
                v.Sort  = 55;
                context.Set <EmojiEntity>().Add(v);
                context.SaveChanges();
            }

            PartialViewResult rv = (PartialViewResult)_controller.Delete(v.ID);

            Assert.IsInstanceOfType(rv.Model, typeof(EmojiEntityVM));

            EmojiEntityVM vm = rv.Model as EmojiEntityVM;

            v         = new EmojiEntity();
            v.ID      = vm.Entity.ID;
            vm.Entity = v;
            _controller.Delete(v.ID, null);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                Assert.AreEqual(context.Set <EmojiEntity>().Count(), 0);
            }
        }
        public void DetailsTest()
        {
            EmojiEntity v = new EmojiEntity();

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Img   = "8gUVaqE3g";
                v.Title = "58P39INO";
                v.Sort  = 55;
                context.Set <EmojiEntity>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Details(v.ID);

            Assert.IsInstanceOfType(rv.Model, typeof(IBaseCRUDVM <TopBasePoco>));
            Assert.AreEqual(v.ID, (rv.Model as IBaseCRUDVM <TopBasePoco>).Entity.ID);
        }
        public void EditTest()
        {
            EmojiEntity v = new EmojiEntity();

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Img   = "8gUVaqE3g";
                v.Title = "58P39INO";
                v.Sort  = 55;
                context.Set <EmojiEntity>().Add(v);
                context.SaveChanges();
            }

            PartialViewResult rv = (PartialViewResult)_controller.Edit(v.ID);

            Assert.IsInstanceOfType(rv.Model, typeof(EmojiEntityVM));

            EmojiEntityVM vm = rv.Model as EmojiEntityVM;

            v    = new EmojiEntity();
            v.ID = vm.Entity.ID;

            v.Img     = "iEZ4tXj7A";
            v.Title   = "1R2vyV";
            v.Sort    = 9;
            vm.Entity = v;
            vm.FC     = new Dictionary <string, object>();

            vm.FC.Add("Entity.Img", "");
            vm.FC.Add("Entity.Title", "");
            vm.FC.Add("Entity.Sort", "");
            _controller.Edit(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <EmojiEntity>().FirstOrDefault();

                Assert.AreEqual(data.Img, "iEZ4tXj7A");
                Assert.AreEqual(data.Title, "1R2vyV");
                Assert.AreEqual(data.Sort, 9);
                Assert.AreEqual(data.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.UpdateTime.Value).Seconds < 10);
            }
        }
예제 #6
0
        async static Task CreateTableAndPopulate(Emojis emojisToLoad)
        {
            var table    = EmojiTable.Get();
            var imgTable = EmojiTable.GetImg();

            // Drop and recreate table
            await table.DeleteIfExistsAsync();

            await table.CreateIfNotExistsAsync();

            await imgTable.DeleteIfExistsAsync();

            await imgTable.CreateIfNotExistsAsync();

            //Entities
            var emojis = new List <EmojiEntity>();
            //Create the batch operation
            var batchOps    = new List <TableBatchOperation>();
            var imgBatchOps = new List <TableBatchOperation>();

            foreach (var g in emojisToLoad.Groups)
            {
                var batchOp    = new TableBatchOperation();
                var imgBatchOp = new TableBatchOperation();
                var groupId    = emojisToLoad.Groups.IndexOf(g).ToString(EmojiMetadata.IdFormat);

                foreach (var sg in g.SubGroups)
                {
                    foreach (var e in sg.Emojis)
                    {
                        var entity = new EmojiEntity(groupId, e.Id.ToString(EmojiMetadata.IdFormat))
                        {
                            Group    = g.Name,
                            SubGroup = sg.Name,
                            Code     = e.CodeString,
                            Emoji    = e.Emoji,
                            Cldr     = e.Cldr,
                            Keywords = e.Haystack,
                            IsNew    = e.IsNew
                        };
                        emojis.Add(entity);
                        batchOp.Insert(entity);

                        if (!string.IsNullOrWhiteSpace(e.ImageBase64))
                        {
                            var imgEntity = new EmojiImageEntity(groupId, e.Id.ToString(EmojiMetadata.IdFormat))
                            {
                                Emoji       = e.Emoji,
                                ImageBase64 = e.ImageBase64
                            };

                            imgBatchOp.Insert(imgEntity);
                        }

                        // Maximum operations in a batch
                        if (batchOp.Count == 100)
                        {
                            batchOps.Add(batchOp);
                            batchOp = new TableBatchOperation();

                            imgBatchOps.Add(imgBatchOp);
                            imgBatchOp = new TableBatchOperation();
                        }
                    }
                }

                // Batch can only contain operations in the same partition
                if (batchOp.Count > 0)
                {
                    batchOps.Add(batchOp);
                }
            }

            var sw             = new System.Diagnostics.Stopwatch();
            var processedCount = 0;

            foreach (var bo in batchOps)
            {
                sw.Reset();
                Console.WriteLine($"Inserting batch for group {bo.First().Entity.PartitionKey}, {bo.Count} entries");
                sw.Start();
                var result = await table.ExecuteBatchAsync(bo);

                processedCount += bo.Count;
                sw.Stop();
                Console.WriteLine($"  Insert complete: {sw.ElapsedMilliseconds}ms");
                Console.WriteLine($"  Processed: {processedCount} emojis");
            }

            processedCount = 0;
            Console.WriteLine($"###IMAGES###");
            foreach (var bo in imgBatchOps)
            {
                sw.Reset();
                Console.WriteLine($"Inserting image batch for group {bo.First().Entity.PartitionKey}, {bo.Count} entries");
                sw.Start();
                var result = await imgTable.ExecuteBatchAsync(bo);

                sw.Stop();
                processedCount += bo.Count;
                Console.WriteLine($"  Insert complete: {sw.ElapsedMilliseconds}ms");
                Console.WriteLine($"  Processed: {processedCount} emojis");
            }
        }