Beispiel #1
0
        public void PagedThrowsArgumentNullExceptionForNullSqlQuery()
        {
            var session = new AsyncReadOnlySession(
                ConnectionScope.PerTransaction,
                new Mock <ISqlDialect>().Object,
                new Mock <IDbDriver>().Object);

            var exception = Assert.Throws <AggregateException>(
                () => session.PagedAsync <Customer>(null, PagingOptions.ForPage(1, 25)).Result);

            Assert.Equal("sqlQuery", ((ArgumentNullException)exception.InnerException).ParamName);
        }
Beispiel #2
0
            public void AMicroLiteExceptionIsThrown()
            {
                var session = new AsyncReadOnlySession(
                    ConnectionScope.PerTransaction,
                    new Mock <ISqlDialect>().Object,
                    new Mock <IDbDriver>().Object);

                var exception = Assert.Throws <AggregateException>(
                    () => session.PagedAsync <Customer>(new SqlQuery(""), PagingOptions.None).Result);

                Assert.IsType <MicroLiteException>(exception.InnerException);
                Assert.Equal(ExceptionMessages.Session_PagingOptionsMustNotBeNone, exception.InnerException.Message);
            }
Beispiel #3
0
        public void PagedExecutesAndReturnsResultsForTenthPageWithTwentyFivePerPage()
        {
            var sqlQuery      = new SqlQuery("SELECT * FROM TABLE");
            var countQuery    = new SqlQuery("SELECT COUNT(*) FROM TABLE");
            var pagedQuery    = new SqlQuery("SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS RowNumber FROM Customers) AS Customers");
            var combinedQuery = new SqlQuery("SELECT COUNT(*) FROM TABLE;SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS RowNumber FROM Customers) AS Customers");

            var mockReader = new Mock <IDataReader>();

            mockReader.Setup(x => x.FieldCount).Returns(new Queue <int>(new[] { 1, 0 }).Dequeue);
            mockReader.Setup(x => x[0]).Returns(1000); // Simulate 1000 records in the count query
            mockReader.Setup(x => x.NextResult()).Returns(new Queue <bool>(new[] { true, false }).Dequeue);
            mockReader.Setup(x => x.Read()).Returns(new Queue <bool>(new[] { true, false, true, false }).Dequeue);
            mockReader.As <IDisposable>().Setup(x => x.Dispose());

            var mockCommand = new Mock <IDbCommand>();

            mockCommand.Setup(x => x.ExecuteReader(It.IsAny <CommandBehavior>())).Returns(mockReader.Object);
            mockCommand.As <IDisposable>().Setup(x => x.Dispose());

            var mockConnection = new Mock <IDbConnection>();

            var mockSqlDialect = new Mock <ISqlDialect>();

            mockSqlDialect.Setup(x => x.CountQuery(sqlQuery)).Returns(countQuery);
            mockSqlDialect.Setup(x => x.PageQuery(sqlQuery, PagingOptions.ForPage(10, 25))).Returns(pagedQuery);

            var mockDbDriver = new Mock <IDbDriver>();

            mockDbDriver.Setup(x => x.CreateConnection()).Returns(new MockDbConnectionWrapper(mockConnection.Object));
            mockDbDriver.Setup(x => x.SupportsBatchedQueries).Returns(true);
            mockDbDriver.Setup(x => x.Combine(countQuery, pagedQuery)).Returns(combinedQuery);
            mockDbDriver.Setup(x => x.BuildCommand(combinedQuery)).Returns(new MockDbCommandWrapper(mockCommand.Object));

            var session = new AsyncReadOnlySession(
                ConnectionScope.PerTransaction,
                mockSqlDialect.Object,
                mockDbDriver.Object);

            var page = session.PagedAsync <Customer>(sqlQuery, PagingOptions.ForPage(10, 25)).Result;

            Assert.Equal(10, page.Page);
            Assert.Equal(1, page.Results.Count);

            mockReader.VerifyAll();
            mockCommand.VerifyAll();
            mockConnection.VerifyAll();
            mockSqlDialect.VerifyAll();
        }
