Esempio n. 1
0
        public void GivenSingleObjectAndUseCamelCasePolicy_ReturnsResourceWithCamelCasePropertyNames()
        {
            // Arrange
            var propertyName =
                nameof(ToWrap.Text)
                .ToCamelCase();

            var policy =
                WrapPolicy
                .For <ToWrap>()
                .UseCamelCase()
                .Property(i => i.Text);

            // Act
            var resource =
                WrappedObject.WrapUsing(policy);

            // Assert
            resource
            .Should()
            .NotBeNull();

            resource
            .Properties
            .Should()
            .BeEquivalentTo(propertyName);

            resource[propertyName]
            .Should()
            .Be(WrappedObject.Text);
        }
Esempio n. 2
0
        public void ReturnsEmptyPolicy()
        {
            // Act
            var policy =
                WrapPolicy
                .For <ToWrap>();

            // Assert
            policy
            .Should()
            .NotBeNull();

            policy
            .UseCamelCase
            .Should()
            .BeFalse();

            policy
            .LinkingRules
            .Should()
            .BeEmpty();

            policy
            .WrappingRules
            .Should()
            .BeEmpty();
        }
Esempio n. 3
0
        public void GivenSingleObjectAndPolicyWithProperties_ThenReturnsResourceWithPropertiesAssigned()
        {
            // Arrange
            var policy =
                WrapPolicy
                .For <ToWrap>()
                .Property(i => i.Text)
                .Property(i => i.Number);

            // Act
            var resource =
                WrappedObject.WrapUsing(policy);

            // Assert
            resource
            .Should()
            .NotBeNull();

            resource
            .Properties
            .Should()
            .BeEquivalentTo(nameof(ToWrap.Text), nameof(ToWrap.Number));

            resource[nameof(ToWrap.Text)]
            .Should()
            .Be(WrappedObject.Text);

            resource[nameof(ToWrap.Number)]
            .Should()
            .Be(WrappedObject.Number);
        }
Esempio n. 4
0
        public void GivenSingleObjectAndPolicyWithExplicitPropertyName_ThenReturnsResourceWithPropertyExplicitlyNamed()
        {
            // Arrange
            var newPropertyName =
                "name";

            var policy =
                WrapPolicy
                .For <ToWrap>()
                .UseCamelCase()
                .Property(i => i.Text)
                .As(newPropertyName);

            // Act
            var resource =
                WrappedObject.WrapUsing(policy);

            // Assert
            resource
            .Should()
            .NotBeNull();

            resource
            .Properties
            .Should()
            .BeEquivalentTo(newPropertyName);

            resource[newPropertyName]
            .Should()
            .Be(WrappedObject.Text);
        }
Esempio n. 5
0
        public void GivenSingleObjectAndPolicyWithNestedProperty_ThenReturnsResourceWith()
        {
            // Arrange
            var propertyName = nameof(ToWrap.Nested) + nameof(Bar.Text);

            var policy =
                WrapPolicy
                .For <ToWrap>()
                .Property(i => i.Nested.Text);

            // Act
            var resource =
                WrappedObject.WrapUsing(policy);

            // Assert
            resource
            .Should()
            .NotBeNull();

            resource
            .Properties
            .Should()
            .BeEquivalentTo(propertyName);

            resource[propertyName]
            .Should()
            .Be(WrappedObject.Nested.Text);
        }
Esempio n. 6
0
        public void GivenWrapPolicyCoupling_ThenAddsRuleToCurrentPolicyAndReturnsIt()
        {
            // Arrange
            Expression <Func <ToWrap, object> > textGetter =
                i => i.Text;

            Expression <Func <ToWrap, object> > numberGetter =
                i => i.Number;

            var coupling =
                WrapPolicy
                .For <ToWrap>()
                .Property(textGetter)
                .Property(numberGetter);

            // Act
            WrapPolicy <ToWrap> policy =
                coupling;

            // Asset
            policy
            .WrappingRules
            .Select(r => r.Getter)
            .Should()
            .BeEquivalentTo(
                textGetter,
                numberGetter);
        }
