package fi.arcusys.koku.common.service; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNull; import java.util.Arrays; import java.util.Date; import java.util.HashSet; import java.util.Set; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import fi.arcusys.koku.common.service.datamodel.Consent; import fi.arcusys.koku.common.service.datamodel.ConsentType; import fi.arcusys.koku.common.service.datamodel.InformationRequest; import fi.arcusys.koku.common.service.datamodel.InformationRequestCategory; import fi.arcusys.koku.common.service.datamodel.User; /** * @author Dmitry Kudinov (dmitry.kudinov@arcusys.fi) * Sep 22, 2011 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"/test-common-context.xml"}) public class InformationRequestDAOTest { @Autowired private InformationRequestDAO service; @Autowired private CommonTestUtil testUtil; @Test public void testCreateRetrieveDeleteConsent() { final InformationRequest newEntity = new InformationRequest(); newEntity.setAdditionalInfo("some additional info"); newEntity.setDescription("description"); newEntity.setReceiver(testUtil.getUserByUid("tpReceiver")); newEntity.setSender(testUtil.getUserByUid("tpSender")); newEntity.setTargetPerson(testUtil.getUserByUid("tpTargetPerson")); newEntity.setValidTill(new Date()); final Set<InformationRequestCategory> categories = createNewCategories(newEntity, 3); final Long entityId = service.create(newEntity).getId(); final InformationRequest request = service.getById(entityId); assertEquals(entityId, request.getId()); assertEquals(newEntity.getTargetPerson().getUid(), request.getTargetPerson().getUid()); assertEquals(newEntity.getValidTill(), request.getValidTill()); assertEquals(getUids(categories), getUids(request.getCategories())); final Set<InformationRequestCategory> newCategories = createNewCategories(request, 2); final InformationRequest updated = service.update(request); assertEquals(getUids(newCategories), getUids(updated.getCategories())); final InformationRequest updatedEntity = service.getById(entityId); assertEquals(getUids(newCategories), getUids(updatedEntity.getCategories())); service.delete(updatedEntity); assertNull("InformationRequest removed: ", service.getById(entityId)); } private Set<InformationRequestCategory> createNewCategories( final InformationRequest request, final int limit) { final Set<InformationRequestCategory> categories = new HashSet<InformationRequestCategory>(); for (int i = 0; i < limit; i++) { final InformationRequestCategory category = new InformationRequestCategory(); category.setCategoryUid("" + (long)(Math.random() * 100)); category.setRequest(request); categories.add(category); } request.setCategories(categories); return categories; } private Set<String> getUids(final Set<InformationRequestCategory> categories) { final Set<String> result = new HashSet<String>(categories.size()); for (final InformationRequestCategory category : categories) { result.add(category.getCategoryUid()); } return result; } }