package com.javaeye.jert.service.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.javaeye.jert.domain.Database;
import com.javaeye.jert.domain.ParameterDefinition;
import com.javaeye.jert.domain.ReportDefinition;
import com.javaeye.jert.domain.query.QueryBuilder;
import com.javaeye.jert.service.DatabaseService;
import com.javaeye.jert.service.ReportDefinitionService;
/**
* @author Quake Wang
* @since 2004-12-22
* @version $Revision: 1.5 $
*/
public class ReportDefinitionServiceTest extends TestService {
private ReportDefinitionService service;
protected ApplicationContext getContext() {
return new ClassPathXmlApplicationContext("com/javaeye/jert/service/test/ReportDefinitionServiceTest.xml");
}
protected void setUp() throws Exception {
super.setUp();
service = (ReportDefinitionService) context.getBean("reportDefinitionService");
}
public void testCRUD() {
Database db = new Database();
((DatabaseService) context.getBean("databaseService")).createDatabase(db);
ReportDefinition rd = new ReportDefinition();
rd.setDatabase(db);
rd.setName("test report one");
rd.setSql("select * from user");
rd.setQueryType(QueryBuilder.QUERY_TYPE_STATIC);
service.createReportDefinition(rd);
ReportDefinition stored = service.getReportDefinition(rd.getId());
assertEquals("test report one", stored.getName());
assertEquals("select * from user", stored.getSql());
stored.setName("test report one new");
service.updateReportDefinition(stored);
stored = service.getReportDefinition(rd.getId());
assertEquals("test report one new", stored.getName());
service.deleteReportDefinition(stored);
assertNull(service.getReportDefinition(rd.getId()));
}
public void testDefaultParameterDefinition() {
Database db = new Database();
((DatabaseService) context.getBean("databaseService")).createDatabase(db);
ReportDefinition rd = new ReportDefinition();
rd.setDatabase(db);
rd.setName("test report one");
rd.setSql("select * from user where name = #name#");
rd.setQueryType(QueryBuilder.QUERY_TYPE_SIMPLE_PARAMETER);
service.createReportDefinition(rd);
ReportDefinition stored = service.getReportDefinition(rd.getId());
assertEquals(1, stored.getParameterDefinitions().size());
assertEquals("name", ((ParameterDefinition) stored.getParameterDefinitions().get(0)).getName());
rd.setSql("select * from user where age > #age#");
service.updateReportDefinition(stored);
assertEquals(1, stored.getParameterDefinitions().size());
assertEquals("age", ((ParameterDefinition) stored.getParameterDefinitions().get(0)).getName());
}
}