Package com.javaeye.jert.domain.test

Source Code of com.javaeye.jert.domain.test.ReportInstanceTest

package com.javaeye.jert.domain.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

import org.dbunit.DatabaseTestCase;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.XmlDataSet;

import com.javaeye.jert.domain.Database;
import com.javaeye.jert.domain.ReportDefinition;
import com.javaeye.jert.domain.ReportInstance;
import com.javaeye.jert.domain.ResultSetOutput;
import com.javaeye.jert.domain.connection.DBCPConnectionManager;
import com.javaeye.jert.domain.query.QueryBuilder;
import com.javaeye.jert.domain.query.QueryParameter;

/**
* @author Quake Wang
* @since 2004-12-22
* @version $Revision: 1.6 $
*/
public class ReportInstanceTest extends DatabaseTestCase {
    private static final String CREATE_TABLE = "DROP TABLE USER IF EXISTS; CREATE TABLE USER (USER_NAME varchar(255), EMAIL varchar(255));";
   
    public void testGenerateStaticQueryReport() {
        ReportDefinition rd = getReportDefinition();

        ReportInstance instance = new ReportInstance(2);
        instance.setReportDefinition(rd);
        instance.generateItems(null);
        ResultSetOutput output = instance.getResultSetOutput();
        assertEquals(5, instance.getTotalCount());
        assertEquals(2, output.getColumns().size());
       
        assertEquals("USER_NAME", output.getHeaderNames()[0]);
        assertEquals("EMAIL", output.getHeaderNames()[1]);
       
        Object[] user1 = (Object[]) output.getColumns().get(0);
        assertEquals("user1", user1[0]);
        assertEquals("user1@javaeye.com", user1[1]);

        Object[] user2 = (Object[]) output.getColumns().get(1);
        assertEquals("user2", user2[0]);
        assertEquals("user2@javaeye.com", user2[1]);
       

    }

    public void testGenerateReportStartIndex() {
        ReportDefinition rd = getReportDefinition();
       
        ReportInstance instance = new ReportInstance(2);
        instance.setReportDefinition(rd);
        instance.setStartIndex(2);
        instance.generateItems(null);
       
        ResultSetOutput output = instance.getResultSetOutput();
        assertEquals(5, instance.getTotalCount());
        assertEquals(2, output.getColumns().size());
        Object[] user3 = (Object[]) output.getColumns().get(0);
        assertEquals("user3", user3[0]);
        assertEquals("user3@javaeye.com", user3[1]);
    }
   
   
    private ReportDefinition getReportDefinition() {
        Database db = getDatabase();

        ReportDefinition rd = new ReportDefinition();
        rd.setDatabase(db);
        rd.setSql("select * from user order by user_name");
        rd.setQueryType(QueryBuilder.QUERY_TYPE_STATIC);
        return rd;
    }   
   
    public void testGenerateSimpleParameterQueryReport() {
        Database db = getDatabase();
        ReportDefinition rd = new ReportDefinition();
        rd.setDatabase(db);
        rd.setSql("select * from user where user_name = #name#");
        rd.setQueryType(QueryBuilder.QUERY_TYPE_SIMPLE_PARAMETER);
        rd.setupDefaultParameterDefinition();
       
        ReportInstance instance = new ReportInstance();
        instance.setReportDefinition(rd);
        QueryParameter[] parameters = rd.getDefaultQueryParameters();
        parameters[0].setValue("user1");
       
        instance.generateItems(parameters);
        assertEquals(1, instance.getTotalCount());
       
        ResultSetOutput output = instance.getResultSetOutput();
        Object[] user1 = (Object[]) output.getColumns().get(0);
        assertEquals("user1", user1[0]);
        assertEquals("user1@javaeye.com", user1[1]);       
    }
   
    public void testGenerateDynamicParameterQueryReport() {
        Database db = getDatabase();
        ReportDefinition rd = new ReportDefinition();
        rd.setDatabase(db);
        rd.setSql("<plain>select * from user where 1 = 1</plain>"
                + "<dynamic type=\"isNotEmpty\" append-before=\"and user_name = \" parameter-name=\"name\"/>"
                + "<dynamic type=\"isNotEmpty\" append-before=\"and email = \" parameter-name=\"email\"/>");
        rd.setQueryType(QueryBuilder.QUERY_TYPE_DYNAMIC_PARAMETER);
        rd.setupDefaultParameterDefinition();

        ReportInstance instance = new ReportInstance();
        instance.setReportDefinition(rd);
        QueryParameter[] parameters = rd.getDefaultQueryParameters();
        instance.generateItems(parameters);
        assertEquals(5, instance.getTotalCount());

        parameters = rd.getDefaultQueryParameters();
        parameters[0].setValue("user1");
        instance.generateItems(parameters);
        assertEquals(1, instance.getTotalCount());
       
        parameters = rd.getDefaultQueryParameters();
        parameters[0].setValue("user1");
        parameters[1].setValue("user2@javaeye.com");
        instance.generateItems(parameters);
        assertEquals(0, instance.getTotalCount());       
    }
   
    private Database getDatabase() {
        Database db = new Database();
        db.setDriver("org.hsqldb.jdbcDriver");
        db.setUrl("jdbc:hsqldb:mem:reportdefinition_test");
        db.setUsername("sa");
        db.setPassword("");

        db.setConnectionManager(new DBCPConnectionManager());
        return db;
    }

    protected IDatabaseConnection getConnection() throws Exception {
        Class driverClass = Class.forName("org.hsqldb.jdbcDriver");
        Connection jdbcConnection = DriverManager.getConnection("jdbc:hsqldb:mem:reportdefinition_test", "sa", "");
        Statement statement = jdbcConnection.createStatement();
        statement.executeUpdate(CREATE_TABLE);
        statement.close();
        return new DatabaseConnection(jdbcConnection);
    }

    protected IDataSet getDataSet() throws Exception {
        return new XmlDataSet(Thread.currentThread().getContextClassLoader().getResourceAsStream("com/javaeye/jert/domain/test/dataset.xml"));
    }
}
TOP

Related Classes of com.javaeye.jert.domain.test.ReportInstanceTest

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.