package org.mifos.platform.questionnaire.matchers; import org.hamcrest.Description; import org.hamcrest.Matchers; import org.hamcrest.TypeSafeMatcher; import org.mifos.platform.questionnaire.service.SectionDetail; import org.mifos.platform.questionnaire.service.SectionQuestionDetail; import static org.apache.commons.lang.StringUtils.equalsIgnoreCase; import static org.junit.Assert.assertThat; @SuppressWarnings("PMD") public class QuestionGroupSectionMatcher extends TypeSafeMatcher<SectionDetail> { private SectionDetail sectionDetail; public QuestionGroupSectionMatcher(SectionDetail sectionDetail) { this.sectionDetail = sectionDetail; } @Override public boolean matchesSafely(SectionDetail sectionDetail) { boolean sameTitle = equalsIgnoreCase(this.sectionDetail.getName(), sectionDetail.getName()); if (sameTitle && this.sectionDetail.getQuestions().size() == sectionDetail.getQuestions().size()) { for (SectionQuestionDetail questionDetail : this.sectionDetail.getQuestions()) { assertThat(sectionDetail.getQuestions(), Matchers.hasItem(new SectionQuestionDetailMatcher(questionDetail))); } } return sameTitle; } @Override public void describeTo(Description description) { description.appendText("QuestionGroup sections do not match"); } }