Ejemplo n.º 1
0
        public void FilterConvention_Should_Fail_When_FieldHandlerIsNotRegistered()
        {
            // arrange
            var provider = new QueryableFilterProvider(
                descriptor =>
            {
                descriptor.AddFieldHandler <QueryableStringEqualsHandler>();
            });

            var convention = new FilterConvention(
                descriptor =>
            {
                descriptor.Operation(DefaultOperations.Equals).Name("eq");
                descriptor.BindRuntimeType <string, TestOperationFilterType>();
                descriptor.Provider(provider);
            });

            var type = new FooFilterType();

            //act
            SchemaException?error =
                Assert.Throws <SchemaException>(() => CreateSchemaWith(type, convention));

            Assert.Single(error.Errors);
            error.Errors[0].Message.MatchSnapshot();
        }
Ejemplo n.º 2
0
        public void FilterConvention_Should_Fail_When_NoMatchingBindingWasFound()
        {
            // arrange
            var provider = new QueryableFilterProvider(
                descriptor =>
            {
                descriptor.AddFieldHandler <QueryableStringEqualsHandler>();
                descriptor.AddFieldHandler <QueryableDefaultFieldHandler>();
            });

            var convention = new FilterConvention(
                descriptor =>
            {
                descriptor.Operation(DefaultOperations.Equals).Name("eq");
                descriptor.Provider(provider);
            });

            var type = new FooFilterType();

            //act
            SchemaException?error =
                Assert.Throws <SchemaException>(() => CreateSchemaWith(type, convention));

            Assert.Single(error.Errors);
#if NETCOREAPP2_1
            error.Errors[0].Message.MatchSnapshot(new SnapshotNameExtension("NETCOREAPP2_1"));
#else
            error.Errors[0].Message.MatchSnapshot();
#endif
        }
Ejemplo n.º 3
0
        public void FilterConvention_Should_Fail_When_OperationsIsNotNamed()
        {
            // arrange
            var provider = new QueryableFilterProvider(
                descriptor =>
            {
                descriptor.AddFieldHandler <QueryableStringEqualsHandler>();
                descriptor.AddFieldHandler <QueryableDefaultFieldHandler>();
            });

            var convention = new FilterConvention(
                descriptor =>
            {
                descriptor.Operation(DefaultOperations.Equals).Description("eq");
                descriptor.BindRuntimeType <string, TestOperationFilterType>();
                descriptor.Provider(provider);
            });

            var type = new FooFilterType();

            //act
            ArgumentException error =
                Assert.Throws <ArgumentException>(() => CreateSchemaWith(type, convention));

#if NETCOREAPP2_1
            error.Message.MatchSnapshot(new SnapshotNameExtension("NETCOREAPP2_1"));
#else
            error.Message.MatchSnapshot();
#endif
        }
Ejemplo n.º 4
0
        public void FilterConvention_Should_Fail_When_OperationsIsNotNamed()
        {
            // arrange
            var provider = new QueryableFilterProvider(
                descriptor =>
            {
                descriptor.AddFieldHandler <QueryableStringEqualsHandler>();
                descriptor.AddFieldHandler <QueryableDefaultFieldHandler>();
            });

            var convention = new FilterConvention(
                descriptor =>
            {
                descriptor.Operation(DefaultFilterOperations.Equals).Description("eq");
                descriptor.BindRuntimeType <string, TestOperationFilterInputType>();
                descriptor.Provider(provider);
            });

            var type = new FooFilterInput();

            //act
            ArgumentException error =
                Assert.Throws <ArgumentException>(() => CreateSchemaWith(type, convention));

            Assert.Equal("Name", error.ParamName);
        }
Ejemplo n.º 5
0
        public void FilterConvention_Should_Work_With_Extensions()
        {
            // arrange
            var provider = new QueryableFilterProvider(
                descriptor =>
            {
                descriptor.AddFieldHandler <QueryableStringEqualsHandler>();
                descriptor.AddFieldHandler <QueryableDefaultFieldHandler>();
            });

            var convention = new FilterConvention(
                descriptor =>
            {
            });

            var extension1 = new FilterConventionExtension(
                descriptor =>
            {
                descriptor.BindRuntimeType <string, TestOperationFilterType>();
                descriptor.Provider(provider);
            });

            var extension2 = new FilterConventionExtension(
                descriptor =>
            {
                descriptor.Operation(DefaultOperations.Equals).Name("eq");
            });

            IValueNode value = Utf8GraphQLParser.Syntax.ParseValueLiteral("{ bar: { eq:\"a\" }}");
            var        type  = new FooFilterType();

            //act
            CreateSchemaWith(type, convention, extension1, extension2);
            var executor = new ExecutorBuilder(type);

            Func <Foo, bool> func = executor.Build <Foo>(value);

            // assert
            var a = new Foo {
                Bar = "a"
            };

            Assert.True(func(a));

            var b = new Foo {
                Bar = "b"
            };

            Assert.False(func(b));
        }
Ejemplo n.º 6
0
        public void FilterProvider_Throws_Exception_When_NotInitializedByConvention()
        {
            // arrange
            var provider = new QueryableFilterProvider(
                descriptor => descriptor.AddFieldHandler <QueryableStringEqualsHandler>());
            var context = ConventionContext.Create(
                null,
                new ServiceCollection().BuildServiceProvider(),
                DescriptorContext.Create());

            // act
            provider.Initialize(context);

            // assert
            SchemaException exception =
                Assert.Throws <SchemaException>(() => provider.OnComplete(context));

            exception.Message.MatchSnapshot();
        }