/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.frontend.web.controllers; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.Optional; import javax.annotation.Resource; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.orcid.core.manager.OrcidSecurityManager; import org.orcid.model.record_correction.RecordCorrectionsPage; import org.orcid.test.DBUnitTest; import org.orcid.test.OrcidJUnit4ClassRunner; import org.orcid.test.TargetProxyHelper; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.web.WebAppConfiguration; @RunWith(OrcidJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(locations = { "classpath:orcid-core-context.xml", "classpath:orcid-frontend-web-servlet.xml", "classpath:statistics-core-context.xml" }) public class RecordCorrectionsControllerTest extends DBUnitTest { @Resource private RecordCorrectionsController controller; @Mock private OrcidSecurityManager securityMgr; @BeforeClass public static void initDBUnitData() throws Exception { initDBUnitData(Arrays.asList("/data/InvalidRecordDataChanges.xml")); } @Before public void before() { controller.evictCache(); MockitoAnnotations.initMocks(this); TargetProxyHelper.injectIntoProxy(controller, "securityMgr", securityMgr); when(securityMgr.isAdmin()).thenReturn(true); } @AfterClass public static void removeDBUnitData() throws Exception { removeDBUnitData(Arrays.asList("/data/InvalidRecordDataChanges.xml")); } @Test public void nextOnFirstPageTest() { RecordCorrectionsPage page1 = controller.getNextDescending(Optional.empty()); assertNotNull(page1); assertFalse(page1.getHavePrevious()); assertTrue(page1.getHaveNext()); assertEquals(Long.valueOf(1015), page1.getFirstElementId()); assertEquals(Long.valueOf(1006), page1.getLastElementId()); assertNotNull(page1.getRecordCorrections()); assertEquals(10, page1.getRecordCorrections().size()); RecordCorrectionsPage page2 = controller.getNextDescending(Optional.of(page1.getLastElementId())); assertNotNull(page2); assertTrue(page2.getHavePrevious()); assertFalse(page2.getHaveNext()); assertEquals(Long.valueOf(1005), page2.getFirstElementId()); assertEquals(Long.valueOf(1000), page2.getLastElementId()); assertNotNull(page2.getRecordCorrections()); assertEquals(6, page2.getRecordCorrections().size()); } @Test public void previousOnFirstPageTest() { RecordCorrectionsPage page = controller.getPreviousDescending(Optional.of(1015L)); assertNotNull(page); assertNull(page.getFirstElementId()); assertNull(page.getLastElementId()); assertFalse(page.getHaveNext()); assertFalse(page.getHavePrevious()); assertNull(page.getLastElementId()); } @Test public void nextOnLastPageTest() { RecordCorrectionsPage page = controller.getNextDescending(Optional.of(1000L)); assertNotNull(page); assertNull(page.getFirstElementId()); assertNull(page.getLastElementId()); assertFalse(page.getHaveNext()); assertFalse(page.getHavePrevious()); assertNull(page.getLastElementId()); } @Test public void previousOnLastPageTest() { RecordCorrectionsPage page1 = controller.getPreviousDescending(Optional.empty()); assertNotNull(page1); assertTrue(page1.getHavePrevious()); assertFalse(page1.getHaveNext()); assertEquals(Long.valueOf(1009), page1.getFirstElementId()); assertEquals(Long.valueOf(1000), page1.getLastElementId()); assertNotNull(page1.getRecordCorrections()); assertEquals(10, page1.getRecordCorrections().size()); RecordCorrectionsPage page2 = controller.getPreviousDescending(Optional.of(page1.getFirstElementId())); assertNotNull(page2); assertFalse(page2.getHavePrevious()); assertTrue(page2.getHaveNext()); assertEquals(Long.valueOf(1015), page2.getFirstElementId()); assertEquals(Long.valueOf(1010), page2.getLastElementId()); assertNotNull(page2.getRecordCorrections()); assertEquals(6, page2.getRecordCorrections().size()); } }