Example #1
0
        public void ConvertFromEntityWithSerializeMapping()
        {
            // Arrange
            var serializer = new NewtonsoftJsonSerializer();

            var map = new EntityTypeMap <EntityWithSerializableProperty>(e =>
                                                                         e.PartitionKey(x => x.Pk)
                                                                         .RowKey(x => x.Rk)
                                                                         .Serialize(x => x.SerializableEntity, "NestedEntityRaw")
                                                                         );

            var entity = new EntityWithSerializableProperty
            {
                SerializableEntity = new SerializableEntity
                {
                    DecimalValue = 4,
                },
            };

            // Act
            var tableEntity = (DynamicTableEntity)map.GetEntity(entity);

            // Assert
            Assert.NotNull(tableEntity.Properties["NestedEntityRaw"].StringValue);

            var deserialized = serializer.Deserialize <SerializableEntity>(tableEntity.Properties["NestedEntityRaw"].StringValue);

            Assert.Equal(entity.SerializableEntity.DecimalValue, deserialized.DecimalValue);
        }
Example #2
0
        public void GetSerializablePropertyValue(ISerializer serializer)
        {
            // Arrange
            var propertyInfo = typeof(EntityWithSerializableProperty).GetProperty(nameof(EntityWithSerializableProperty.SerializableEntity));

            _objectUnderTest = new SerializableProperty <EntityWithSerializableProperty>(propertyInfo, serializer);
            var tableEntity = new DynamicTableEntity();

            var nestedEntity = new SerializableEntity
            {
                DecimalValue = 26,
            };

            var entity = new EntityWithSerializableProperty
            {
                SerializableEntity = nestedEntity,
            };

            // Act
            _objectUnderTest.GetMemberValue(entity, tableEntity);

            // Assert
            var entityProperty = tableEntity.Properties[nameof(EntityWithSerializableProperty.SerializableEntity)].StringValue;

            Assert.Equal(entityProperty, serializer.Serialize(nestedEntity));
        }
        public void SerializablePropertyValueAccessorSetWithComplexPropertiesTest(ISerializer serializer)
        {
            // Arrange
            PropertyInfo propertyInfo  = typeof(EntityWithSerializableProperty).GetProperty(nameof(EntityWithSerializableProperty.SerializableEntity));
            var          valueAccessor = new SerializableValueAccessor <EntityWithSerializableProperty>(propertyInfo, serializer);
            var          entity        = new EntityWithSerializableProperty();

            // Act
            valueAccessor.SetValue(entity, new EntityProperty(serializer.Serialize(new SerializableEntity()
            {
                DecimalValue = 5
            })));

            // Assert
            Assert.Equal(5, entity.SerializableEntity.DecimalValue);
        }
        public void SerializablePropertyValueAccessorGetWithComplexPropertiesTest(ISerializer serializer)
        {
            //Arrange
            PropertyInfo propertyInfo  = typeof(EntityWithSerializableProperty).GetProperty(nameof(EntityWithSerializableProperty.SerializableEntity));
            var          valueAccessor = new SerializableValueAccessor <EntityWithSerializableProperty>(propertyInfo, serializer);
            var          entity        = new EntityWithSerializableProperty {
                SerializableEntity = new SerializableEntity()
                {
                    DecimalValue = 2
                }
            };

            // Act
            EntityProperty entityProperty = valueAccessor.GetValue(entity);

            // Assert
            Assert.NotNull(entityProperty.StringValue);
            Assert.Equal(entity.SerializableEntity.DecimalValue, serializer.Deserialize <SerializableEntity>(entityProperty.StringValue).DecimalValue);
        }