1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kim.service.impl;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertFalse;
20 import static org.junit.Assert.assertNotNull;
21 import static org.junit.Assert.assertTrue;
22
23 import java.lang.reflect.Field;
24 import java.sql.Timestamp;
25 import java.util.ArrayList;
26 import java.util.Arrays;
27 import java.util.HashMap;
28 import java.util.List;
29 import java.util.Map;
30 import java.util.UUID;
31
32 import org.joda.time.DateTime;
33 import org.joda.time.format.DateTimeFormat;
34 import org.joda.time.format.DateTimeFormatter;
35 import org.junit.BeforeClass;
36 import org.junit.Test;
37 import org.kuali.rice.core.api.membership.MemberType;
38 import org.kuali.rice.core.api.util.type.KualiDecimal;
39 import org.kuali.rice.kew.api.WorkflowDocument;
40 import org.kuali.rice.kew.api.WorkflowDocumentFactory;
41 import org.kuali.rice.kim.api.KimConstants;
42 import org.kuali.rice.kim.api.identity.IdentityService;
43 import org.kuali.rice.kim.api.identity.Person;
44 import org.kuali.rice.kim.api.identity.address.EntityAddressContract;
45 import org.kuali.rice.kim.api.identity.affiliation.EntityAffiliation;
46 import org.kuali.rice.kim.api.identity.email.EntityEmailContract;
47 import org.kuali.rice.kim.api.identity.employment.EntityEmploymentContract;
48 import org.kuali.rice.kim.api.identity.entity.Entity;
49 import org.kuali.rice.kim.api.identity.entity.EntityDefault;
50 import org.kuali.rice.kim.api.identity.name.EntityNameContract;
51 import org.kuali.rice.kim.api.identity.phone.EntityPhoneContract;
52 import org.kuali.rice.kim.api.identity.principal.PrincipalContract;
53 import org.kuali.rice.kim.api.identity.type.EntityTypeContactInfo;
54 import org.kuali.rice.kim.api.role.RoleMember;
55 import org.kuali.rice.kim.api.role.RoleMemberContract;
56 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
57 import org.kuali.rice.kim.api.type.KimType;
58 import org.kuali.rice.kim.bo.ui.KimDocumentRoleMember;
59 import org.kuali.rice.kim.bo.ui.PersonDocumentAddress;
60 import org.kuali.rice.kim.bo.ui.PersonDocumentAffiliation;
61 import org.kuali.rice.kim.bo.ui.PersonDocumentEmail;
62 import org.kuali.rice.kim.bo.ui.PersonDocumentEmploymentInfo;
63 import org.kuali.rice.kim.bo.ui.PersonDocumentName;
64 import org.kuali.rice.kim.bo.ui.PersonDocumentPhone;
65 import org.kuali.rice.kim.bo.ui.PersonDocumentPrivacy;
66 import org.kuali.rice.kim.bo.ui.PersonDocumentRole;
67 import org.kuali.rice.kim.document.IdentityManagementPersonDocument;
68 import org.kuali.rice.kim.document.IdentityManagementRoleDocument;
69 import org.kuali.rice.kim.framework.type.KimTypeService;
70 import org.kuali.rice.kim.impl.common.delegate.DelegateMemberBo;
71 import org.kuali.rice.kim.impl.identity.address.EntityAddressTypeBo;
72 import org.kuali.rice.kim.impl.identity.affiliation.EntityAffiliationTypeBo;
73 import org.kuali.rice.kim.impl.identity.email.EntityEmailTypeBo;
74 import org.kuali.rice.kim.impl.identity.name.EntityNameTypeBo;
75 import org.kuali.rice.kim.impl.identity.phone.EntityPhoneTypeBo;
76 import org.kuali.rice.kim.impl.identity.privacy.EntityPrivacyPreferencesBo;
77 import org.kuali.rice.kim.impl.role.RoleMemberBo;
78 import org.kuali.rice.kim.impl.type.KimTypeAttributeBo;
79 import org.kuali.rice.kim.impl.type.KimTypeBo;
80 import org.kuali.rice.kim.service.KIMServiceLocatorInternal;
81 import org.kuali.rice.kim.service.UiDocumentService;
82 import org.kuali.rice.kim.test.KIMTestCase;
83 import org.kuali.rice.kns.kim.type.DataDictionaryTypeServiceBase;
84 import org.kuali.rice.krad.bo.DocumentHeader;
85 import org.kuali.rice.krad.data.KradDataServiceLocator;
86 import org.kuali.rice.krad.data.PersistenceOption;
87 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
88 import org.kuali.rice.test.BaselineTestCase;
89
90
91
92
93
94
95
96 @BaselineTestCase.BaselineMode(BaselineTestCase.Mode.ROLLBACK_CLEAR_DB)
97 public class UiDocumentServiceImplTest extends KIMTestCase {
98
99 private UiDocumentService uiDocumentService;
100 static Person adminPerson = null;
101
102 @BeforeClass
103 public static void beforeClassSetup() {
104 adminPerson = KimApiServiceLocator.getPersonService().getPersonByPrincipalName("admin");
105 }
106
107 @Override
108 public void setUp() throws Exception {
109 super.setUp();
110 uiDocumentService = KIMServiceLocatorInternal.getUiDocumentService();
111 }
112
113 protected EntityDefault createTestingEntity() {
114 IdentityManagementPersonDocument personDoc = initPersonDoc();
115
116 WorkflowDocument document = WorkflowDocumentFactory.createDocument(adminPerson.getPrincipalId(),"TestDocumentType");
117 DocumentHeader documentHeader = new DocumentHeader();
118 documentHeader.setWorkflowDocument(document);
119 documentHeader.setDocumentNumber(document.getDocumentId());
120 personDoc.setDocumentHeader(documentHeader);
121
122
123 uiDocumentService.saveEntityPerson(personDoc);
124
125 EntityDefault entity = KimApiServiceLocator.getIdentityService().getEntityDefault(personDoc.getEntityId());
126 assertNotNull( "Entity was not saved: " + personDoc, entity);
127 assertNotNull( "Principal list was null on retrieved record", entity.getPrincipals() );
128 assertEquals( "Principal list was incorrect length", 1, entity.getPrincipals().size() );
129 assertTrue( "Principal is not active on saved record", entity.getPrincipals().get(0).isActive() );
130 return entity;
131 }
132
133 @Test
134 public void testInactiveRoleMemberOnly() {
135
136 KimType.Builder ktBuilder = KimType.Builder.create();
137 ktBuilder.setId("1");
138 ktBuilder.setNamespaceCode("KUALI");
139 ktBuilder.setName("Default");
140 Long version = new Long(1) ;
141 ktBuilder.setVersionNumber(version);
142 KimType kt = ktBuilder.build() ;
143
144 IdentityManagementRoleDocument identityManagementRoleDocument = new IdentityManagementRoleDocument();
145 identityManagementRoleDocument.setKimType(kt);
146 identityManagementRoleDocument.setRoleId("KRSAP10003");
147 identityManagementRoleDocument.setRoleTypeId("1");
148 identityManagementRoleDocument.setRoleName("Default");
149 identityManagementRoleDocument.setRoleNamespace("KR_SAP");
150 identityManagementRoleDocument.setRoleName("Sample App Admin");
151
152 RoleMemberBo roleMemberBo = new RoleMemberBo();
153 roleMemberBo.setId("KRSAP10003");
154 roleMemberBo.setRoleId("KRSAP1003");
155 roleMemberBo.setMemberId("dev1");
156 roleMemberBo.setTypeCode("P");
157
158
159 Timestamp timestamp = new Timestamp(System.currentTimeMillis());
160 roleMemberBo.setActiveToDateValue(timestamp);
161 ArrayList<RoleMemberBo> roleMemberBos = new ArrayList<RoleMemberBo>();
162 roleMemberBos.add(roleMemberBo);
163
164
165 UiDocumentServiceImpl uiDocumentServiceImpl = new UiDocumentServiceImpl() ;
166 List<KimDocumentRoleMember> kimDocumentRoleMembers = uiDocumentServiceImpl.loadRoleMembers(identityManagementRoleDocument, roleMemberBos);
167 assertEquals("KimDocuemtnRoleMember size is incorrect", 0, kimDocumentRoleMembers.size());
168 }
169
170
171 @Test
172 public void testInactivatePrincipal() {
173 createTestingEntity();
174
175 IdentityManagementPersonDocument personDoc = initPersonDoc();
176
177 WorkflowDocument document = WorkflowDocumentFactory.createDocument(adminPerson.getPrincipalId(),"TestDocumentType");
178 DocumentHeader documentHeader = new DocumentHeader();
179 documentHeader.setWorkflowDocument(document);
180 documentHeader.setDocumentNumber(document.getDocumentId());
181 personDoc.setDocumentHeader(documentHeader);
182
183 personDoc.setActive(false);
184 uiDocumentService.saveEntityPerson(personDoc);
185 EntityDefault entity = KimApiServiceLocator.getIdentityService().getEntityDefault(personDoc.getEntityId());
186
187 assertNotNull( "Entity missing after inactivation: " + personDoc, entity);
188 assertNotNull( "Principal list was null on retrieved record", entity.getPrincipals() );
189 assertEquals( "Principal list was incorrect length", 1, entity.getPrincipals().size() );
190 assertFalse( "Principal is active on saved record (after inactivation)", entity.getPrincipals().get(0).isActive() );
191 }
192
193 @Test
194 public void testInactivatePrincipalDelegations() {
195 EntityDefault entity = createTestingEntity();
196
197
198 String delegateMemberId = UUID.randomUUID().toString();
199 DelegateMemberBo delegateMemberBo = new DelegateMemberBo();
200 delegateMemberBo.setMemberId(entity.getPrincipals().get(0).getPrincipalId());
201 delegateMemberBo.setType(MemberType.PRINCIPAL);
202 delegateMemberBo.setDelegationMemberId(delegateMemberId);
203 KradDataServiceLocator.getDataObjectService().save(delegateMemberBo,PersistenceOption.FLUSH);
204
205
206 delegateMemberBo = KradDataServiceLocator.getDataObjectService().find(DelegateMemberBo.class, delegateMemberId);
207 assertNotNull( "Unable to find delegate member bo", delegateMemberBo);
208 assertTrue( "delegate member should be active", delegateMemberBo.isActive() );
209
210
211 IdentityManagementPersonDocument personDoc = initPersonDoc();
212
213 WorkflowDocument document = WorkflowDocumentFactory.createDocument(adminPerson.getPrincipalId(),"TestDocumentType");
214 DocumentHeader documentHeader = new DocumentHeader();
215 documentHeader.setWorkflowDocument(document);
216 documentHeader.setDocumentNumber(document.getDocumentId());
217 personDoc.setDocumentHeader(documentHeader);
218
219 personDoc.setActive(false);
220 uiDocumentService.saveEntityPerson(personDoc);
221
222 delegateMemberBo = KradDataServiceLocator.getDataObjectService().find(DelegateMemberBo.class, delegateMemberId);
223 assertNotNull( "Unable to find delegate member bo", delegateMemberBo);
224 assertFalse( "delegate member should be inactive: " + delegateMemberBo, delegateMemberBo.isActive() );
225 }
226
227 @Test
228 public void testSaveToEntity() {
229 Person adminPerson = KimApiServiceLocator.getPersonService().getPersonByPrincipalName("admin");
230 IdentityManagementPersonDocument personDoc = initPersonDoc();
231
232 WorkflowDocument document = WorkflowDocumentFactory.createDocument(adminPerson.getPrincipalId(),"TestDocumentType");
233 DocumentHeader documentHeader = new DocumentHeader();
234 documentHeader.setWorkflowDocument(document);
235 documentHeader.setDocumentNumber(document.getDocumentId());
236 personDoc.setDocumentHeader(documentHeader);
237
238 uiDocumentService.saveEntityPerson(personDoc);
239
240 Entity entity = KimApiServiceLocator.getIdentityService().getEntity(personDoc.getEntityId());
241 EntityTypeContactInfo entityType = entity.getEntityTypeContactInfos().get(0);
242 personDoc.getExternalIdentifiers();
243 assertAddressTrue(personDoc.getAddrs().get(0), entityType.getAddresses().get(0));
244 assertPhoneTrue(personDoc.getPhones().get(0), entityType.getPhoneNumbers().get(0));
245 assertEmailTrue(personDoc.getEmails().get(0), entityType.getEmailAddresses().get(0));
246 assertNameTrue(personDoc.getNames().get(0), entity.getNames().get(0));
247 assertPrincipalTrue(personDoc, entity.getPrincipals().get(0));
248
249 assertAffiliationTrue(personDoc.getAffiliations().get(0), entity.getAffiliations().get(0));
250 assertEmpInfoTrue(personDoc.getAffiliations().get(0).getEmpInfos().get(0), entity.getEmploymentInformation().get(0));
251
252
253
254 uiDocumentService.saveEntityPerson(personDoc);
255 Entity entity2 = ((IdentityService) KIMServiceLocatorInternal.getService("kimIdentityDelegateService")).getEntity(
256 personDoc.getEntityId());
257 EntityTypeContactInfo entityType2 = entity2.getEntityTypeContactInfos().get(0);
258 personDoc.getExternalIdentifiers();
259 assertAddressTrue(personDoc.getAddrs().get(0), entityType2.getAddresses().get(0));
260 assertPhoneTrue(personDoc.getPhones().get(0), entityType2.getPhoneNumbers().get(0));
261 assertEmailTrue(personDoc.getEmails().get(0), entityType2.getEmailAddresses().get(0));
262 assertNameTrue(personDoc.getNames().get(0), entity2.getNames().get(0));
263 assertPrincipalTrue(personDoc, entity2.getPrincipals().get(0));
264
265
266
267
268
269
270
271
272
273
274
275
276
277 }
278
279 @Test
280 public void testLoadToPersonDocument() {
281
282 Entity entity = KimApiServiceLocator.getIdentityService().getEntity("entity123eId");
283 assertNotNull(entity);
284 IdentityManagementPersonDocument personDoc = new IdentityManagementPersonDocument();
285 uiDocumentService.loadEntityToPersonDoc(personDoc, "entity123pId");
286 EntityTypeContactInfo entityType = entity.getEntityTypeContactInfos().get(0);
287 personDoc.getExternalIdentifiers();
288 assertAddressTrue(personDoc.getAddrs().get(0), entityType.getAddresses().get(0));
289 assertPhoneTrue(personDoc.getPhones().get(0), entityType.getPhoneNumbers().get(0));
290 assertEmailTrue(personDoc.getEmails().get(0), entityType.getEmailAddresses().get(0));
291 assertNameTrue(personDoc.getNames().get(0), entity.getNames().get(0));
292
293 assertAffiliationTrue(personDoc.getAffiliations().get(0), entity.getAffiliations().get(0));
294 assertEmpInfoTrue(personDoc.getAffiliations().get(0).getEmpInfos().get(0), entity.getEmploymentInformation().get(0));
295
296 }
297
298
299 @Test
300 public void testSetAttributeEntry() throws Exception {
301 PersonDocumentRole personDocRole = initPersonDocRole();
302 KimTypeService kimTypeService = (DataDictionaryTypeServiceBase) KIMServiceLocatorInternal.getService(personDocRole.getKimRoleType().getServiceName());
303 personDocRole.setDefinitions(kimTypeService.getAttributeDefinitions(personDocRole.getKimTypeId()));
304
305 personDocRole.setAttributeEntry( uiDocumentService.getAttributeEntries( personDocRole.getDefinitions() ) );
306 for (Object key : personDocRole.getAttributeEntry().keySet()) {
307 if (key.equals(KimConstants.AttributeConstants.NAMESPACE_CODE)) {
308 Map value = (Map)personDocRole.getAttributeEntry().get(key);
309 assertEquals("Parameter Namespace Code", value.get("label"));
310 assertEquals("Nmspc Cd", value.get("shortLabel"));
311 assertEquals(new Integer(20), value.get("maxLength"));
312 } else if (key.equals("campusCode")) {
313 Map value = (Map)personDocRole.getAttributeEntry().get(key);
314 assertEquals("Campus Code", value.get("label"));
315 assertEquals("Campus Code", value.get("shortLabel"));
316 assertEquals(new Integer(2), value.get("maxLength"));
317 } else {
318 assertFalse("Should not have this key "+key, true);
319 }
320 }
321 }
322
323 private PersonDocumentRole initPersonDocRole() throws Exception {
324
325
326
327 PersonDocumentRole docRole = new PersonDocumentRole();
328 docRole.setKimTypeId("roleType1");
329 docRole.setRoleId("r1");
330 KimTypeBo kimType = new KimTypeBo();
331 kimType.setId("roleType1");
332 kimType.setServiceName("kimRoleTypeService");
333 List<KimTypeAttributeBo> attributeDefinitions = new ArrayList<KimTypeAttributeBo>();
334 KimTypeAttributeBo attr1 = KradDataServiceLocator.getDataObjectService().find(KimTypeAttributeBo.class, "kimAttr3");
335
336
337
338
339
340 attributeDefinitions.add(attr1);
341
342
343
344
345
346 KimTypeAttributeBo attr2 = KradDataServiceLocator.getDataObjectService().find(KimTypeAttributeBo.class, "kimAttr4");
347
348 attributeDefinitions.add(attr2);
349 kimType.setAttributeDefinitions(attributeDefinitions);
350
351 Field fld = PersonDocumentRole.class.getDeclaredField("kimRoleType");
352 fld.setAccessible(true);
353 fld.set(docRole, kimType);
354
355 return docRole;
356 }
357
358
359 private IdentityManagementPersonDocument initPersonDoc() {
360 IdentityManagementPersonDocument personDoc = new IdentityManagementPersonDocument();
361 personDoc.setEntityId("ent123");
362 personDoc.setDocumentNumber("1");
363 personDoc.setPrincipalId("pid123");
364 personDoc.setPrincipalName("test");
365
366 personDoc.setAffiliations(initAffiliations());
367 personDoc.setNames(initNames());
368 personDoc.setAddrs(initAddresses());
369
370
371 personDoc.setPhones(initPhones());
372 personDoc.setEmails(initEmails());
373 return personDoc;
374 }
375
376 private List<PersonDocumentName> initNames() {
377 List<PersonDocumentName> docNames = new ArrayList<PersonDocumentName>();
378 PersonDocumentName docName = new PersonDocumentName();
379 docName.setEntityNameId("nameId123");
380 docName.setNameCode("PRFR");
381 docName.setEntityNameType(
382 EntityNameTypeBo.from(KimApiServiceLocator.getIdentityService().getNameType("PRFR")));
383 docName.setFirstName("John");
384 docName.setLastName("Doe");
385 docName.setMiddleName("M");
386 docName.setNamePrefix("Mr");
387 docName.setNameSuffix("Jr");
388 docName.setActive(true);
389 docName.setDflt(true);
390 docNames.add(docName);
391 return docNames;
392 }
393
394 private List<PersonDocumentAffiliation> initAffiliations() {
395 List<PersonDocumentAffiliation> docAffiliations = new ArrayList<PersonDocumentAffiliation>();
396 PersonDocumentAffiliation docAffiliation = new PersonDocumentAffiliation();
397 docAffiliation.setAffiliationTypeCode("FCLTY");
398 docAffiliation.setAffiliationType(
399 EntityAffiliationTypeBo.from(KimApiServiceLocator.getIdentityService().getAffiliationType("FCLTY")));
400 docAffiliation.setEntityAffiliationId("aflID123");
401 docAffiliation.setCampusCode("BL");
402 docAffiliation.setActive(true);
403 docAffiliation.setDflt(true);
404
405
406 docAffiliations.add(docAffiliation);
407 List<PersonDocumentEmploymentInfo> docEmploymentInformations = new ArrayList<PersonDocumentEmploymentInfo>();
408 PersonDocumentEmploymentInfo docEmpInfo = new PersonDocumentEmploymentInfo();
409 docEmpInfo.setEmployeeId("12345");
410 docEmpInfo.setEntityAffiliationId(docAffiliation.getEntityAffiliationId());
411 docEmpInfo.setEntityEmploymentId("empId123");
412 docEmpInfo.setEmploymentRecordId("1");
413 docEmpInfo.setBaseSalaryAmount(new KualiDecimal(8000));
414 docEmpInfo.setPrimaryDepartmentCode("BL-CHEM");
415 docEmpInfo.setEmploymentStatusCode("A");
416 docEmpInfo.setEmploymentTypeCode("P");
417 docEmpInfo.setActive(true);
418 docEmploymentInformations.add(docEmpInfo);
419 docAffiliation.setEmpInfos(docEmploymentInformations);
420
421 return docAffiliations;
422
423 }
424
425 private PersonDocumentPrivacy initPrivacyReferences(EntityPrivacyPreferencesBo privacyPreferences) {
426 PersonDocumentPrivacy docPrivacy = new PersonDocumentPrivacy();
427 docPrivacy.setSuppressAddress(true);
428 docPrivacy.setSuppressEmail(false);
429 docPrivacy.setSuppressName(false);
430 docPrivacy.setSuppressPhone(false);
431 docPrivacy.setSuppressPersonal(true);
432 return docPrivacy;
433 }
434 private List<PersonDocumentPhone> initPhones() {
435 List<PersonDocumentPhone> docPhones = new ArrayList<PersonDocumentPhone>();
436 PersonDocumentPhone docPhone = new PersonDocumentPhone();
437 docPhone.setPhoneTypeCode("HM");
438 docPhone.setPhoneType(EntityPhoneTypeBo.from(KimApiServiceLocator.getIdentityService().getPhoneType("HM")));
439 docPhone.setEntityPhoneId("phoneId123");
440 docPhone.setEntityTypeCode("PERSON");
441 docPhone.setPhoneNumber("123-45'6789");
442 docPhone.setExtensionNumber("123");
443 docPhone.setActive(true);
444 docPhone.setDflt(true);
445 docPhones.add(docPhone);
446 return docPhones;
447
448 }
449
450 private List<PersonDocumentEmail> initEmails() {
451 List<PersonDocumentEmail> emails = new ArrayList<PersonDocumentEmail>();
452 PersonDocumentEmail docEmail = new PersonDocumentEmail();
453
454 docEmail.setEntityEmailId("emailId123");
455 docEmail.setEntityTypeCode("PERSON");
456 docEmail.setEmailTypeCode("HM");
457 docEmail.setEmailType(
458 EntityEmailTypeBo.from(KimApiServiceLocator.getIdentityService().getEmailType("HM")));
459 docEmail.setEmailAddress("test@abc.com");
460 docEmail.setActive(true);
461 docEmail.setDflt(true);
462 emails.add(docEmail);
463 return emails;
464 }
465
466 private List<PersonDocumentAddress> initAddresses() {
467 List<PersonDocumentAddress> docAddresses = new ArrayList<PersonDocumentAddress>();
468 PersonDocumentAddress docAddress = new PersonDocumentAddress();
469 docAddress.setEntityTypeCode("PERSON");
470 docAddress.setEntityAddressId("addrId123");
471 docAddress.setAddressTypeCode("HM");
472 docAddress.setAddressType(EntityAddressTypeBo.from(KimApiServiceLocator.getIdentityService().getAddressType("HM")));
473 docAddress.setLine1("PO box 123");
474 docAddress.setStateProvinceCode("IN");
475 docAddress.setPostalCode("46123");
476 docAddress.setCountryCode("US");
477 docAddress.setCity("Indianapolis");
478 docAddress.setActive(true);
479 docAddress.setDflt(true);
480 docAddresses.add(docAddress);
481 return docAddresses;
482 }
483
484
485
486 private void assertPrincipalTrue(IdentityManagementPersonDocument personDoc, PrincipalContract principal) {
487 assertEquals(personDoc.getPrincipalId(), principal.getPrincipalId());
488 assertEquals(personDoc.getPrincipalName(), principal.getPrincipalName());
489 }
490
491 private void assertAddressTrue(PersonDocumentAddress docAddress, EntityAddressContract entityAddress) {
492
493 assertEquals(docAddress.getAddressTypeCode(), entityAddress.getAddressType().getCode());
494 assertEquals(docAddress.getCountryCode(), entityAddress.getCountryCode());
495 assertEquals(docAddress.getLine1(), entityAddress.getLine1());
496 assertEquals(docAddress.getCity(), entityAddress.getCity());
497 assertEquals(docAddress.getPostalCode(), entityAddress.getPostalCode());
498 assertEquals(docAddress.getStateProvinceCode(), entityAddress.getStateProvinceCode());
499 }
500
501 private void assertEmailTrue(PersonDocumentEmail docEmail, EntityEmailContract entityEmail) {
502 assertEquals(docEmail.getEntityEmailId(), entityEmail.getId());
503 assertEquals(docEmail.getEmailAddress(), entityEmail.getEmailAddressUnmasked());
504 assertEquals(docEmail.getEmailTypeCode(), entityEmail.getEmailType().getCode());
505 }
506
507 private void assertPhoneTrue(PersonDocumentPhone docPhone, EntityPhoneContract entityPhone) {
508 assertEquals(docPhone.getEntityPhoneId(), entityPhone.getId());
509 assertEquals(docPhone.getCountryCode(), entityPhone.getCountryCode());
510 assertEquals(docPhone.getPhoneNumber(), entityPhone.getPhoneNumber());
511 assertEquals(docPhone.getExtensionNumber(), entityPhone.getExtensionNumber());
512 assertEquals(docPhone.getPhoneTypeCode(), entityPhone.getPhoneType().getCode());
513 }
514
515 private void assertNameTrue(PersonDocumentName docName, EntityNameContract entityName) {
516 assertEquals(docName.getEntityNameId(), entityName.getId());
517 assertEquals(docName.getFirstName(), entityName.getFirstName());
518 assertEquals(docName.getLastName(), entityName.getLastName());
519 assertEquals(docName.getNameCode(), entityName.getNameType().getCode());
520 assertEquals(docName.getNameSuffix(), entityName.getNameSuffix());
521 assertEquals(docName.getNamePrefix(), entityName.getNamePrefix());
522 }
523
524 private void assertAffiliationTrue(PersonDocumentAffiliation docAffln, EntityAffiliation entityAffln) {
525 assertEquals(docAffln.getAffiliationTypeCode(), entityAffln.getAffiliationType().getCode());
526 assertEquals(docAffln.getCampusCode(), entityAffln.getCampusCode());
527 assertEquals(docAffln.getEntityAffiliationId(), entityAffln.getId());
528 }
529
530 private void assertEmpInfoTrue(PersonDocumentEmploymentInfo docEmpInfo, EntityEmploymentContract entityEmpInfo) {
531 assertEquals(docEmpInfo.getEmployeeId(), entityEmpInfo.getEmployeeId());
532 assertEquals(docEmpInfo.getEmploymentTypeCode(), entityEmpInfo.getEmployeeType().getCode());
533 assertEquals(docEmpInfo.getEmploymentStatusCode(), entityEmpInfo.getEmployeeStatus().getCode());
534 assertEquals(docEmpInfo.getEmploymentRecordId(), entityEmpInfo.getEmploymentRecordId());
535 assertEquals(docEmpInfo.getBaseSalaryAmount(), entityEmpInfo.getBaseSalaryAmount());
536 }
537
538 @Test
539 public void test_KimDocumentRoleMember_copyProperties() {
540
541
542
543
544
545
546
547 DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
548 String ROLE_MEMBER_ID = "1";
549 String ROLE_ID = "23";
550 Map<String, String> ATTRIBUTES = new HashMap<String, String>();
551 String MEMBER_NAME = "WorkflowAdmin";
552 String MEMBER_NAMESPACE_CODE = "KR-WKFLW";
553 String MEMBER_ID = "1";
554 MemberType MEMBER_TYPE = MemberType.GROUP;
555 String ACTIVE_FROM_STRING = "2011-01-01 12:00:00";
556 DateTime ACTIVE_FROM = new DateTime(FORMATTER.parseDateTime(ACTIVE_FROM_STRING));
557 String ACTIVE_TO_STRING = "2115-01-01 12:00:00";
558 DateTime ACTIVE_TO = new DateTime(FORMATTER.parseDateTime(ACTIVE_TO_STRING));
559 String OBJ_ID = "123";
560 long VER_NUM = 4;
561
562 KimDocumentRoleMember newKimDocumentRoleMember = new KimDocumentRoleMember();
563
564 RoleMemberContract rmc = RoleMember.Builder.create(ROLE_ID, ROLE_MEMBER_ID, MEMBER_ID, MEMBER_TYPE, ACTIVE_FROM,
565 ACTIVE_TO, ATTRIBUTES, MEMBER_NAME, MEMBER_NAMESPACE_CODE).build();
566 RoleMember rm = RoleMember.Builder.create(rmc).build();
567 RoleMemberBo roleMemberBo = RoleMemberBo.from(rm);
568 roleMemberBo.setObjectId(OBJ_ID);
569 roleMemberBo.setVersionNumber(VER_NUM);
570
571 KimDocumentRoleMember.copyProperties(newKimDocumentRoleMember, roleMemberBo);
572
573 assertTrue("newKimDocumentRoleMember should have a roleId of " + ROLE_ID,
574 newKimDocumentRoleMember.getRoleId().equals(ROLE_ID));
575 assertTrue("newKimDocumentRoleMember should have a MemberId of " + MEMBER_ID,
576 newKimDocumentRoleMember.getMemberId().equals(MEMBER_ID));
577 assertTrue("newKimDocumentRoleMember should have a MemberName of " + MEMBER_NAME,
578 newKimDocumentRoleMember.getMemberName().equals(MEMBER_NAME));
579 assertTrue("newKimDocumentRoleMember should have a MemberNamespaceCode of " + MEMBER_NAMESPACE_CODE,
580 newKimDocumentRoleMember.getMemberNamespaceCode().equals(MEMBER_NAMESPACE_CODE));
581 assertTrue("newKimDocumentRoleMember should be active.",
582 newKimDocumentRoleMember.isActive());
583 assertTrue("newKimDocumentRoleMember should have a ActiveToDate of " + MEMBER_NAMESPACE_CODE,
584 newKimDocumentRoleMember.getActiveToDate().equals(roleMemberBo.getActiveToDateValue()));
585 assertTrue("newKimDocumentRoleMember should have a ActiveFromDate of " + ACTIVE_FROM_STRING,
586 newKimDocumentRoleMember.getActiveFromDate().equals(roleMemberBo.getActiveFromDateValue()));
587 assertTrue("newKimDocumentRoleMember should have a VersionNumber of " + VER_NUM,
588 newKimDocumentRoleMember.getVersionNumber().equals(VER_NUM));
589 assertTrue("newKimDocumentRoleMember should have a ObjectId of " + OBJ_ID,
590 newKimDocumentRoleMember.getObjectId().equals(OBJ_ID));
591
592 Class<?> c = newKimDocumentRoleMember.getClass();
593 Field[] fields = c.getDeclaredFields();
594 List<Field> fieldsList = Arrays.asList(fields);
595
596 int numberOfFieldsInKimDocumentRoleMember = 11;
597 assertTrue("KimDocumentRoleMember.copyProperties may need to be updated if the number of fields"
598 + "in KimDocumentRoleMember does not equal " + numberOfFieldsInKimDocumentRoleMember + ". Size is " +
599 fieldsList.size(), fieldsList.size() == numberOfFieldsInKimDocumentRoleMember);
600 }
601 }