public async Task Create2_2() { var partitionKey = LvConstants.MediaTypeOfAll; const string mediaUri = "media uri"; const TumblrCategory category = TumblrCategory.C1; const string thumbnailUri = "TestThumbnailUri"; var tumblrText = new TumblrText { Text = "TestText", Category = category }; dynamic p1 = new ExpandoObject(); p1.PartitionKey = partitionKey; p1.MediaUri = mediaUri; p1.ThumbnailUri = thumbnailUri; p1.TumblrText = tumblrText; await _fixture.Command.ExecuteAsync(p1); TumblrEntity entity = p1.Entity; Assert.NotNull(entity); Assert.Equal(partitionKey, entity.PartitionKey); Assert.Equal(tumblrText.Category.ToString("D"), entity.RowKey.Substring(0, 1)); Assert.Equal(mediaUri, entity.MediaUri); Assert.Equal(tumblrText.Text, entity.Text); Assert.Equal(partitionKey, entity.MediaType); Assert.Equal(category.ToString("D"), entity.TumblrCategory); List <ITableEntity> ientities = p1.Entities; var entities = ientities.Cast <TumblrEntity>().ToList(); Assert.Equal(2, entities.Count()); var entity0 = entities[0]; var entity1 = entities[1]; Assert.True(new[] { entity0.MediaUri, entity1.MediaUri }.AllEqual()); Assert.True(new[] { entity0.MediaSmallUri, entity1.MediaSmallUri }.AllEqual()); Assert.True(new[] { entity0.MediaUri, entity1.MediaUri }.AllEqual()); Assert.True(new[] { entity0.CreateTime, entity1.CreateTime }.AllEqual()); Assert.True(new[] { entity0.MediaType, entity1.MediaType }.AllEqual()); Assert.True(new[] { entity0.TumblrCategory, entity1.TumblrCategory }.AllEqual()); Assert.True(new[] { _fixture.UriFactory.GetInvertedTicksFromTumblrRowKey(entity0.RowKey), _fixture.UriFactory.GetInvertedTicksFromTumblrRowKey(entity1.RowKey) }.AllEqual()); // Dynamic // PartitionKey Assert.Equal(partitionKey, entity0.PartitionKey); Assert.Equal(partitionKey, entity1.PartitionKey); // RowKey Assert.Equal(category.ToString("D"), entity0.RowKey.Substring(0, 1)); Assert.Equal(TumblrCategory.All.ToString("D"), entity1.RowKey.Substring(0, 1)); }
public async Task CreateFavorite_Return_EquivalentOfTumblrEntity() { var partitionKey = LvConstants.MediaTypeOfAll; const string mediaUri = "TestMediaUri"; const string thumbnailUri = "TestThumbnailUri"; var tumblrText = new TumblrText { Text = "TestText", Category = TumblrCategory.C1 }; dynamic p1 = new ExpandoObject(); p1.PartitionKey = partitionKey; p1.MediaUri = mediaUri; p1.ThumbnailUri = thumbnailUri; p1.TumblrText = tumblrText; await _fixture.CreateTumblrCommand.ExecuteAsync(p1); TumblrEntity tumblr = p1.Entity; const string userId = "userid"; dynamic p2 = tumblr.ToExpandoObject(); p2.RowKey = _fixture.UriFactory.GetInvertedTicksFromTumblrRowKey(tumblr.RowKey); p2.UserId = userId; await _fixture.CreateFavoriteCommand.ExecuteAsync(p2); FavoriteEntity favorite = p2.Entity; Assert.Equal(favorite.PartitionKey, userId); Assert.Equal(favorite.RowKey, _fixture.UriFactory.CreateFavoriteRowKey(partitionKey, _fixture.UriFactory.GetInvertedTicksFromTumblrRowKey(tumblr.RowKey))); Assert.Equal(favorite.MediaUri, tumblr.MediaUri); Assert.Equal(favorite.MediaSmallUri, tumblr.MediaSmallUri); Assert.Equal(favorite.Text, tumblr.Text); Assert.Equal(favorite.CreateTime, tumblr.CreateTime); Assert.Equal(favorite.MediaType, tumblr.MediaType); Assert.Equal(favorite.TumblrCategory, tumblr.TumblrCategory); List <ITableEntity> ientities = p2.Entities; var entities = ientities.Cast <FavoriteEntity>().ToList(); Assert.Equal(1, entities.Count()); }
public override Task ExecuteAsync(dynamic p) { if (!CanExecute(p)) { return(Task.FromResult(false)); } // Create TumblrEntity TumblrEntity tumblrEntity = TableEntityFactory.CreateTumblrEntity(p); if (tumblrEntity == null) { return(Task.FromResult(false)); } p.Entity = tumblrEntity; // Copies var entities = new List <TumblrEntity> { tumblrEntity }; if (!_tumblrText.Category.Equals(TumblrCategory.All)) { var copyEntity = tumblrEntity.CloneByJson(); copyEntity.RowKey = UriFactory.ReplaceTumblrCategoryOfRowKey(tumblrEntity.RowKey, TumblrCategory.All); entities.Add(copyEntity); } if (!tumblrEntity.PartitionKey.Equals(LvConstants.MediaTypeOfAll)) { var copyEntities = entities.CloneByJson <TumblrEntity>(); foreach (var copyEntity in copyEntities) { copyEntity.PartitionKey = LvConstants.MediaTypeOfAll; entities.Add(copyEntity); } } p.Entities = entities.Cast <ITableEntity>().ToList(); return(Task.FromResult(true)); }