package pl.edu.icm.saos.persistence.search.implementor; import org.junit.Test; import org.junit.experimental.categories.Category; import org.springframework.beans.factory.annotation.Autowired; import pl.edu.icm.saos.common.testcommon.category.SlowTest; import pl.edu.icm.saos.persistence.PersistenceTestSupport; import pl.edu.icm.saos.persistence.common.TestPersistenceObjectFactory; import pl.edu.icm.saos.persistence.model.SupremeCourtChamber; import pl.edu.icm.saos.persistence.repository.ScChamberRepository; import pl.edu.icm.saos.persistence.search.DatabaseSearchService; import pl.edu.icm.saos.persistence.search.dto.SupremeCourtChamberSearchFilter; import pl.edu.icm.saos.persistence.search.result.SearchResult; import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; /** * Tests integration between * {@link pl.edu.icm.saos.persistence.search.implementor.SupremeCourtChamberJpqlSearchImplementator SupremeCourtChamberJpqlSearchImplementator} * and {@link pl.edu.icm.saos.persistence.search.DatabaseSearchService DatabaseSearchService} */ @Category(SlowTest.class) public class SupremeCourtChamberJpqlSearchImplementatorTest extends PersistenceTestSupport { @Autowired private TestPersistenceObjectFactory testPersistenceObjectFactory; @Autowired private DatabaseSearchService databaseSearchService; @Autowired private ScChamberRepository scChamberRepository; @Test public void search__it_should_not_throw_lazy_exception_for_empty_division_list(){ //given SupremeCourtChamber scChamber = new SupremeCourtChamber(); scChamber.setName("someName"); scChamberRepository.save(scChamber); SupremeCourtChamberSearchFilter searchFilter = SupremeCourtChamberSearchFilter.builder() .filter(); //when SearchResult<SupremeCourtChamber> searchResult = databaseSearchService.search(searchFilter); //then SupremeCourtChamber court = searchResult.getResultRecords().get(0); court.getDivisions(); } @Test public void search__it_should_find_all_scChambers_Basic_Fields_With_Its_All_Divisions_Fields(){ //given SupremeCourtChamber scChamber = testPersistenceObjectFactory.createScChamber(); SupremeCourtChamberSearchFilter searchFilter = SupremeCourtChamberSearchFilter.builder() .filter(); //when SearchResult<SupremeCourtChamber> searchResult = databaseSearchService.search(searchFilter); //then List<SupremeCourtChamber> chambers = searchResult.getResultRecords(); assertThat(chambers, iterableWithSize(1)); SupremeCourtChamber actualChamber = chambers.get(0); assertThat("chamber name ", actualChamber.getName(), is(scChamber.getName())); assertThat(actualChamber.getDivisions(), iterableWithSize(scChamber.getDivisions().size())); assertThat("divisions ", actualChamber.getDivisions(), containsListInAnyOrder(scChamber.getDivisions())); } private static org.hamcrest.Matcher<java.lang.Iterable<?>> containsListInAnyOrder(List<?> items) { return containsInAnyOrder(items.toArray()); } }