/sigmah/src/test/java/org/sigmah/server/sync/SiteUpdateBuilderTest.java

http://sigma-h.googlecode.com/ · Java · 76 lines · 55 code · 15 blank · 6 comment · 0 complexity · 6bb5c84a9c45fa5346873ad9ed5d488b 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.sync;
  6. import com.google.inject.Inject;
  7. import com.google.inject.Provider;
  8. import org.json.JSONException;
  9. import org.junit.Test;
  10. import org.junit.runner.RunWith;
  11. import org.sigmah.server.dao.OnDataSet;
  12. import org.sigmah.server.util.logging.LoggingModule;
  13. import org.sigmah.shared.command.GetSyncRegionUpdates;
  14. import org.sigmah.shared.command.result.SyncRegionUpdate;
  15. import org.sigmah.shared.domain.Site;
  16. import org.sigmah.shared.domain.User;
  17. import org.sigmah.test.InjectionSupport;
  18. import org.sigmah.test.MockHibernateModule;
  19. import org.sigmah.test.Modules;
  20. import javax.persistence.EntityManager;
  21. import javax.persistence.EntityManagerFactory;
  22. import java.util.Date;
  23. import static org.hamcrest.CoreMatchers.*;
  24. import static org.junit.Assert.assertThat;
  25. import static org.junit.matchers.JUnitMatchers.containsString;
  26. @RunWith(InjectionSupport.class)
  27. @Modules({
  28. MockHibernateModule.class,
  29. LoggingModule.class
  30. })
  31. public class SiteUpdateBuilderTest {
  32. @Inject
  33. private Provider<SiteUpdateBuilder> builder;
  34. @Inject
  35. private EntityManagerFactory emf;
  36. @Test
  37. @OnDataSet("/dbunit/sites-simple1.db.xml")
  38. public void subsequentCallsAreUpToDate() throws JSONException {
  39. User user = new User();
  40. user.setId(1);
  41. // update one of the sites so we have a realistic nano value type stamp
  42. EntityManager em = emf.createEntityManager();
  43. em.getTransaction().begin();
  44. Site site = em.find(Site.class, 1);
  45. site.setComments("I'm slightly new");
  46. site.setDateEdited(new Date());
  47. em.getTransaction().commit();
  48. em.close();
  49. SyncRegionUpdate initialUpdate = builder.get().build(user, new GetSyncRegionUpdates("sites/1/1", null));
  50. assertThat(initialUpdate.isComplete(), equalTo(true));
  51. assertThat(initialUpdate.getSql(), not(nullValue()));
  52. assertThat(initialUpdate.getSql(), containsString("slightly new"));
  53. System.out.println(initialUpdate.getSql());
  54. // nothing has changed!
  55. SyncRegionUpdate subsequentUpdate = builder.get().build(user,
  56. new GetSyncRegionUpdates("sites/1/1", initialUpdate.getVersion()));
  57. assertThat(subsequentUpdate.isComplete(), equalTo(true));
  58. assertThat(subsequentUpdate.getSql(), nullValue());
  59. assertThat(subsequentUpdate.getVersion(), equalTo(initialUpdate.getVersion()));
  60. }
  61. }