public void KindPropertyReturnsCountRestrictionEnumMember()
        {
            // Arrange & Act
            CountRestrictions count = new CountRestrictions();

            // Assert
            Assert.Equal(CapabilitesTermKind.CountRestrictions, count.Kind);
        }
        public void UnknownAnnotatableTargetReturnsDefaultPropertyValues()
        {
            // Arrange & Act
            CountRestrictions count      = new CountRestrictions();
            EdmEntityType     entityType = new EdmEntityType("NS", "Entity");

            //  Act
            bool result = count.Load(EdmCoreModel.Instance, entityType);

            // Assert
            Assert.False(result);
            Assert.True(count.IsCountable);
            Assert.Null(count.Countable);
            Assert.Null(count.NonCountableProperties);
            Assert.Null(count.NonCountableNavigationProperties);
        }
Пример #3
0
        /// <summary>
        /// Create the $count parameter.
        /// </summary>
        /// <param name="context">The OData context.</param>
        /// <param name="target">The Edm annotation target.</param>
        /// <returns>The created <see cref="OpenApiParameter"/> or null.</returns>
        public static OpenApiParameter CreateCount(this ODataContext context, IEdmVocabularyAnnotatable target)
        {
            Utils.CheckArgumentNull(context, nameof(context));
            Utils.CheckArgumentNull(target, nameof(target));

            CountRestrictions count = context.Model.GetCountRestrictions(target);

            if (count == null || count.IsCountable)
            {
                return(new OpenApiParameter
                {
                    Reference = new OpenApiReference {
                        Type = ReferenceType.Parameter, Id = "count"
                    }
                });
            }

            return(null);
        }
        private static void VerifyCountRestrictions(CountRestrictions count)
        {
            Assert.NotNull(count);

            Assert.NotNull(count.Countable);
            Assert.False(count.Countable.Value);
            Assert.False(count.IsCountable);

            Assert.NotNull(count.NonCountableProperties);
            Assert.Equal(2, count.NonCountableProperties.Count);
            Assert.Equal("Emails|mij", String.Join("|", count.NonCountableProperties));

            Assert.NotNull(count.NonCountableNavigationProperties);
            Assert.Equal(2, count.NonCountableNavigationProperties.Count);
            Assert.Equal("RelatedEvents,abc", String.Join(",", count.NonCountableNavigationProperties));

            Assert.False(count.IsNonCountableProperty("id"));
            Assert.True(count.IsNonCountableProperty("Emails"));
            Assert.True(count.IsNonCountableNavigationProperty("RelatedEvents"));
        }
        public void TargetOnEntitySetReturnsCorrectCountRestrictionsValue(EdmVocabularyAnnotationSerializationLocation location)
        {
            // Arrange
            const string template = @"
                <Annotations Target=""NS.Default/Calendars"">
                  {0}
                </Annotations>";

            IEdmModel model = GetEdmModel(template, location);

            Assert.NotNull(model); // guard

            IEdmEntitySet calendars = model.EntityContainer.FindEntitySet("Calendars");

            Assert.NotNull(calendars); // guard

            // Act
            CountRestrictions count = new CountRestrictions();
            bool result             = count.Load(model, calendars);

            // Assert
            Assert.True(result);
            VerifyCountRestrictions(count);
        }