| margaretha | 318fec3 | 2017-10-24 12:11:58 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.dao; |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 2 | |
| 3 | import static org.junit.Assert.assertEquals; |
| 4 | |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 5 | import java.util.Iterator; |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 6 | import java.util.List; |
| 7 | |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 8 | import javax.persistence.PersistenceException; |
| 9 | |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 10 | import org.junit.Rule; |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 11 | import org.junit.Test; |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 12 | import org.junit.rules.ExpectedException; |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 13 | import org.springframework.beans.factory.annotation.Autowired; |
| 14 | |
| margaretha | 85273f1 | 2019-02-04 18:13:17 +0100 | [diff] [blame] | 15 | import de.ids_mannheim.korap.config.SpringJerseyTest; |
| Akron | da08015 | 2020-12-03 13:53:29 +0100 | [diff] [blame] | 16 | import de.ids_mannheim.korap.constant.QueryType; |
| 17 | import de.ids_mannheim.korap.constant.ResourceType; |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 18 | import de.ids_mannheim.korap.entity.VirtualCorpus; |
| 19 | import de.ids_mannheim.korap.exceptions.KustvaktException; |
| margaretha | 61966dd | 2017-10-26 19:32:21 +0200 | [diff] [blame] | 20 | import de.ids_mannheim.korap.user.User; |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 21 | |
| margaretha | 652c4dc | 2021-02-12 17:07:44 +0100 | [diff] [blame^] | 22 | public class VirtualCorpusDaoTest extends SpringJerseyTest { |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 23 | |
| 24 | @Autowired |
| margaretha | f438c59 | 2017-10-25 15:23:50 +0200 | [diff] [blame] | 25 | private VirtualCorpusDao dao; |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 26 | |
| 27 | @Rule |
| 28 | public ExpectedException thrown = ExpectedException.none(); |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 29 | |
| margaretha | 45dde68 | 2018-01-04 21:33:46 +0100 | [diff] [blame] | 30 | @Test |
| 31 | public void testListVCByType () throws KustvaktException { |
| 32 | List<VirtualCorpus> vcList = |
| margaretha | 652c4dc | 2021-02-12 17:07:44 +0100 | [diff] [blame^] | 33 | dao.retrieveVCByType(ResourceType.PUBLISHED, null, QueryType.VIRTUAL_CORPUS); |
| margaretha | 45dde68 | 2018-01-04 21:33:46 +0100 | [diff] [blame] | 34 | assertEquals(1, vcList.size()); |
| margaretha | 541b8cc | 2018-01-10 13:02:46 +0100 | [diff] [blame] | 35 | |
| margaretha | 45dde68 | 2018-01-04 21:33:46 +0100 | [diff] [blame] | 36 | VirtualCorpus vc = vcList.get(0); |
| 37 | assertEquals(4, vc.getId()); |
| margaretha | 3a57940 | 2019-07-04 15:40:46 +0200 | [diff] [blame] | 38 | assertEquals("published-vc", vc.getName()); |
| margaretha | 45dde68 | 2018-01-04 21:33:46 +0100 | [diff] [blame] | 39 | assertEquals("marlin", vc.getCreatedBy()); |
| 40 | } |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 41 | |
| 42 | @Test |
| margaretha | 4457383 | 2018-03-21 16:59:59 +0100 | [diff] [blame] | 43 | public void testSystemVC () throws KustvaktException { |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 44 | // insert vc |
| Akron | da08015 | 2020-12-03 13:53:29 +0100 | [diff] [blame] | 45 | int id = dao.createVirtualCorpus("system-vc", ResourceType.SYSTEM, |
| 46 | QueryType.VIRTUAL_CORPUS, User.CorpusAccess.FREE, |
| 47 | "corpusSigle=GOE", "definition", "description", "experimental", |
| 48 | false, "test class"); |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 49 | |
| 50 | // select vc |
| 51 | List<VirtualCorpus> vcList = |
| margaretha | 652c4dc | 2021-02-12 17:07:44 +0100 | [diff] [blame^] | 52 | dao.retrieveVCByType(ResourceType.SYSTEM, null, QueryType.VIRTUAL_CORPUS); |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 53 | assertEquals(2, vcList.size()); |
| 54 | |
| margaretha | 4457383 | 2018-03-21 16:59:59 +0100 | [diff] [blame] | 55 | VirtualCorpus vc = dao.retrieveVCById(id); |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 56 | // delete vc |
| margaretha | 4457383 | 2018-03-21 16:59:59 +0100 | [diff] [blame] | 57 | dao.deleteVirtualCorpus(vc); |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 58 | |
| 59 | // check if vc has been deleted |
| 60 | thrown.expect(KustvaktException.class); |
| margaretha | 61966dd | 2017-10-26 19:32:21 +0200 | [diff] [blame] | 61 | dao.retrieveVCById(id); |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 62 | } |
| 63 | |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 64 | @Test |
| 65 | public void testNonUniqueVC () throws KustvaktException { |
| 66 | thrown.expect(PersistenceException.class); |
| 67 | thrown.expectMessage("could not execute statement"); |
| 68 | |
| Akron | da08015 | 2020-12-03 13:53:29 +0100 | [diff] [blame] | 69 | dao.createVirtualCorpus("system-vc", ResourceType.SYSTEM, |
| 70 | QueryType.VIRTUAL_CORPUS, User.CorpusAccess.FREE, |
| 71 | "corpusSigle=GOE", "definition", "description", "experimental", |
| 72 | false, "system"); |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 73 | } |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 74 | |
| 75 | @Test |
| margaretha | 4457383 | 2018-03-21 16:59:59 +0100 | [diff] [blame] | 76 | public void retrieveSystemVC () throws KustvaktException { |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 77 | List<VirtualCorpus> vc = |
| margaretha | 652c4dc | 2021-02-12 17:07:44 +0100 | [diff] [blame^] | 78 | dao.retrieveVCByType(ResourceType.SYSTEM, null, QueryType.VIRTUAL_CORPUS); |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 79 | assertEquals(1, vc.size()); |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 80 | } |
| 81 | |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 82 | /** |
| 83 | * retrieve private and group VC |
| 84 | * |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 85 | * @throws KustvaktException |
| 86 | */ |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 87 | @Test |
| margaretha | f438c59 | 2017-10-25 15:23:50 +0200 | [diff] [blame] | 88 | public void retrieveVCByUserDory () throws KustvaktException { |
| margaretha | 652c4dc | 2021-02-12 17:07:44 +0100 | [diff] [blame^] | 89 | List<VirtualCorpus> virtualCorpora = |
| 90 | dao.retrieveVCByUser("dory", QueryType.VIRTUAL_CORPUS); |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 91 | // System.out.println(virtualCorpora); |
| margaretha | 71e6fca | 2018-01-18 18:11:48 +0100 | [diff] [blame] | 92 | assertEquals(4, virtualCorpora.size()); |
| margaretha | 98ec15b | 2018-01-22 17:14:02 +0100 | [diff] [blame] | 93 | // ordered by id |
| 94 | Iterator<VirtualCorpus> i = virtualCorpora.iterator(); |
| margaretha | 3a57940 | 2019-07-04 15:40:46 +0200 | [diff] [blame] | 95 | assertEquals("dory-vc", i.next().getName()); |
| 96 | assertEquals("group-vc", i.next().getName()); |
| 97 | assertEquals("system-vc", i.next().getName()); |
| 98 | assertEquals("published-vc", i.next().getName()); |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 99 | } |
| 100 | |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 101 | /** |
| 102 | * retrieves group VC and |
| 103 | * excludes hidden published VC (user has never used it) |
| 104 | * |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 105 | * @throws KustvaktException |
| 106 | */ |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 107 | @Test |
| margaretha | f438c59 | 2017-10-25 15:23:50 +0200 | [diff] [blame] | 108 | public void retrieveVCByUserNemo () throws KustvaktException { |
| margaretha | 652c4dc | 2021-02-12 17:07:44 +0100 | [diff] [blame^] | 109 | List<VirtualCorpus> virtualCorpora = |
| 110 | dao.retrieveVCByUser("nemo", QueryType.VIRTUAL_CORPUS); |
| margaretha | 98ec15b | 2018-01-22 17:14:02 +0100 | [diff] [blame] | 111 | assertEquals(3, virtualCorpora.size()); |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 112 | Iterator<VirtualCorpus> i = virtualCorpora.iterator(); |
| margaretha | 3a57940 | 2019-07-04 15:40:46 +0200 | [diff] [blame] | 113 | assertEquals("group-vc", i.next().getName()); |
| 114 | assertEquals("system-vc", i.next().getName()); |
| 115 | assertEquals("nemo-vc", i.next().getName()); |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 116 | } |
| 117 | |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 118 | /** |
| 119 | * retrieves published VC by the owner and |
| 120 | * excludes group vc when a user is a pending member |
| 121 | * |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 122 | * @throws KustvaktException |
| 123 | */ |
| 124 | @Test |
| margaretha | f438c59 | 2017-10-25 15:23:50 +0200 | [diff] [blame] | 125 | public void retrieveVCByUserMarlin () throws KustvaktException { |
| margaretha | 652c4dc | 2021-02-12 17:07:44 +0100 | [diff] [blame^] | 126 | List<VirtualCorpus> virtualCorpora = |
| 127 | dao.retrieveVCByUser("marlin", QueryType.VIRTUAL_CORPUS); |
| margaretha | 98ec15b | 2018-01-22 17:14:02 +0100 | [diff] [blame] | 128 | assertEquals(3, virtualCorpora.size()); |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 129 | Iterator<VirtualCorpus> i = virtualCorpora.iterator(); |
| margaretha | 3a57940 | 2019-07-04 15:40:46 +0200 | [diff] [blame] | 130 | assertEquals("system-vc", i.next().getName()); |
| 131 | assertEquals("published-vc", i.next().getName()); |
| 132 | assertEquals("marlin-vc", i.next().getName()); |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 133 | } |
| 134 | |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 135 | /** |
| 136 | * retrieves published VC from an auto-generated hidden group and |
| 137 | * excludes group vc when a user is a deleted member |
| 138 | * |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 139 | * @throws KustvaktException |
| 140 | */ |
| 141 | @Test |
| margaretha | f438c59 | 2017-10-25 15:23:50 +0200 | [diff] [blame] | 142 | public void retrieveVCByUserPearl () throws KustvaktException { |
| margaretha | 652c4dc | 2021-02-12 17:07:44 +0100 | [diff] [blame^] | 143 | List<VirtualCorpus> virtualCorpora = |
| 144 | dao.retrieveVCByUser("pearl", QueryType.VIRTUAL_CORPUS); |
| margaretha | f6d5a82 | 2017-10-19 19:51:20 +0200 | [diff] [blame] | 145 | assertEquals(2, virtualCorpora.size()); |
| 146 | Iterator<VirtualCorpus> i = virtualCorpora.iterator(); |
| margaretha | 3a57940 | 2019-07-04 15:40:46 +0200 | [diff] [blame] | 147 | assertEquals("system-vc", i.next().getName()); |
| 148 | assertEquals("published-vc", i.next().getName()); |
| margaretha | 1f106f6 | 2017-10-18 22:27:30 +0200 | [diff] [blame] | 149 | } |
| 150 | |
| 151 | } |