From b662b14e0156593acadba431445c37eb9a359b08 Mon Sep 17 00:00:00 2001 From: Hongjiang Zhang Date: Tue, 2 Jun 2020 07:46:36 +0800 Subject: [PATCH] add mock testcase --- .../jaydebeapi/mockdriver/MockConnection.java | 18 ++++++++++++++++++ test/test_mock.py | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/mockdriver/src/main/java/org/jaydebeapi/mockdriver/MockConnection.java b/mockdriver/src/main/java/org/jaydebeapi/mockdriver/MockConnection.java index 6c959fd..bf7f5f3 100644 --- a/mockdriver/src/main/java/org/jaydebeapi/mockdriver/MockConnection.java +++ b/mockdriver/src/main/java/org/jaydebeapi/mockdriver/MockConnection.java @@ -1,6 +1,7 @@ package org.jaydebeapi.mockdriver; import java.lang.reflect.Field; +import java.math.BigDecimal; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; @@ -59,6 +60,23 @@ public abstract class MockConnection implements Connection { Mockito.when(this.prepareStatement(Mockito.anyString())).thenReturn(mockPreparedStatement); } + public final void mockSimpleDecimalResult(int value) throws SQLException { + PreparedStatement mockPreparedStatement = Mockito.mock(PreparedStatement.class); + Mockito.when(mockPreparedStatement.execute()).thenReturn(true); + mockResultSet = Mockito.mock(ResultSet.class, "ResultSet(for simple decimal)"); + Mockito.when(mockPreparedStatement.getResultSet()).thenReturn(mockResultSet); + Mockito.when(mockResultSet.next()).thenReturn(true); + ResultSetMetaData mockMetaData = Mockito.mock(ResultSetMetaData.class); + Mockito.when(mockResultSet.getMetaData()).thenReturn(mockMetaData); + Mockito.when(mockMetaData.getColumnCount()).thenReturn(1); + + BigDecimal bd = new BigDecimal(Integer.toString(value)); + Mockito.when(mockResultSet.getObject(1)).thenReturn(bd); + Mockito.when(mockResultSet.getBigDecimal(1)).thenReturn(bd); + Mockito.when(mockMetaData.getColumnType(1)).thenReturn(Types.DECIMAL); + Mockito.when(this.prepareStatement(Mockito.anyString())).thenReturn(mockPreparedStatement); + } + public final void mockDateResult(int year, int month, int day) throws SQLException { PreparedStatement mockPreparedStatement = Mockito.mock(PreparedStatement.class); Mockito.when(mockPreparedStatement.execute()).thenReturn(true); diff --git a/test/test_mock.py b/test/test_mock.py index 2d44952..d6fe171 100644 --- a/test/test_mock.py +++ b/test/test_mock.py @@ -57,6 +57,13 @@ class MockTest(unittest.TestCase): result = cursor.fetchone() self.assertEquals(result[0], "1899-12-31") + def test_simple_decimal(self): + self.conn.jconn.mockSimpleDecimalResult(12345) + cursor = self.conn.cursor() + cursor.execute("dummy stmt") + result = cursor.fetchone() + self.assertEquals(result[0], 12345) + def test_sql_exception_on_execute(self): self.conn.jconn.mockExceptionOnExecute("java.sql.SQLException", "expected") cursor = self.conn.cursor()