diff --git a/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccTest.java b/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccTest.java index d42d994dc..b6ef2c84b 100644 --- a/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccTest.java @@ -4,9 +4,11 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -114,7 +116,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .domainIn("DOMAIN_B") .list(); - Assert.assertEquals(1L, results.size()); + assertEquals(1L, results.size()); } @WithAccessId( @@ -127,7 +129,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { .domainIn("DOMAIN_A") .typeIn(WorkbasketType.PERSONAL) .list(); - Assert.assertEquals(6L, results.size()); + assertEquals(6L, results.size()); } @WithAccessId( @@ -139,8 +141,8 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .nameIn("Gruppenpostkorb KSC") .list(); - Assert.assertEquals(1L, results.size()); - Assert.assertEquals("GPK_KSC", results.get(0).getKey()); + assertEquals(1L, results.size()); + assertEquals("GPK_KSC", results.get(0).getKey()); } @WithAccessId( @@ -152,7 +154,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .nameLike("%Gruppenpostkorb KSC%") .list(); - Assert.assertEquals(3L, results.size()); + assertEquals(3L, results.size()); } @WithAccessId( @@ -164,7 +166,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .nameLike("%Teamlead%", "%Gruppenpostkorb KSC%") .list(); - Assert.assertEquals(5L, results.size()); + assertEquals(5L, results.size()); } @WithAccessId( @@ -176,7 +178,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .nameLike("%TEAMLEAD%") .list(); - Assert.assertEquals(2L, results.size()); + assertEquals(2L, results.size()); } @WithAccessId( @@ -190,7 +192,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { .orderByType(desc) .orderByDescription(asc) .list(); - Assert.assertEquals(9L, results.size()); + assertEquals(9L, results.size()); } @WithAccessId( @@ -203,7 +205,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { .ownerLike("%an%", "%te%") .orderByOwner(asc) .list(); - Assert.assertEquals(1L, results.size()); + assertEquals(1L, results.size()); } @WithAccessId( @@ -215,7 +217,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .keyIn("GPK_KSC") .list(); - Assert.assertEquals(1L, results.size()); + assertEquals(1L, results.size()); } @WithAccessId( @@ -227,7 +229,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .keyIn("GPK_KSC_1", "GPK_KSC") .list(); - Assert.assertEquals(2L, results.size()); + assertEquals(2L, results.size()); } @WithAccessId( @@ -239,7 +241,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .keyIn("GPK_KSC_1", "GPK_Ksc", "GPK_KSC_3") .list(); - Assert.assertEquals(2L, results.size()); + assertEquals(2L, results.size()); } @WithAccessId( @@ -251,7 +253,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .keyLike("%KSC%") .list(); - Assert.assertEquals(3L, results.size()); + assertEquals(3L, results.size()); } @WithAccessId( @@ -263,7 +265,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .keyLike("%kSc%") .list(); - Assert.assertEquals(3L, results.size()); + assertEquals(3L, results.size()); } @WithAccessId( @@ -275,7 +277,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .keyOrNameLike("%kSc%") .list(); - Assert.assertEquals(9L, results.size()); + assertEquals(9L, results.size()); } @WithAccessId( @@ -288,14 +290,14 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { .nameLike("%Gruppenpostkorb KSC%") .orderByName(asc) .list(); - Assert.assertEquals(3L, results.size()); - Assert.assertEquals("GPK_KSC", results.get(0).getKey()); + assertEquals(3L, results.size()); + assertEquals("GPK_KSC", results.get(0).getKey()); // check sort order is correct WorkbasketSummary previousSummary = null; for (WorkbasketSummary wbSummary : results) { if (previousSummary != null) { - Assert.assertTrue(wbSummary.getName().compareToIgnoreCase( + assertTrue(wbSummary.getName().compareToIgnoreCase( previousSummary.getName()) >= 0); } previousSummary = wbSummary; @@ -312,12 +314,12 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { .nameLike("basxet%") .orderByName(desc) .list(); - Assert.assertEquals(10L, results.size()); + assertEquals(10L, results.size()); // check sort order is correct WorkbasketSummary previousSummary = null; for (WorkbasketSummary wbSummary : results) { if (previousSummary != null) { - Assert.assertTrue(wbSummary.getName().compareToIgnoreCase( + assertTrue(wbSummary.getName().compareToIgnoreCase( previousSummary.getName()) <= 0); } previousSummary = wbSummary; @@ -333,12 +335,12 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { .nameLike("basxet%") .orderByKey(asc) .list(); - Assert.assertEquals(10L, results.size()); + assertEquals(10L, results.size()); // check sort order is correct WorkbasketSummary previousSummary = null; for (WorkbasketSummary wbSummary : results) { if (previousSummary != null) { - Assert.assertTrue(wbSummary.getKey().compareToIgnoreCase( + assertTrue(wbSummary.getKey().compareToIgnoreCase( previousSummary.getKey()) >= 0); } previousSummary = wbSummary; @@ -354,12 +356,12 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { .nameLike("basxet%") .orderByKey(desc) .list(); - Assert.assertEquals(10L, results.size()); + assertEquals(10L, results.size()); // check sort order is correct WorkbasketSummary previousSummary = null; for (WorkbasketSummary wbSummary : results) { if (previousSummary != null) { - Assert.assertTrue(wbSummary.getKey().compareToIgnoreCase( + assertTrue(wbSummary.getKey().compareToIgnoreCase( previousSummary.getKey()) <= 0); } previousSummary = wbSummary; @@ -375,7 +377,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .createdWithin(todaysInterval()) .list(); - Assert.assertEquals(9L, results.size()); + assertEquals(9L, results.size()); } @WithAccessId( @@ -387,7 +389,7 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { List results = workbasketService.createWorkbasketQuery() .modifiedWithin(todaysInterval()) .list(); - Assert.assertEquals(9L, results.size()); + assertEquals(9L, results.size()); } @WithAccessId( @@ -401,12 +403,12 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { .nameLike("%") .orderByName(desc) .list(); - Assert.assertEquals(25L, results.size()); + assertEquals(25L, results.size()); // check sort order is correct WorkbasketSummary previousSummary = null; for (WorkbasketSummary wbSummary : results) { if (previousSummary != null) { - Assert.assertTrue(wbSummary.getName().compareToIgnoreCase( + assertTrue(wbSummary.getName().compareToIgnoreCase( previousSummary.getName()) <= 0); } previousSummary = wbSummary; @@ -418,8 +420,74 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { .orderByName(desc) .list(); - Assert.assertEquals(13L, results.size()); + assertEquals(13L, results.size()); } + @WithAccessId( + userName = "teamlead_1", + groupNames = "group_1") + @Test + public void testQueryWorkbasketByDomainLike() { + WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); + List results = workbasketService.createWorkbasketQuery() + .domainLike("DOMAIN_%").orderByDomain(asc).list(); + + ArrayList expectedIds = new ArrayList( + Arrays.asList("WBI:100000000000000000000000000000000001", "WBI:100000000000000000000000000000000002", + "WBI:100000000000000000000000000000000004", "WBI:100000000000000000000000000000000005", + "WBI:100000000000000000000000000000000006", "WBI:100000000000000000000000000000000007", + "WBI:100000000000000000000000000000000008", "WBI:100000000000000000000000000000000009", + "WBI:100000000000000000000000000000000010", "WBI:100000000000000000000000000000000012")); + assertEquals(10L, results.size()); + for (String id : expectedIds) { + assertTrue(results.stream().anyMatch(wbSummary -> wbSummary.getId().equals(id))); + } + } + + @WithAccessId( + userName = "admin", + groupNames = "group_1") + @Test + public void testQueryWorkbasketByOwnerInOrderByDomainDesc() { + WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); + List results = workbasketService.createWorkbasketQuery() + .ownerIn("owner0815").orderByDomain(desc).list(); + + assertEquals(2L, results.size()); + assertEquals("WBI:100000000000000000000000000000000015", results.get(0).getId()); + assertEquals("WBI:100000000000000000000000000000000001", results.get(1).getId()); + } + + // TODO Add custom1 - custom4 to the workbasketSummary then reenable this test. + @Ignore + @WithAccessId( + userName = "admin", + groupNames = "") + @Test + public void testQueryForCustom1LikeOrderByCustom1Asc() { + WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); + List results = workbasketService.createWorkbasketQuery() + .custom1Like("ABC%") + .orderByCustom1(asc) + .list(); + + assertEquals(3, results.size()); + assertEquals("WBI:100000000000000000000000000000000015", results.get(0).getId()); + assertEquals("WBI:100000000000000000000000000000000001", results.get(1).getId()); + assertEquals("WBI:100000000000000000000000000000000008", results.get(2).getId()); + } + + @WithAccessId( + userName = "teamlead_1", + groupNames = {"group_1"}) + @Test + public void testQueryWorkbasketCustom1In() { + WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); + List results = workbasketService.createWorkbasketQuery() + .custom1In("ABCQVW").list(); + + assertEquals(1, results.size()); + assertEquals("WBI:100000000000000000000000000000000001", results.get(0).getId()); + } } diff --git a/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccessItemsAccTest.java b/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccessItemsAccTest.java index 7df6ea9f5..4430e6188 100644 --- a/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccessItemsAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccessItemsAccTest.java @@ -82,7 +82,7 @@ public class QueryWorkbasketAccessItemsAccTest extends AbstractAccTest { userName = "dummy", groupNames = {"businessadmin"}) @Test - public void testQueryAccessItemsForAccessIdsOrderedAscending() + public void testQueryAccessItemsForAccessIdsOrderedDescending() throws NotAuthorizedException { WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); WorkbasketAccessItemQuery query = workbasketService.createWorkbasketAccessItemQuery() diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketAccessItemQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketAccessItemQueryImplTest.java new file mode 100644 index 000000000..37b4a09c0 --- /dev/null +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketAccessItemQueryImplTest.java @@ -0,0 +1,69 @@ +package pro.taskana.impl; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.ibatis.session.SqlSession; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import pro.taskana.WorkbasketAccessItem; + +/** + * Test for WorkbasketAccessItemQueryImpl. + * + * @author jsa + */ +@RunWith(MockitoJUnitRunner.class) +public class WorkbasketAccessItemQueryImplTest { + + private WorkbasketAccessItemQueryImpl workbasketAccessItemQueryImpl; + + @Mock + private TaskanaEngineImpl taskanaEngine; + + @Mock + private SqlSession sqlSession; + + @Before + public void setup() { + workbasketAccessItemQueryImpl = new WorkbasketAccessItemQueryImpl(taskanaEngine); + } + + @Test + public void should_ReturnList_when_BuilderIsUsed() { + when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); + + List result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd") + .list(); + Assert.assertNotNull(result); + } + + @Test + public void should_ReturnListWithOffset_when_BuilderIsUsed() { + when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); + + List result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd") + .list(1, 1); + Assert.assertNotNull(result); + } + + @Test + public void should_ReturnOneItem_when_BuilderIsUsed() { + when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketAccessItemImpl()); + + WorkbasketAccessItem result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd") + .single(); + Assert.assertNotNull(result); + } +} diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketQueryImplTest.java new file mode 100644 index 000000000..1fa018792 --- /dev/null +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketQueryImplTest.java @@ -0,0 +1,75 @@ +package pro.taskana.impl; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.ibatis.session.SqlSession; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import pro.taskana.WorkbasketSummary; + +/** + * Test for WorkbasketQueryImpl. + * + * @author jsa + */ +@RunWith(MockitoJUnitRunner.class) +public class WorkbasketQueryImplTest { + + private WorkbasketQueryImpl workbasketQueryImpl; + + @Mock + private TaskanaEngineImpl taskanaEngine; + + @Mock + private SqlSession sqlSession; + + @Before + public void setup() { + workbasketQueryImpl = new WorkbasketQueryImpl(taskanaEngine); + } + + @Test + public void should_ReturnList_when_BuilderIsUsed() { + when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); + + List result = workbasketQueryImpl + .nameIn("Gruppenpostkorb KSC 1", "Gruppenpostkorb KSC 2") + .keyLike("GPK_%") + .list(); + Assert.assertNotNull(result); + } + + @Test + public void should_ReturnListWithOffset_when_BuilderIsUsed() { + when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); + + List result = workbasketQueryImpl + .nameIn("Gruppenpostkorb KSC 1", "Gruppenpostkorb KSC 2") + .keyLike("GPK_%") + .list(1, 1); + Assert.assertNotNull(result); + } + + @Test + public void should_ReturnOneItem_when_BuilderIsUsed() { + when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketSummaryImpl()); + + WorkbasketSummary result = workbasketQueryImpl + .nameIn("Gruppenpostkorb KSC 1", "Gruppenpostkorb KSC 2") + .keyLike("GPK_%") + .single(); + Assert.assertNotNull(result); + } +} diff --git a/lib/taskana-core/src/test/resources/sql/workbasket.sql b/lib/taskana-core/src/test/resources/sql/workbasket.sql index 5e412d21c..d4e1fc37a 100644 --- a/lib/taskana-core/src/test/resources/sql/workbasket.sql +++ b/lib/taskana-core/src/test/resources/sql/workbasket.sql @@ -1,5 +1,5 @@ -- KSC workbaskets -INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000001', 'GPK_KSC', '2018-02-01 12:00:00', '2018-02-01 12:00:00', 'Gruppenpostkorb KSC', 'DOMAIN_A', 'GROUP', 'Gruppenpostkorb KSC', '', '', '', '', '', '', '', '', ''); +INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000001', 'GPK_KSC', '2018-02-01 12:00:00', '2018-02-01 12:00:00', 'Gruppenpostkorb KSC', 'DOMAIN_A', 'GROUP', 'Gruppenpostkorb KSC', 'owner0815', 'ABCQVW', '', '', '', '', '', '', ''); INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000002', 'GPK_KSC_1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'Gruppenpostkorb KSC 1', 'DOMAIN_A', 'GROUP', 'Gruppenpostkorb KSC 1', '', '', '', '', '', '', '', '', ''); INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000003', 'GPK_KSC_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'Gruppenpostkorb KSC 2', 'DOMAIN_A', 'GROUP', 'Gruppenpostkorb KSC 2', '', '', '', '', '', '', '', '', ''); INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000004', 'TEAMLEAD_1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK Teamlead KSC 1', 'DOMAIN_A', 'PERSONAL', 'PPK Teamlead KSC 1', '', '', '', '', '', '', '', '', ''); @@ -15,7 +15,7 @@ INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000011 INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000012', 'GPK_B_KSC_1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'Gruppenpostkorb KSC B1', 'DOMAIN_B', 'GROUP', 'Gruppenpostkorb KSC 1', '', '', '', '', '', '', '', '', ''); INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000013', 'GPK_B_KSC_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'Gruppenpostkorb KSC B2', 'DOMAIN_B', 'GROUP', 'Gruppenpostkorb KSC 2', '', '', '', '', '', '', '', '', ''); INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000014', 'USER_3_1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 1 KSC 1 Domain B', 'DOMAIN_B', 'PERSONAL', 'PPK User 1 KSC 1 Domain B', '', '', '', '', '', '', '', '', ''); -INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000015', 'USER_3_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 2 KSC 1 Domain B', 'DOMAIN_B', 'PERSONAL', 'PPK User 1 KSC 1 Domain B', '', '', '', '', '', '', '', '', ''); +INSERT INTO TASKANA.WORKBASKET VALUES ('WBI:100000000000000000000000000000000015', 'USER_3_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 2 KSC 1 Domain B', 'DOMAIN_B', 'PERSONAL', 'PPK User 1 KSC 1 Domain B', 'owner0815', 'ABCABC', '', '', '', '', '', '', ''); -- Workbaskets for sorting test INSERT INTO TASKANA.WORKBASKET VALUES ('900', 'sort001', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'basxet0', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');