From 3a4edca97b3650bcff5d206592bd7e52e60fc07c Mon Sep 17 00:00:00 2001 From: baztian Date: Wed, 3 Jun 2020 21:27:46 +0200 Subject: [PATCH] Also test non BigDecimal decimal types --- .../jaydebeapi/mockdriver/MockConnection.java | 20 +++++++++++++++++-- test/test_mock.py | 11 ++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/mockdriver/src/main/java/org/jaydebeapi/mockdriver/MockConnection.java b/mockdriver/src/main/java/org/jaydebeapi/mockdriver/MockConnection.java index 54893a5..8f9c0fd 100644 --- a/mockdriver/src/main/java/org/jaydebeapi/mockdriver/MockConnection.java +++ b/mockdriver/src/main/java/org/jaydebeapi/mockdriver/MockConnection.java @@ -70,8 +70,24 @@ public abstract class MockConnection implements Connection { Mockito.when(mockResultSet.getMetaData()).thenReturn(mockMetaData); Mockito.when(mockMetaData.getColumnCount()).thenReturn(1); - BigDecimal bd = BigDecimal.valueOf(value, scale); - Mockito.when(mockResultSet.getObject(1)).thenReturn(bd); + BigDecimal columnValue = BigDecimal.valueOf(value, scale); + Mockito.when(mockResultSet.getObject(1)).thenReturn(columnValue); + Mockito.when(mockMetaData.getColumnType(1)).thenReturn(Types.DECIMAL); + Mockito.when(this.prepareStatement(Mockito.anyString())).thenReturn(mockPreparedStatement); + } + + public final void mockFloatDecimalResult(float value) throws SQLException { + PreparedStatement mockPreparedStatement = Mockito.mock(PreparedStatement.class); + Mockito.when(mockPreparedStatement.execute()).thenReturn(true); + mockResultSet = Mockito.mock(ResultSet.class, "ResultSet(for other)"); + 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); + + Float columnValue = Float.valueOf(value); + Mockito.when(mockResultSet.getObject(1)).thenReturn(value); Mockito.when(mockMetaData.getColumnType(1)).thenReturn(Types.DECIMAL); Mockito.when(this.prepareStatement(Mockito.anyString())).thenReturn(mockPreparedStatement); } diff --git a/test/test_mock.py b/test/test_mock.py index 8631713..766561c 100644 --- a/test/test_mock.py +++ b/test/test_mock.py @@ -65,11 +65,18 @@ class MockTest(unittest.TestCase): self.assertEquals(str(result[0]), "12345") def test_decimal_places(self): - self.conn.jconn.mockBigDecimalResult(12345, 2) + self.conn.jconn.mockBigDecimalResult(12345, 1) cursor = self.conn.cursor() cursor.execute("dummy stmt") result = cursor.fetchone() - self.assertEquals(str(result[0]), "123.45") + self.assertEquals(str(result[0]), "1234.5") + + def test_float_decimal(self): + self.conn.jconn.mockFloatDecimalResult(1234.5) + cursor = self.conn.cursor() + cursor.execute("dummy stmt") + result = cursor.fetchone() + self.assertEquals(str(result[0]), "1234.5") def test_sql_exception_on_execute(self): self.conn.jconn.mockExceptionOnExecute("java.sql.SQLException", "expected")