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); }
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(); }
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); }
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); }
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); }
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); }
internal PolicyRuleCoupling( WrapPolicy <TWrappedObject> policy, TRule rule) { Policy = policy; Rule = rule; }
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"); }
public Resource[] Wrapping() { WrapPolicy <ToWrap> policy = WrapPolicy .For <ToWrap>() .Property(i => i.Text); return(Data .WrapUsing(policy) .ToArray()); }
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(); }
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(); }
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); }
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); }