/sigmah/src/test/java/org/sigmah/server/report/generator/TableGeneratorTest.java

http://sigma-h.googlecode.com/ · Java · 141 lines · 106 code · 28 blank · 7 comment · 0 complexity · dfa38231c938a96b14b8bff91019259f MD5 · raw file

  1. /*
  2. * All Sigmah code is released under the GNU General Public License v3
  3. * See COPYRIGHT.txt and LICENSE.txt.
  4. */
  5. package org.sigmah.server.report.generator;
  6. import junit.framework.Assert;
  7. import org.junit.Before;
  8. import org.junit.Test;
  9. import org.sigmah.server.dao.IndicatorDAO;
  10. import org.sigmah.server.dao.PivotDAO;
  11. import org.sigmah.server.report.generator.map.MockBaseMapDAO;
  12. import org.sigmah.shared.dao.*;
  13. import org.sigmah.shared.domain.User;
  14. import org.sigmah.shared.report.content.BubbleMapMarker;
  15. import org.sigmah.shared.report.content.MapContent;
  16. import org.sigmah.shared.report.content.TableData;
  17. import org.sigmah.shared.report.model.BubbleMapLayer;
  18. import org.sigmah.shared.report.model.MapElement;
  19. import org.sigmah.shared.report.model.TableColumn;
  20. import org.sigmah.shared.report.model.TableElement;
  21. import java.sql.ResultSet;
  22. import java.sql.SQLException;
  23. import java.util.Collections;
  24. import java.util.List;
  25. import java.util.Map;
  26. import static org.easymock.EasyMock.*;
  27. /**
  28. * @author Alex Bertram
  29. */
  30. public class TableGeneratorTest {
  31. private User user;
  32. @Before
  33. public void setUp() {
  34. user = new User();
  35. user.setName("Alex");
  36. user.setEmail("akbertra@mgail.com");
  37. user.setLocale("fr");
  38. }
  39. @Test
  40. public void testTableGenerator() {
  41. TableElement table = new TableElement();
  42. table.addColumn(new TableColumn("Location", "location.name"));
  43. TableGenerator gtor = new TableGenerator(createPivotDAO(), new MockSiteTableDAO(), createIndicator(), null);
  44. gtor.generate(user, table, null, null);
  45. Assert.assertNotNull("content is set", table.getContent());
  46. TableData data = table.getContent().getData();
  47. List<TableData.Row> rows = data.getRows();
  48. Assert.assertEquals("row count", 1, rows.size());
  49. TableData.Row row = rows.get(0);
  50. Assert.assertEquals("column data", "tampa bay", row.values[0]);
  51. }
  52. @Test
  53. public void testMap() {
  54. TableElement table = new TableElement();
  55. table.addColumn(new TableColumn("Index", "map"));
  56. table.addColumn(new TableColumn("Site", "location.name"));
  57. MapElement map = new MapElement();
  58. map.setBaseMapId("map1");
  59. BubbleMapLayer layer = new BubbleMapLayer();
  60. layer.setNumbering(BubbleMapLayer.NumberingType.ArabicNumerals);
  61. map.addLayer(layer);
  62. table.setMap(map);
  63. TableGenerator gtor = new TableGenerator(createPivotDAO(), new MockSiteTableDAO(), createIndicator(),
  64. new MapGenerator(createPivotDAO(), new MockSiteTableDAO(), new MockBaseMapDAO()));
  65. gtor.generate(user, table, null, null);
  66. MapContent mapContent = map.getContent();
  67. Assert.assertNotNull("map content", mapContent);
  68. Assert.assertEquals("marker count", 1, mapContent.getMarkers().size());
  69. Assert.assertEquals("label on marker", "1", ((BubbleMapMarker) mapContent.getMarkers().get(0)).getLabel());
  70. Map<Integer, String> siteLabels = mapContent.siteLabelMap();
  71. Assert.assertEquals("site id in map", "1", siteLabels.get(1));
  72. TableData.Row row = table.getContent().getData().getRows().get(0);
  73. Assert.assertEquals("label on row", "1", row.values[0]);
  74. }
  75. private IndicatorDAO createIndicator() {
  76. IndicatorDAO indicatorDAO = createNiceMock(IndicatorDAO.class);
  77. replay(indicatorDAO);
  78. return indicatorDAO;
  79. }
  80. private PivotDAO createPivotDAO() {
  81. PivotDAO pivotDAO = createNiceMock(PivotDAO.class);
  82. replay(pivotDAO);
  83. return pivotDAO;
  84. }
  85. private class MockSiteTableDAO implements SiteTableDAO {
  86. @Override
  87. public <RowT> List<RowT> query(User user, Filter filter, List<SiteOrder> orderings, SiteProjectionBinder<RowT> binder, int retrieve, int offset, int limit) {
  88. try {
  89. final ResultSet rs = createNiceMock(ResultSet.class);
  90. expect(rs.getInt(SiteTableColumn.id.index())).andReturn(1);
  91. expect(rs.getObject(SiteTableColumn.id.index())).andReturn(1);
  92. expect(rs.getObject(SiteTableColumn.location_name.index())).andReturn("tampa bay");
  93. expect(rs.getDouble(SiteTableColumn.x.index())).andReturn(28.4);
  94. expect(rs.getObject(SiteTableColumn.x.index())).andReturn(28.4);
  95. expect(rs.getDouble(SiteTableColumn.y.index())).andReturn(1.2);
  96. expect(rs.getObject(SiteTableColumn.y.index())).andReturn(1.2);
  97. expect(rs.wasNull()).andReturn(false).anyTimes();
  98. replay(rs);
  99. return Collections.singletonList(binder.newInstance(new String[0], rs));
  100. } catch (SQLException e) {
  101. throw new AssertionError(e);
  102. }
  103. }
  104. @Override
  105. public int queryCount(User user, Filter filter) {
  106. return 0;
  107. }
  108. @Override
  109. public int queryPageNumber(User user, Filter filter, List<SiteOrder> orderings, int pageSize, int siteId) {
  110. return 0;
  111. }
  112. }
  113. }