Esempio n. 7
0
 internal PolicyRuleCoupling(
     WrapPolicy <TWrappedObject>
     policy, TRule rule)
 {
     Policy = policy;
     Rule   = rule;
 }
Esempio n. 8
0
        public void GivenObjectCollectionAndPolicyWithContentWrap_ThenReturnsResourceWithCollectionItemsAsEmbedResources()
        {
            // Arrange
            var wrapArray =
                new[]
            {
                new ToWrap()
                {
                    Text = "Foo"
                },
                new ToWrap()
                {
                    Text = "Bar"
                }
            };

            var policy =
                WrapPolicy
                .For <ToWrap[]>()
                .EmbedContentUsing <ToWrap[], ToWrap>(
                    WrapPolicy
                    .For <ToWrap>()
                    .Property(i => i.Text));

            // Act
            var resource =
                wrapArray
                .WrapUsing(policy);

            // Assert
            resource
            .Should()
            .NotBeNull();

            resource
            .Embedded
            .Should()
            .HaveCount(2);

            var resources =
                resource
                .Embedded
                .ToArray();

            resources[0]
            .Properties
            .Should()
            .BeEquivalentTo(
                resources[1].Properties,
                because: "same policy should be used to create each resource");

            resources
            .Select(r => r[nameof(ToWrap.Text)])
            .Should()
            .BeEquivalentTo(
                new[] { "Foo", "Bar" },
                because: "each resources should have properties assigned based on the original item");
        }
Esempio n. 9
0
        public Resource[] Wrapping()
        {
            WrapPolicy <ToWrap> policy =
                WrapPolicy
                .For <ToWrap>()
                .Property(i => i.Text);

            return(Data
                   .WrapUsing(policy)
                   .ToArray());
        }
Esempio n. 10
0
        public void GivenPolicyWithLinkingWithoutUrlHelper_ReturnsResourceWithoutLinks()
        {
            // Arrange
            var policy =
                WrapPolicy
                .For <ToWrap>()
                .Link((ToWrap obj, DummyController c) => c.GetNull());

            // Act
            var resource =
                WrappedObject.WrapUsing(policy);

            // Assert
            resource
            .Links
            .Should()
            .BeEmpty();
        }
Esempio n. 11
0
        public void GivenPolicyWithLinkingPredicateReturningFalse_ReturnsResourceWithoutLinks()
        {
            // Arrange
            var policy =
                WrapPolicy
                .For <ToWrap>()
                .Link((ToWrap obj, DummyController c) => c.GetNull())
                .When(obj => false);

            // Act
            var resource =
                WrappedObject.WrapUsing(policy);

            // Assert
            resource
            .Links
            .Should()
            .BeEmpty();
        }
Esempio n. 12
0
        public void GivenPropertyGetter_ReturnsWrapRuleWithoutName()
        {
            // Arrange
            Expression <Func <ToWrap, object> > getter =
                i => i.Text;

            // Act
            WrapPolicy <ToWrap> policy =
                WrapPolicy
                .For <ToWrap>()
                .Property(getter);

            // Assert
            policy
            .WrappingRules
            .Should()
            .ContainSingle(r =>
                           r.Name == null && r.Getter == getter);
        }
Esempio n. 13
0
        public void GivenPropertyGetterAndExplictName_ReturnsWrapRuleWithName()
        {
            var name =
                "name";

            Expression <Func <ToWrap, object> > getter =
                i => i.Text;

            // Act
            WrapPolicy <ToWrap> policy =
                WrapPolicy
                .For <ToWrap>()
                .Property(getter)
                .As(name);

            // Assert
            policy
            .WrappingRules
            .Should()
            .ContainSingle(r =>
                           r.Name == name && r.Getter == getter);
        }