Package org.sql2o

Source Code of org.sql2o.ConnectionTest$MyException

package org.sql2o;

import junit.framework.TestCase;
import org.sql2o.quirks.NoQuirks;

import javax.sql.DataSource;

import java.sql.*;
import java.sql.Connection;

import static org.mockito.Mockito.*;

/**
* User: dimzon
* Date: 4/29/14
* Time: 10:05 PM
*/
public class ConnectionTest extends TestCase {



    public void test_createQueryWithParams() throws Throwable {
        DataSource dataSource = mock(DataSource.class);
        Connection jdbcConnection = mock(Connection.class);
        when(jdbcConnection.isClosed()).thenReturn(false);
        when(dataSource.getConnection()).thenReturn(jdbcConnection);
        PreparedStatement ps = mock(PreparedStatement.class);
        when(jdbcConnection.prepareStatement(anyString())).thenReturn(ps);

        Sql2o sql2o = new Sql2o(dataSource,new NoQuirks(){
            @Override
            public boolean returnGeneratedKeysByDefault() {
                return false;
            }
        });
        org.sql2o.Connection cn = new org.sql2o.Connection(sql2o,false);
        Query query = cn.createQueryWithParams("select :p1 name, :p2 age",
                "Dmitry Alexandrov", 35);
        verify(dataSource,times(1)).getConnection();
        verify(jdbcConnection).isClosed();
        verify(jdbcConnection,times(1)).prepareStatement("select ? name, ? age");
        verify(ps,times(1)).setString(1,"Dmitry Alexandrov");
        verify(ps,times(1)).setInt(2,35);
        // check statement still alive
        verify(ps,never()).close();

    }

    public class MyException extends RuntimeException{}

    public void test_createQueryWithParamsThrowingException() throws Throwable {
        DataSource dataSource = mock(DataSource.class);
        Connection jdbcConnection = mock(Connection.class);
        when(jdbcConnection.isClosed()).thenReturn(false);
        when(dataSource.getConnection()).thenReturn(jdbcConnection);
        PreparedStatement ps = mock(PreparedStatement.class);
        doThrow(MyException.class).when(ps).setInt(anyInt(),anyInt());
        when(jdbcConnection.prepareStatement(anyString())).thenReturn(ps);

        Sql2o sql2o = new Sql2o(dataSource,new NoQuirks(){
            @Override
            public boolean returnGeneratedKeysByDefault() {
                return false;
            }
        });
        org.sql2o.Connection cn = new org.sql2o.Connection(sql2o,false);
        try{
            Query query = cn.createQueryWithParams("select :p1 name, :p2 age",
                    "Dmitry Alexandrov", 35);
            fail("exception not thrown");
        } catch (MyException ex){
            // as designed
        }
        verify(dataSource,times(1)).getConnection();
        verify(jdbcConnection).isClosed();
        verify(jdbcConnection,times(1)).prepareStatement("select ? name, ? age");
        verify(ps,times(1)).setString(1,"Dmitry Alexandrov");
        verify(ps,times(1)).setInt(2,35);
        // check statement was closed
        verify(ps,times(1)).close();
    }
}
TOP

Related Classes of org.sql2o.ConnectionTest$MyException

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.