public async void ShouldBeBindModelWithModelErrorAsyncTest()
        {
            var queryCollection = Helper.QueryCollection("query", "name=a*");
            var context         = new DefaultHttpContext();

            context.Request.Query = queryCollection;
            var actionContext = new ActionContext {
                HttpContext = context
            };
            var mock = new MockModelBindingContext
            {
                ActionContext = actionContext, ModelState = new ModelStateDictionary()
            };
            var mockLogger = new Mock <ILogger <Customer> >();

            mockLogger.Setup(m => m.IsEnabled(It.IsAny <LogLevel>())).Returns(true);
            var queryModelBinder = new RSqlQueryModelBinder <Customer>(new Settings(), Helper.JsonOptions(), mockLogger.Object);
            await queryModelBinder.BindModelAsync(mock);

            var expected = mock.Result;

            expected.Model
            .Should().BeNull();

            mock.ModelState
            .IsValid.Should().BeFalse();
        }
Example #2
0
        public async void ShouldBeBindModelAsyncWithModelErrorTest()
        {
            var queryCollection = Helper.QueryCollection
                                  (
                "pageSize", "a",
                "pageNumber", "2",
                "sort", "name;desc,birthDate"
                                  );

            var context = new DefaultHttpContext();

            context.Request.Query = queryCollection;
            var actionContext = new ActionContext {
                HttpContext = context
            };
            var mock = new MockModelBindingContext
            {
                ActionContext = actionContext, ModelState = new ModelStateDictionary()
            };
            var pageableModelBinder = new RSqlPageableModelBinder <Customer>(Helper.Settings(), Helper.JsonOptions(), Helper.MockLogger <Customer>().Object);
            await pageableModelBinder.BindModelAsync(mock);

            var expected = mock.Result;

            expected.Model
            .Should().BeNull();

            mock.ModelState
            .IsValid.Should().BeFalse();
        }
        public async void ShouldBeBindModelAsyncWithCacheTest()
        {
            const string query           = "name==a*";
            var          queryCollection = Helper.QueryCollection("query", query);

            var context = new DefaultHttpContext();

            context.Request.Query = queryCollection;
            var actionContext = new ActionContext {
                HttpContext = context
            };
            var mock = new MockModelBindingContext
            {
                ActionContext = actionContext, ModelState = new ModelStateDictionary()
            };

            var settings = new Settings
            {
                QueryCache         = new MemoryCache(new MemoryCacheOptions()),
                OnCreateCacheEntry = (m) => { m.Size = 1024; }
            };
            var mockLogger = new Mock <ILogger <Customer> >();

            mockLogger.Setup(m => m.IsEnabled(It.IsAny <LogLevel>())).Returns(true);


            var queryModelBinder = new RSqlQueryModelBinder <Customer>(settings, Helper.JsonOptions(), mockLogger.Object);
            await queryModelBinder.BindModelAsync(mock);

            var expected = mock.Result.Model as IRSqlQuery <Customer>;

            expected
            .Should().NotBeNull();

            mock.ModelState
            .IsValid.Should().BeTrue();

            settings.QueryCache.TryGetValue(query, out var expected2);
            expected.Should().Be(expected2);
        }
        public void Binding_Single_PrimaryKey_Model_Returns_EntityReference()
        {
            var serviceProvider = new ServiceCollection()
                                  .AddORM()
                                  .AddORMEntity <Entity>()
                                  .BuildServiceProvider();

            var bindingProvider = new ORMEntityModelBindingProvider();

            using (var scope = serviceProvider.CreateScope())
            {
                var primaryKey      = Guid.NewGuid();
                var providerContext = new MockModelBindingProviderContext(
                    scope.ServiceProvider, typeof(IEntityReference <Entity>)
                    );
                var binder         = bindingProvider.GetBinder(providerContext);
                var bindingContext = new MockModelBindingContext(primaryKey.ToString(), scope.ServiceProvider);
                binder.BindModelAsync(bindingContext);

                var result = bindingContext.Result.Model as Data.SQL.ORM.PrimaryKeyEntityReference <Entity>;
                Assert.IsNotNull(result);
                Assert.AreEqual(primaryKey, result.AsEntity().Id);
            }
        }
        public async void ShouldBeBindModelAsyncTest()
        {
            var queryCollection = Helper.QueryCollection("query", "name==a*");
            var context         = new DefaultHttpContext();

            context.Request.Query = queryCollection;
            var actionContext = new ActionContext {
                HttpContext = context
            };
            var mock = new MockModelBindingContext
            {
                ActionContext = actionContext, ModelState = new ModelStateDictionary()
            };
            var queryModelBinder = new RSqlQueryModelBinder <Customer>(new Settings(), Helper.JsonOptions(), Helper.MockLogger <Customer>().Object);
            await queryModelBinder.BindModelAsync(mock);

            var expected = mock.Result.Model as IRSqlQuery <Customer>;

            expected
            .Should().NotBeNull();

            mock.ModelState
            .IsValid.Should().BeTrue();
        }