2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.persistence
.dao
.hibernate
.agent
;
12 import static org
.junit
.Assert
.assertEquals
;
13 import static org
.junit
.Assert
.assertFalse
;
14 import static org
.junit
.Assert
.assertNotNull
;
16 import java
.util
.ArrayList
;
17 import java
.util
.List
;
18 import java
.util
.UUID
;
20 import junit
.framework
.Assert
;
22 import org
.junit
.After
;
23 import org
.junit
.Before
;
24 import org
.junit
.Ignore
;
25 import org
.junit
.Test
;
26 import org
.springframework
.test
.context
.transaction
.TransactionConfiguration
;
27 import org
.unitils
.dbunit
.annotation
.DataSet
;
28 import org
.unitils
.dbunit
.annotation
.ExpectedDataSet
;
29 import org
.unitils
.spring
.annotation
.SpringBeanByType
;
31 import eu
.etaxonomy
.cdm
.model
.agent
.AgentBase
;
32 import eu
.etaxonomy
.cdm
.model
.agent
.InstitutionalMembership
;
33 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
34 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
35 import eu
.etaxonomy
.cdm
.model
.view
.AuditEvent
;
36 import eu
.etaxonomy
.cdm
.model
.view
.context
.AuditEventContextHolder
;
37 import eu
.etaxonomy
.cdm
.persistence
.dao
.agent
.IAgentDao
;
38 import eu
.etaxonomy
.cdm
.persistence
.query
.OrderHint
;
39 import eu
.etaxonomy
.cdm
.persistence
.query
.OrderHint
.SortOrder
;
40 import eu
.etaxonomy
.cdm
.test
.integration
.CdmTransactionalIntegrationTest
;
43 public class AgentDaoImplTest
extends CdmTransactionalIntegrationTest
{
45 private static final String
[] TABLE_NAMES
= new String
[] {"AGENTBASE", "AGENTBASE_AUD", "AGENTBASE_AGENTBASE", "AGENTBASE_AGENTBASE_AUD", "INSTITUTIONALMEMBERSHIP", "INSTITUTIONALMEMBERSHIP_AUD"};
49 private IAgentDao agentDao
;
52 private UUID personUuid
;
53 private AuditEvent previousAuditEvent
;
57 uuid
= UUID
.fromString("924fa059-1b83-45f8-bc3a-e754d2757364");
58 personUuid
= UUID
.fromString("ed6ac546-8c6c-48c4-9b91-40b1157c05c6");
59 previousAuditEvent
= new AuditEvent();
60 previousAuditEvent
.setRevisionNumber(1000);
61 previousAuditEvent
.setUuid(UUID
.fromString("a680fab4-365e-4765-b49e-768f2ee30cda"));
62 AuditEventContextHolder
.clearContext(); // By default we're in the current view (i.e. view == null)
66 public void tearDown() {
67 AuditEventContextHolder
.clearContext();
72 public void testCountMembers() {
73 Team team
= (Team
)agentDao
.findByUuid(uuid
);
74 assert team
!= null : "team must exist";
76 int numberOfMembers
= agentDao
.countMembers(team
);
77 assertEquals("countMembers should return 5",5,numberOfMembers
);
82 public void testGetMembers() {
83 Team team
= (Team
)agentDao
.findByUuid(uuid
);
84 assert team
!= null : "team must exist";
86 List
<Person
> members
= agentDao
.getMembers(team
, null, null);
87 assertNotNull("getMembers should return a List", members
);
88 assertFalse("getMembers should not be empty",members
.isEmpty());
89 assertEquals("getMembers should return 5 person instances",5,members
.size());
91 Person firstMember
= members
.get(0);
92 assertEquals("First member must be the one with agentbase id 3 (sortindex = 0)", 3, firstMember
.getId());
93 Person lastMember
= members
.get(4);
94 assertEquals("Last member must be the one with agentbase id 4 (sortindex = 4)", 4, lastMember
.getId());
95 Person id1Member
= members
.get(2);
96 assertEquals("The member with id = 1 must be the third (sortindex = 2)", 1, id1Member
.getId());
101 public void testCountInstitutionalMemberships() {
102 Person person
= (Person
)agentDao
.findByUuid(personUuid
);
103 assert person
!= null : "person must exist";
105 int numberOfInstitutionalMemberships
= agentDao
.countInstitutionalMemberships(person
);
106 assertEquals("countInstitutionalMemberships should return 3",3,numberOfInstitutionalMemberships
);
111 public void testGetInstitutionalMemberships() {
112 Person person
= (Person
)agentDao
.findByUuid(personUuid
);
113 assert person
!= null : "person must exist";
115 List
<InstitutionalMembership
> memberships
= agentDao
.getInstitutionalMemberships(person
, null, null);
116 assertNotNull("getInstitutionalMemberships should return a List", memberships
);
117 assertFalse("getInstitutionalMemberships should not be empty",memberships
.isEmpty());
118 assertEquals("getInstitutionalMemberships should return 3 institutional membership instances",3,memberships
.size());
122 @DataSet("AgentDaoImplTest.testSave.xml")
124 public void testSave() {
125 Person person
= Person
.NewInstance();
126 person
.setFirstname("ben");
127 agentDao
.save(person
);
135 public void testUpdate() {
136 Person person
= (Person
)agentDao
.findByUuid(personUuid
);
137 assert person
!= null : "person must exist";
138 person
.setFirstname("Benjamin");
139 agentDao
.update(person
);
145 @DataSet("AgentDaoImplTest.testFind.xml")
146 public void testFindInCurrentView() {
147 Person person
= (Person
)agentDao
.findByUuid(personUuid
);
148 Assert
.assertEquals("The person's firstname should be \'Benjamin\' in the current view", "Benjamin", person
.getFirstname());
152 @DataSet("AgentDaoImplTest.testFind.xml")
153 public void testFindInPreviousView() {
154 AuditEventContextHolder
.getContext().setAuditEvent(previousAuditEvent
);
155 Person person
= (Person
)agentDao
.findByUuid(personUuid
);
156 Assert
.assertEquals("The person's firstname should be \'Ben\' in the previous view",person
.getFirstname(),"Ben");
160 @DataSet("AgentDaoImplTest.testFind.xml")
162 public void testDelete() throws Exception
{
163 Person person
= (Person
)agentDao
.findByUuid(personUuid
);
164 agentDao
.delete(person
);
165 commitAndStartNewTransaction(null);
169 @DataSet("AgentDaoImplTest.testExists.xml")
170 public void testExists() {
171 Assert
.assertFalse("Person with the uuid " + personUuid
.toString() + "should not exist in the current view",agentDao
.exists(personUuid
));
175 @DataSet("AgentDaoImplTest.testExists.xml")
176 public void testExistsInPreviousView() {
177 AuditEventContextHolder
.getContext().setAuditEvent(previousAuditEvent
);
178 Assert
.assertTrue("Person with the uuid " + personUuid
.toString() + "should exist in the previous view",agentDao
.exists(uuid
));
182 @DataSet("AgentDaoImplTest.testExists.xml")
183 public void testCount() {
184 Assert
.assertEquals("There should be eight agents in the current view",8, agentDao
.count());
188 @DataSet("AgentDaoImplTest.testExists.xml")
189 public void testCountInPreviousView() {
190 AuditEventContextHolder
.getContext().setAuditEvent(previousAuditEvent
);
191 Assert
.assertEquals("There should be nine agents in the previous view",9, agentDao
.count());
195 @DataSet("AgentDaoImplTest.testExists.xml")
196 public void testCountAuditEvents() {
197 Assert
.assertEquals("There should be eleven AuditEvents",11, agentDao
.countAuditEvents(null, null, null, null));
201 @DataSet("AgentDaoImplTest.testExists.xml")
202 public void testList() {
203 List
<AgentBase
> result
= agentDao
.list(null,null);
204 Assert
.assertNotNull("list() should return a list",result
);
205 Assert
.assertEquals("list() should return eight agents in the current view", result
.size(),8);
209 @DataSet("AgentDaoImplTest.testExists.xml")
210 public void testListInPreviousView() {
211 AuditEventContextHolder
.getContext().setAuditEvent(previousAuditEvent
);
212 List
<AgentBase
> result
= agentDao
.list(null, null);
213 Assert
.assertNotNull("list() should return a list",result
);
214 Assert
.assertEquals("list() should return nine agents in the current view",result
.size(),9);
218 @DataSet("AgentDaoImplTest.testExists.xml")
219 public void testSortingListInPreviousView() {
220 AuditEventContextHolder
.getContext().setAuditEvent(previousAuditEvent
);
221 List
<OrderHint
> orderHints
= new ArrayList
<OrderHint
>();
222 orderHints
.add(new OrderHint("titleCache", SortOrder
.ASCENDING
));
223 List
<AgentBase
> result
= agentDao
.list(null, null, null,orderHints
,null);
224 Assert
.assertNotNull("list() should return a list",result
);
225 Assert
.assertEquals("list() should return nine agents in the current view",result
.size(),9);
226 Assert
.assertEquals(result
.get(0).getTitleCache(), "B.R. Clark");
227 Assert
.assertEquals(result
.get(8).getTitleCache(), "University of Oxford");
231 @DataSet("AgentDaoImplTest.testExists.xml")
232 public void testCountPeople() {
233 Assert
.assertEquals("There should be four agents in the current view",4, agentDao
.count(Person
.class));
237 @DataSet("AgentDaoImplTest.testExists.xml")
238 public void testCountPeopleInPreviousView() {
239 AuditEventContextHolder
.getContext().setAuditEvent(previousAuditEvent
);
240 Assert
.assertEquals("There should be five agents in the previous view",5, agentDao
.count(Person
.class));
244 @DataSet("AgentDaoImplTest.testExists.xml")
245 public void testListPeople() {
246 List
<AgentBase
> result
= agentDao
.list(Person
.class,null,null);
247 Assert
.assertNotNull("list() should return a list",result
);
248 Assert
.assertEquals("list() should return four agents in the current view", result
.size(),4);
252 @DataSet("AgentDaoImplTest.testExists.xml")
253 public void testListPeopleInPreviousView() {
254 AuditEventContextHolder
.getContext().setAuditEvent(previousAuditEvent
);
255 List
<AgentBase
> result
= agentDao
.list(Person
.class,null, null);
256 Assert
.assertNotNull("list() should return a list",result
);
257 Assert
.assertEquals("list() should return five agents in the current view",result
.size(),5);