/sigmah/src/test/java/org/sigmah/client/page/entry/editor/AdminFieldSetTest.java

http://sigma-h.googlecode.com/ · Java · 266 lines · 127 code · 89 blank · 50 comment · 0 complexity · 99f2d3e9b9e97cb22cfcc9cebd6f0de1 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.client.page.entry.editor;
  6. import com.extjs.gxt.ui.client.store.ListStore;
  7. import org.junit.Assert;
  8. import org.junit.Test;
  9. import org.sigmah.client.mock.DispatcherStub;
  10. import org.sigmah.client.mock.DummyData;
  11. import org.sigmah.client.page.entry.editor.mock.MockAdminFieldSet;
  12. import org.sigmah.shared.command.GetAdminEntities;
  13. import org.sigmah.shared.dto.ActivityDTO;
  14. import org.sigmah.shared.dto.AdminEntityDTO;
  15. import org.sigmah.shared.dto.SchemaDTO;
  16. import org.sigmah.shared.dto.SiteDTO;
  17. import static org.easymock.EasyMock.*;
  18. /**
  19. * @author Alex Bertram (akbertram@gmail.com)
  20. */
  21. public class AdminFieldSetTest {
  22. @Test
  23. public void testSetSite() throws Exception {
  24. // Test data
  25. SchemaDTO schema = DummyData.PEAR();
  26. ActivityDTO nfi = schema.getActivityById(91);
  27. // Collaborator: command service
  28. DispatcherStub service = new DispatcherStub();
  29. service.setResult(new GetAdminEntities(1), DummyData.getProvinces());
  30. service.setResult(new GetAdminEntities(2, 100), DummyData.getTerritoires(100));
  31. // Collaborator: view
  32. MockAdminFieldSet fieldSet = new MockAdminFieldSet();
  33. // CLASS Under Test
  34. AdminFieldSetPresenter presenter = new AdminFieldSetPresenter(service, nfi, fieldSet);
  35. // Verify that setting a sites results in the correct values being
  36. // sent to the view, and that the correct combos are enabled
  37. presenter.setSite(DummyData.PEAR_Sites().get(4));
  38. Assert.assertEquals(101, fieldSet.getValue(2).getId());
  39. Assert.assertTrue("province combo is enabled", fieldSet.getEnabled(1));
  40. Assert.assertTrue("territory combo is enabled", fieldSet.getEnabled(2));
  41. // VERIFY that the correct command has been set for combos
  42. ListStore<AdminEntityDTO> store = fieldSet.getStore(2);
  43. store.getLoader().load();
  44. Assert.assertEquals("territory store count", 2, store.getCount());
  45. }
  46. @Test
  47. public void testInitBlank() throws Exception {
  48. // TEST data
  49. SchemaDTO schema = DummyData.PEAR();
  50. ActivityDTO nfi = schema.getActivityById(91);
  51. // Collaborator: Command Service
  52. DispatcherStub service = new DispatcherStub();
  53. // Collaborator: View
  54. MockAdminFieldSet fieldSet = new MockAdminFieldSet();
  55. // CLASS under TEST
  56. AdminFieldSetPresenter presenter = new AdminFieldSetPresenter(service, nfi.getDatabase().getCountry(), fieldSet);
  57. presenter.setSite(new SiteDTO());
  58. // verify that the combos are properly enabled
  59. Assert.assertTrue("province combo is enabled", fieldSet.getEnabled(1));
  60. Assert.assertFalse("territory combo is disabled", fieldSet.getEnabled(2));
  61. Assert.assertFalse("secteur combo is disabled", fieldSet.getEnabled(3));
  62. }
  63. @Test
  64. public void testCascade() throws Exception {
  65. // Test Data
  66. SchemaDTO schema = DummyData.PEAR();
  67. ActivityDTO nfi = schema.getActivityById(91);
  68. // Collaborator: Command Service
  69. DispatcherStub service = new DispatcherStub();
  70. service.setResult(new GetAdminEntities(1), DummyData.getProvinces());
  71. service.setResult(new GetAdminEntities(2, 100), DummyData.getTerritoires(100));
  72. // Collaborator: view
  73. MockAdminFieldSet fieldSet = new MockAdminFieldSet();
  74. // CLASS under TEST
  75. AdminFieldSetPresenter presenter = new AdminFieldSetPresenter(service, nfi, fieldSet);
  76. // VERIFY that root level loader is properly configured
  77. presenter.setSite(DummyData.PEAR_Sites().get(5));
  78. ListStore<AdminEntityDTO> store = fieldSet.getStore(1);
  79. store.getLoader().load();
  80. Assert.assertEquals("province store count", 2, store.getCount());
  81. // VERIFY that a change to the province reconfigures the territory loader
  82. presenter.onSelectionChanged(1, DummyData.getProvinces().getData().get(0));
  83. store = fieldSet.getStore(2);
  84. store.getLoader().load();
  85. Assert.assertEquals("territory store count", 2, store.getCount());
  86. Assert.assertEquals("Beni", store.getAt(0).getName());
  87. }
  88. @Test
  89. public void testCascadeReplace() throws Exception {
  90. // Test data
  91. SchemaDTO schema = DummyData.PEAR();
  92. ActivityDTO nfi = schema.getActivityById(91);
  93. // Collaborator: command service
  94. DispatcherStub service = new DispatcherStub();
  95. service.setResult(new GetAdminEntities(1), DummyData.getProvinces());
  96. service.setResult(new GetAdminEntities(2, 200), DummyData.getTerritoires(200));
  97. // Collaborator: view
  98. MockAdminFieldSet fieldSet = new MockAdminFieldSet();
  99. // CLASS Under Test
  100. AdminFieldSetPresenter presenter = new AdminFieldSetPresenter(service, nfi, fieldSet);
  101. // SETUP selection
  102. presenter.setSite(DummyData.PEAR_Sites().get(4));
  103. // VERIFY that change to province correctly cascades
  104. presenter.onSelectionChanged(1, DummyData.getProvinces().getData().get(1));
  105. Assert.assertNull("territory is null", fieldSet.getValue(2));
  106. Assert.assertNull("sector is null", fieldSet.getValue(3));
  107. Assert.assertFalse("sector is disabled", fieldSet.getEnabled(3));
  108. ListStore<AdminEntityDTO> store = fieldSet.getStore(2);
  109. store.getLoader().load();
  110. Assert.assertEquals("territory store count", 2, store.getCount());
  111. Assert.assertEquals("correct territory list", "Shabunda", store.getAt(0).getName());
  112. }
  113. @Test
  114. public void testBounds() {
  115. // Test data
  116. SchemaDTO schema = DummyData.PEAR();
  117. ActivityDTO nfi = schema.getActivityById(91);
  118. // Collaborator: command service
  119. DispatcherStub service = new DispatcherStub();
  120. service.setResult(new GetAdminEntities(1), DummyData.getProvinces());
  121. service.setResult(new GetAdminEntities(2, 200), DummyData.getTerritoires(200));
  122. // Collaborator: view
  123. MockAdminFieldSet fieldSet = new MockAdminFieldSet();
  124. // CLASS Under Test
  125. AdminFieldSetPresenter presenter = new AdminFieldSetPresenter(service, nfi, fieldSet);
  126. // SETUP selection
  127. presenter.setSite(DummyData.PEAR_Sites().get(4));
  128. // VERIFY bounds are correct
  129. Assert.assertEquals("bounds", DummyData.Beni.getBounds(), presenter.getBounds());
  130. Assert.assertEquals("bounds name", DummyData.Beni.getName(), presenter.getBoundsName());
  131. }
  132. @Test
  133. public void testBoundsChange() {
  134. // Test data
  135. SchemaDTO schema = DummyData.PEAR();
  136. ActivityDTO nfi = schema.getActivityById(91);
  137. // Collaborator: command service
  138. DispatcherStub service = new DispatcherStub();
  139. service.setResult(new GetAdminEntities(1), DummyData.getProvinces());
  140. service.setResult(new GetAdminEntities(2, 200), DummyData.getTerritoires(200));
  141. // Collaborator: view
  142. MockAdminFieldSet fieldSet = new MockAdminFieldSet();
  143. // CLASS Under Test
  144. AdminFieldSetPresenter presenter = new AdminFieldSetPresenter(service, nfi, fieldSet);
  145. // SETUP selection
  146. presenter.setSite(DummyData.PEAR_Sites().get(4));
  147. // VERIFY that a change to admin level triggers a bounds changed call
  148. AdminFieldSetPresenter.Listener listener = createMock(AdminFieldSetPresenter.Listener.class);
  149. listener.onBoundsChanged(eq(DummyData.Masisi.getName()), eq(DummyData.Masisi.getBounds()));
  150. listener.onModified();
  151. replay(listener);
  152. presenter.setListener(listener);
  153. fieldSet.setValueAndFire(2, DummyData.Masisi);
  154. verify(listener);
  155. }
  156. @Test
  157. public void testDirtyChecking() throws Exception {
  158. // Test data
  159. SchemaDTO schema = DummyData.PEAR();
  160. ActivityDTO nfi = schema.getActivityById(91);
  161. // Collaborator: command service
  162. DispatcherStub service = new DispatcherStub();
  163. // Collaborator: view
  164. MockAdminFieldSet fieldSet = new MockAdminFieldSet();
  165. // CLASS Under Test
  166. AdminFieldSetPresenter presenter = new AdminFieldSetPresenter(service, nfi, fieldSet);
  167. // VERIFY isDirty returns false
  168. presenter.setSite(DummyData.PEAR_Sites().get(4));
  169. Assert.assertFalse(presenter.isDirty());
  170. // VERIFY isDirty returns true after a change
  171. fieldSet.setValueAndFire(3, new AdminEntityDTO(3, 999, DummyData.Beni.getId(), "Ruizi"));
  172. Assert.assertTrue(presenter.isDirty());
  173. // VERIFY isDirty returns false after we change back
  174. fieldSet.setValueAndFire(3, DummyData.Watalina);
  175. Assert.assertFalse(presenter.isDirty());
  176. }
  177. }