public async Task UploadTestTumblrs() { var uriFactory = new UriFactory(); var tableEntityFactory = new TableEntityFactory(uriFactory); var uploadBlobCommand = new UploadBlobFromStreamCommand(); var generateSCommand = new ResizeCommand(ResizeCommand.ScalingType.CropScaling, 128); var generateMCommand = new ResizeCommand(ResizeCommand.ScalingType.CropScaling, 300); var generateLCommand = new ResizeCommand(ResizeCommand.ScalingType.FitScaling, 1280); var createTumblrCommand = new CreateTumblrCommand { UriFactory = uriFactory, TableEntityFactory = tableEntityFactory }; var createTableEntitiesCommand = new CreateTableEntitiesCommand(); var command = new WriteTumblrCommand( _azureStorage, uploadBlobCommand, generateLCommand, generateMCommand, generateSCommand, createTumblrCommand, createTableEntitiesCommand); foreach (var testImage in GetTestImages()) { using (Stream stream = File.OpenRead(testImage)) { // upload dynamic pTumblr = new ExpandoObject(); // Blob pTumblr.Container = await _azureStorage.GetContainerReferenceAsync(LvConstants.ContainerNameOfImage); pTumblr.Stream = stream; pTumblr.BlobName = Path.GetFileName(testImage); // Create Tumblr pTumblr.PartitionKey = LvConstants.MediaTypeOfImage; pTumblr.TumblrText = new TumblrText { Text = "你也曾当过笨蛋,也曾试着当瞎子当聋子的去信任一个人,你也知道世界上最可悲的就是自我欺骗,但是人笨过傻过瞎过就够了,你更要懂得爱自己,而不是一直重蹈覆辙,还自以为多痴情。", Category = TumblrCategory.C2 }; // Table pTumblr.Table = await _azureStorage.GetTableReferenceAsync(LvConstants.TableNameOfTumblr); // Execute await command.ExecuteAsync(pTumblr); // Create Tumblr End } } }
public async Task Crud() { ICommand createCommand = new CreateTableEntitiesCommand(); ICommand readCommand = new ReadTableEntitiesCommand <TestTableEntity>(); ICommand updateCommand = new UpdateTableEntitiesCommand(); ICommand deleteCommand = new DeleteTableEntitiesCommand(); ICommand deleteTableCommand = new DeleteTableCommand(); var partitionKey = Guid.NewGuid().ToString(); const int count = 5; var entities = new List <TestTableEntity>(); for (var i = 0; i < count; i++) { entities.Add(new TestTableEntity { PartitionKey = partitionKey, RowKey = Guid.NewGuid().ToString(), Text = i.ToString() }); } var filter = TableQuery.GenerateFilterCondition(LvConstants.PartitionKey, QueryComparisons.Equal, partitionKey); // create dynamic c = await GetInitialExpandoObjectAsync(); c.Entities = entities; await createCommand.ExecuteAsync(c); // read dynamic r = await GetInitialExpandoObjectAsync(); r.Filter = filter; await readCommand.ExecuteAsync(r); List <TestTableEntity> entitiesR = r.Entities; Assert.True(entities.ToJsonString().CosineEqual(entitiesR.ToJsonString())); // update var entities2 = entities.CloneByJson(); var updatedText = Guid.NewGuid().ToString(); foreach (var entity in entities2) { entity.Text = updatedText; } dynamic u = await GetInitialExpandoObjectAsync(); u.Entities = entities2; await updateCommand.ExecuteAsync(u); dynamic r2 = await GetInitialExpandoObjectAsync(); r2.Filter = filter; await readCommand.ExecuteAsync(r2); List <TestTableEntity> entitiesR2 = r2.Entities; for (var i = 0; i < count; i++) { Assert.Equal(entities2[i].Text, entitiesR2[i].Text); } // delete dynamic d = await GetInitialExpandoObjectAsync(); d.Entities = entities2; await deleteCommand.ExecuteAsync(d); dynamic r3 = await GetInitialExpandoObjectAsync(); r3.Filter = filter; await readCommand.ExecuteAsync(r3); List <TestTableEntity> entitiesR3 = r3.Entities; Assert.Empty(entitiesR3); dynamic dt = await GetInitialExpandoObjectAsync(); await deleteTableCommand.ExecuteAsync(dt); }