@Test public void testQueryKeyHolderNoKeys() throws Exception { DatabaseConnection databaseConnection = connectionSource.getReadOnlyConnection(FOO_TABLE_NAME); try { createDao(Foo.class, true); GeneratedKeyHolder keyHolder = createMock(GeneratedKeyHolder.class); keyHolder.addKey(0L); replay(keyHolder); databaseConnection.insert("insert into foo (id) values (2)", new Object[0], new FieldType[0], keyHolder); verify(keyHolder); } finally { connectionSource.releaseConnection(databaseConnection); } }
@Test public void testIdColumnInteger() throws Exception { // NOTE: this doesn't seem to generate an INTEGER type, oh well DatabaseConnection databaseConnection = connectionSource.getReadOnlyConnection(FOOINT_TABLE_NAME); try { createDao(FooInt.class, true); GeneratedKeyHolder keyHolder = createMock(GeneratedKeyHolder.class); keyHolder.addKey(1L); replay(keyHolder); databaseConnection.insert("insert into fooint (stuff) values (2)", new Object[0], new FieldType[0], keyHolder); verify(keyHolder); } finally { connectionSource.releaseConnection(databaseConnection); } }
@Test public void testIdColumnInvalid() throws Exception { // NOTE: this doesn't seem to generate an INTEGER type, oh well DatabaseConnection databaseConnection = connectionSource.getReadOnlyConnection(FOOINT_TABLE_NAME); try { createDao(FooInt.class, true); GeneratedKeyHolder keyHolder = createMock(GeneratedKeyHolder.class); keyHolder.addKey(1L); replay(keyHolder); databaseConnection.insert("insert into fooint (stuff) values ('zipper')", new Object[0], new FieldType[0], keyHolder); verify(keyHolder); } finally { connectionSource.releaseConnection(databaseConnection); } }
@Test public void testIdColumnChangedFromStringToNumber() throws Exception { // NOTE: trying to get the database to return a string as a result but could not figure it out DatabaseConnection databaseConnection = connectionSource.getReadOnlyConnection(FOOINT_TABLE_NAME); try { createDao(FooString.class, true); GeneratedKeyHolder keyHolder = createMock(GeneratedKeyHolder.class); keyHolder.addKey(0L); replay(keyHolder); databaseConnection.insert("insert into fooint (id, stuff) values ('12', 'zipper')", new Object[0], new FieldType[0], keyHolder); verify(keyHolder); } finally { connectionSource.releaseConnection(databaseConnection); } }
@Test(expected = SQLException.class) public void testQueryForLongNoResult() throws Exception { DatabaseConnection databaseConnection = connectionSource.getReadOnlyConnection(FOO_TABLE_NAME); try { createDao(Foo.class, true); databaseConnection.queryForLong("select id from foo"); } finally { connectionSource.releaseConnection(databaseConnection); } }
@Test public void testQueryForLong() throws Exception { DatabaseConnection databaseConnection = connectionSource.getReadOnlyConnection(FOO_TABLE_NAME); try { Dao<Foo, Object> dao = createDao(Foo.class, true); Foo foo = new Foo(); long id = 21321321L; foo.id = id; assertEquals(1, dao.create(foo)); assertEquals(id, databaseConnection.queryForLong("select id from foo")); } finally { connectionSource.releaseConnection(databaseConnection); } }
@Test(expected = SQLException.class) public void testQueryForLongTooManyResults() throws Exception { DatabaseConnection databaseConnection = connectionSource.getReadOnlyConnection(FOO_TABLE_NAME); try { Dao<Foo, Object> dao = createDao(Foo.class, true); Foo foo = new Foo(); long id = 21321321L; foo.id = id; // insert twice assertEquals(1, dao.create(foo)); assertEquals(1, dao.create(foo)); databaseConnection.queryForLong("select id from foo"); } finally { connectionSource.releaseConnection(databaseConnection); } }