예제 #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));
        }
예제 #2
0
 public override bool CanExecute(dynamic p)
 {
     _partitionKey   = p.PartitionKey;
     _mediaUri       = p.MediaUri;
     _mediaLargeUri  = p.MediaLargeUri;
     _mediaMediumUri = p.MediaMediumUri;
     _mediaSmallUri  = p.MediaSmallUri;
     _tumblrText     = p.TumblrText;
     return
         (new[] { _partitionKey, _mediaUri, _mediaLargeUri, _mediaMediumUri, _mediaSmallUri }.AllNotNullOrEmpty() &&
          _tumblrText != null);
 }
예제 #3
0
        public void CopyByJson_Return_True_WhenCopy()
        {
            var t = new TumblrText
            {
                Text     = "Hello World!",
                Category = TumblrCategory.C1
            };
            var p = t.CloneByJson();

            Assert.NotSame(t, p);
            Assert.Equal(t.Text, p.Text);
            Assert.Equal(t.Category, p.Category);
        }
예제 #4
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());
        }
예제 #5
0
        public ITableEntity CreateTumblrEntity(dynamic p)
        {
            string     partitionKey   = p.PartitionKey;
            string     mediaUri       = p.MediaUri;
            string     mediaLargeUri  = p.MediaLargeUri;
            string     mediaMediumUri = p.MediaMediumUri;
            string     mediaSmallUri  = p.MediaSmallUri;
            TumblrText tumblrText     = p.TumblrText;

            var now           = GetUtcNow();
            var invertedTicks = DateTimeHelper.GetInvertedTicks(now);

            return(new TumblrEntity(partitionKey, _uriFactory.CreateTumblrRowKey(tumblrText.Category, invertedTicks))
            {
                MediaType = partitionKey,
                MediaUri = mediaUri,
                MediaLargeUri = mediaLargeUri,
                MediaMediumUri = mediaMediumUri,
                MediaSmallUri = mediaSmallUri,
                Text = tumblrText.Text,
                TumblrCategory = tumblrText.Category.ToString("D"),
                CreateTime = now
            });
        }