public void AMicroLiteExceptionIsThrown() { var session = new ReadOnlySession( ConnectionScope.PerTransaction, new Mock <ISqlDialect>().Object, new Mock <IDbDriver>().Object); var exception = Assert.Throws <MicroLiteException>( () => session.PagedAsync <Customer>(new SqlQuery(""), PagingOptions.None).Result); Assert.Equal(ExceptionMessages.Session_PagingOptionsMustNotBeNone, exception.Message); }
public void PagedThrowsArgumentNullExceptionForNullSqlQuery() { var session = new ReadOnlySession( ConnectionScope.PerTransaction, new Mock <ISqlDialect>().Object, new Mock <IDbDriver>().Object); var exception = Assert.Throws <ArgumentNullException>( () => session.PagedAsync <Customer>(null, PagingOptions.ForPage(1, 25)).Result); Assert.Equal("sqlQuery", exception.ParamName); }
public void PagedThrowsObjectDisposedExceptionIfDisposed() { var session = new ReadOnlySession( ConnectionScope.PerTransaction, new Mock <ISqlDialect>().Object, new Mock <IDbDriver>().Object); using (session) { } Assert.Throws <ObjectDisposedException>(() => session.PagedAsync <Customer>(null, PagingOptions.ForPage(1, 25)).Result); }
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 ReadOnlySession( 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(); }