Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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));
        }