/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.portal.datasource.xml; import java.net.URL; import java.util.List; import java.util.Map; import org.jdom.Document; import org.jdom.input.SAXBuilder; import org.junit.Test; import static org.junit.Assert.*; public class DataSourceXmlFactoryTest { @Test public void testParse_empty1() throws Exception { final DataSourcesElement result = parse( "empty1" ); assertNotNull( result ); assertNull( result.getResultElement() ); assertTrue( result.getList().isEmpty() ); } @Test public void testParse_empty2() throws Exception { final DataSourcesElement result = parse( "empty2" ); assertNotNull( result ); assertEquals( "dummy", result.getResultElement() ); assertTrue( result.getList().isEmpty() ); } @Test public void testParse_simple1() throws Exception { final DataSourcesElement result = parse( "simple1" ); assertNotNull( result ); final List<DataSourceElement> list = result.getList(); assertNotNull( list ); assertEquals( 1, list.size() ); final DataSourceElement element = list.get( 0 ); assertNotNull( element ); assertEquals( "dummy", element.getName() ); assertEquals( true, element.isCache() ); assertNull( element.getResultElement() ); assertNull( element.getCondition() ); assertTrue( element.getParameters().isEmpty() ); } @Test public void testParse_simple2() throws Exception { final DataSourcesElement result = parse( "simple2" ); assertNotNull( result ); final List<DataSourceElement> list = result.getList(); assertNotNull( list ); assertEquals( 1, list.size() ); final DataSourceElement element = list.get( 0 ); assertNotNull( element ); assertEquals( "dummy", element.getName() ); assertEquals( true, element.isCache() ); assertEquals( "result", element.getResultElement() ); assertEquals( "true()", element.getCondition() ); assertTrue( element.getParameters().isEmpty() ); } @Test public void testParse_params1() throws Exception { final DataSourcesElement result = parse( "params1" ); final DataSourceElement element = result.getList().get( 0 ); assertNotNull( element ); assertEquals( "dummy", element.getName() ); final Map<String, String> params = element.getParameters(); assertNotNull( params ); assertEquals( 1, params.size() ); assertEquals( "one", params.get( "param1" ) ); } @Test public void testParse_params2() throws Exception { final DataSourcesElement result = parse( "params2" ); final DataSourceElement element = result.getList().get( 0 ); assertNotNull( element ); assertEquals( "dummy", element.getName() ); final Map<String, String> params = element.getParameters(); assertNotNull( params ); assertEquals( 2, params.size() ); assertEquals( "one", params.get( "param1" ) ); assertEquals( "<custom><xml /></custom>", params.get( "param2" ) ); } @Test public void testParse_multiple() throws Exception { final DataSourcesElement result = parse( "multiple" ); final List<DataSourceElement> list = result.getList(); assertNotNull( list ); assertEquals( 3, list.size() ); final DataSourceElement element1 = list.get( 0 ); assertNotNull( element1 ); assertEquals( "dummy1", element1.getName() ); assertTrue( element1.getParameters().isEmpty() ); final DataSourceElement element2 = list.get( 1 ); assertNotNull( element2 ); assertEquals( "dummy2", element2.getName() ); assertNotNull( element2.getParameters() ); assertEquals( 1, element2.getParameters().size() ); final DataSourceElement element3 = list.get( 2 ); assertNotNull( element3 ); assertEquals( "dummy3", element3.getName() ); assertNotNull( element3.getParameters() ); assertEquals( 2, element3.getParameters().size() ); } @Test public void testParse_encoded() throws Exception { final DataSourcesElement result = parse( "encoded" ); final List<DataSourceElement> list = result.getList(); assertNotNull( list ); assertEquals( 1, list.size() ); final DataSourceElement element = list.get( 0 ); assertNotNull( element ); assertEquals( "dummy", element.getName() ); final Map<String, String> params = element.getParameters(); assertNotNull( params ); assertEquals( 1, params.size() ); assertEquals( "age >= 33", params.get( "param1" ) ); } private DataSourcesElement parse( final String name ) throws Exception { return new DataSourceXmlFactory().create( readDoc( name + ".xml" ).getRootElement() ); } private Document readDoc( final String name ) throws Exception { final URL url = getClass().getResource( name ); assertNotNull( "Document [" + name + "] not found", url ); final SAXBuilder builder = new SAXBuilder(); return builder.build( url ); } }