@Test
  public void shouldNotThrowErrorOnValidateForAPeriodWithNoEndDate() {
    ProcessingPeriod processingPeriod = make(a(defaultProcessingPeriod));
    processingPeriod.setEndDate(null);

    exException.expect(dataExceptionMatcher("error.period.without.end.date"));

    processingPeriod.validate();
  }
  @Test
  public void shouldNotThrowErrorOnValidateForAPeriodWithEndDateEarlierToStartDate() {
    ProcessingPeriod processingPeriod = make(a(defaultProcessingPeriod));
    processingPeriod.setStartDate(oneMonthPast(processingPeriod.getEndDate()));

    exException.expect(dataExceptionMatcher("error.period.invalid.dates"));

    processingPeriod.validate();
  }
  @Test
  public void shouldNotThrowErrorOnValidateForAValidPeriod() {

    ProcessingPeriod processingPeriod = make(a(defaultProcessingPeriod));
    try {
      processingPeriod.validate();
    } catch (Exception e) {
      fail("Processing Period Validation failed where unexpected");
    }
  }
 public Integer findM(ProcessingPeriod currentPeriod) {
   List<ProcessingPeriod> nPreviousPeriods =
       periodRepository.getNPreviousPeriods(currentPeriod, 1);
   if (nPreviousPeriods.size() > 0) {
     return nPreviousPeriods.get(0).getNumberOfMonths();
   }
   return currentPeriod.getNumberOfMonths();
 }