/sigmah/src/test/java/org/sigmah/server/schedule/ReportMailerTest.java

http://sigma-h.googlecode.com/ · Java · 149 lines · 96 code · 46 blank · 7 comment · 0 complexity · d999783649f1494ad282ff4415ca2eb6 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.schedule;
  6. import org.junit.Assert;
  7. import org.junit.Test;
  8. import org.sigmah.server.domain.ReportDefinition;
  9. import org.sigmah.server.domain.ReportSubscription;
  10. import org.sigmah.shared.domain.User;
  11. import org.sigmah.shared.report.model.DateRange;
  12. import org.sigmah.shared.report.model.Report;
  13. import org.sigmah.shared.report.model.ReportFrequency;
  14. import java.util.Calendar;
  15. import java.util.Date;
  16. /**
  17. * @author Alex Bertram
  18. */
  19. public class ReportMailerTest {
  20. @Test
  21. public void testDailyCheck() {
  22. Report sub = new Report();
  23. sub.setFrequency(ReportFrequency.Daily);
  24. Assert.assertTrue("Daily report always goes out", ReportMailerHelper.mailToday(new Date(), sub));
  25. }
  26. @Test
  27. public void testWeeklyCheck() {
  28. Report report = new Report();
  29. report.setFrequency(ReportFrequency.Weekly);
  30. report.setDay(0); // Sunday
  31. Calendar cal = Calendar.getInstance();
  32. cal.set(Calendar.YEAR, 2009);
  33. cal.set(Calendar.MONTH, 9);
  34. cal.set(Calendar.DATE, 4);
  35. Assert.assertTrue("Sunday report goes out on Sunday", ReportMailerHelper.mailToday(cal.getTime(), report));
  36. cal.set(Calendar.DATE, 5);
  37. Assert.assertFalse("Sunday report does not out on Monday", ReportMailerHelper.mailToday(cal.getTime(), report));
  38. report.setDay(1);
  39. Assert.assertTrue("Monday report goes out on Monday", ReportMailerHelper.mailToday(cal.getTime(), report));
  40. }
  41. @Test
  42. public void testMonthly() {
  43. Report report = new Report();
  44. report.setFrequency(ReportFrequency.Monthly);
  45. report.setDay(11);
  46. Calendar cal = Calendar.getInstance();
  47. cal.set(Calendar.YEAR, 2009);
  48. cal.set(Calendar.MONTH, 3);
  49. cal.set(Calendar.DATE, 11);
  50. Assert.assertTrue("Monthly report scheduled for each the 11th goes out on the 11th",
  51. ReportMailerHelper.mailToday(cal.getTime(), report));
  52. cal.set(Calendar.DATE, 30);
  53. }
  54. @Test
  55. public void testLastDayOfMonth() {
  56. Report report = new Report();
  57. report.setFrequency(ReportFrequency.Monthly);
  58. report.setDay(Report.LAST_DAY_OF_MONTH);
  59. Calendar cal = Calendar.getInstance();
  60. cal.set(Calendar.YEAR, 2009);
  61. cal.set(Calendar.MONTH, 3);
  62. cal.set(Calendar.DATE, 30);
  63. Assert.assertTrue("Report goes out on 4-April",
  64. ReportMailerHelper.mailToday(cal.getTime(), report));
  65. cal.set(Calendar.MONTH, 0);
  66. cal.set(Calendar.DATE, 31);
  67. Assert.assertTrue("Report goes out on 31-Jan",
  68. ReportMailerHelper.mailToday(cal.getTime(), report));
  69. }
  70. @Test
  71. public void testDateParameters() {
  72. Report report = new Report();
  73. report.setFrequency(ReportFrequency.Monthly);
  74. Calendar today = Calendar.getInstance();
  75. today.set(Calendar.DATE, 5);
  76. today.set(Calendar.MONTH, 0);
  77. today.set(Calendar.YEAR, 2009);
  78. DateRange dateRange = ReportMailerHelper.computeDateRange(report, today.getTime());
  79. Calendar month = Calendar.getInstance();
  80. month.setTime(dateRange.getMaxDate());
  81. Assert.assertEquals(11, month.get(Calendar.MONTH));
  82. Assert.assertEquals(31, month.get(Calendar.DATE));
  83. Assert.assertEquals(2008, month.get(Calendar.YEAR));
  84. }
  85. @Test
  86. public void testTextEmail() {
  87. User user = new User();
  88. user.setEmail("akbertram@gmail.com");
  89. user.setName("alex");
  90. user.setLocale("fr");
  91. ReportSubscription sub = new ReportSubscription();
  92. sub.setTemplate(new ReportDefinition());
  93. sub.getTemplate().setId(1);
  94. sub.setUser(user);
  95. Report report = new Report();
  96. report.setTitle("Rapport RRM Mensuelle");
  97. report.setFrequency(ReportFrequency.Weekly);
  98. report.setDay(1);
  99. String text = ReportMailerHelper.composeTextEmail(sub, report);
  100. System.out.println(text);
  101. Assert.assertTrue("user name is present", text.contains(user.getName()));
  102. }
  103. }