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