Beispiel #4
0
        public void PagedThrowsObjectDisposedExceptionIfDisposed()
        {
            var session = new AsyncReadOnlySession(
                ConnectionScope.PerTransaction,
                new Mock <ISqlDialect>().Object,
                new Mock <IDbDriver>().Object);

            using (session)
            {
            }

            var exception = Assert.Throws <AggregateException>(
                () => session.PagedAsync <Customer>(null, PagingOptions.ForPage(1, 25)).Result);

            Assert.IsType <ObjectDisposedException>(exception.InnerException);
        }
            public void AMicroLiteExceptionIsThrown()
            {
                var session = new AsyncReadOnlySession(
                    ConnectionScope.PerTransaction,
                    new Mock<ISqlDialect>().Object,
                    new Mock<IDbDriver>().Object);

                var exception = Assert.Throws<AggregateException>(
                    () => session.PagedAsync<Customer>(new SqlQuery(""), PagingOptions.None).Result);

                Assert.IsType<MicroLiteException>(exception.InnerException);
                Assert.Equal(ExceptionMessages.Session_PagingOptionsMustNotBeNone, exception.InnerException.Message);
            }
        public void PagedThrowsObjectDisposedExceptionIfDisposed()
        {
            var session = new AsyncReadOnlySession(
                ConnectionScope.PerTransaction,
                new Mock<ISqlDialect>().Object,
                new Mock<IDbDriver>().Object);

            using (session)
            {
            }

            var exception = Assert.Throws<AggregateException>(
                () => session.PagedAsync<Customer>(null, PagingOptions.ForPage(1, 25)).Result);

            Assert.IsType<ObjectDisposedException>(exception.InnerException);
        }
        public void PagedThrowsArgumentNullExceptionForNullSqlQuery()
        {
            var session = new AsyncReadOnlySession(
                ConnectionScope.PerTransaction,
                new Mock<ISqlDialect>().Object,
                new Mock<IDbDriver>().Object);

            var exception = Assert.Throws<AggregateException>(
                () => session.PagedAsync<Customer>(null, PagingOptions.ForPage(1, 25)).Result);

            Assert.Equal("sqlQuery", ((ArgumentNullException)exception.InnerException).ParamName);
        }
        public void PagedExecutesAndReturnsResultsForTenthPageWithTwentyFivePerPage()
        {
            var sqlQuery = new SqlQuery("SELECT * FROM TABLE");
            var countQuery = new SqlQuery("SELECT COUNT(*) FROM TABLE");
            var pagedQuery = new SqlQuery("SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS MicroLiteRowNumber FROM Customers) AS Customers");
            var combinedQuery = new SqlQuery("SELECT COUNT(*) FROM TABLE;SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS MicroLiteRowNumber FROM Customers) AS Customers");

            var mockSqlDialect = new Mock<ISqlDialect>();
            mockSqlDialect.Setup(x => x.CountQuery(sqlQuery)).Returns(countQuery);
            mockSqlDialect.Setup(x => x.PageQuery(sqlQuery, PagingOptions.ForPage(10, 25))).Returns(pagedQuery);

            var mockReader = new Mock<IDataReader>();
            mockReader.Setup(x => x.FieldCount).Returns(new Queue<int>(new[] { 1, 0 }).Dequeue);
            mockReader.Setup(x => x[0]).Returns(1000); // Simulate 1000 records in the count query
            mockReader.Setup(x => x.NextResult()).Returns(new Queue<bool>(new[] { true, false }).Dequeue);
            mockReader.Setup(x => x.Read()).Returns(new Queue<bool>(new[] { true, false, true, false }).Dequeue);
            mockReader.As<IDisposable>().Setup(x => x.Dispose());

            var mockCommand = new Mock<IDbCommand>();
            mockCommand.Setup(x => x.ExecuteReader(It.IsAny<CommandBehavior>())).Returns(mockReader.Object);

            var mockConnection = new Mock<IDbConnection>();
            mockConnection.Setup(x => x.CreateCommand()).Returns(mockCommand.Object);

            var mockDbDriver = new Mock<IDbDriver>();
            mockDbDriver.Setup(x => x.CreateConnection()).Returns(new MockDbConnectionWrapper(mockConnection.Object));
            mockDbDriver.Setup(x => x.SupportsBatchedQueries).Returns(true);
            mockDbDriver.Setup(x => x.Combine(countQuery, pagedQuery)).Returns(combinedQuery);

            var session = new AsyncReadOnlySession(
                ConnectionScope.PerTransaction,
                mockSqlDialect.Object,
                mockDbDriver.Object);

            var page = session.PagedAsync<Customer>(sqlQuery, PagingOptions.ForPage(10, 25)).Result;

            Assert.Equal(10, page.Page);
            Assert.Equal(1, page.Results.Count);

            mockReader.VerifyAll();
            mockCommand.VerifyAll();
            mockConnection.VerifyAll();
            mockSqlDialect.VerifyAll();
        }