7
7
import static org .mockito .Mockito .verify ;
8
8
import static org .mockito .Mockito .when ;
9
9
10
+ import java .util .ArrayList ;
10
11
import java .util .Date ;
11
12
import java .util .List ;
12
13
13
14
import org .junit .Before ;
14
15
import org .junit .Test ;
15
16
import org .mockito .Mock ;
16
17
import org .mockito .MockitoAnnotations ;
18
+ import org .orcid .core .common .manager .EmailDomainManager ;
17
19
import org .orcid .core .manager .ProfileEntityCacheManager ;
18
20
import org .orcid .core .manager .v3 .impl .ProfileEmailDomainManagerImpl ;
19
21
import org .orcid .jaxb .model .v3 .release .common .Visibility ;
@@ -38,6 +40,9 @@ public class ProfileEmailDomainManagerTest {
38
40
39
41
@ Mock
40
42
private EmailDomainDao emailDomainDaoMock ;
43
+
44
+ @ Mock
45
+ private EmailDomainManager emailDomainManagerMock ;
41
46
42
47
ProfileEmailDomainManager pedm = new ProfileEmailDomainManagerImpl ();
43
48
@@ -56,6 +61,7 @@ public void before() {
56
61
TargetProxyHelper .injectIntoProxy (pedm , "profileEmailDomainDaoReadOnly" , profileEmailDomainDaoReadOnlyMock );
57
62
TargetProxyHelper .injectIntoProxy (pedm , "emailDomainDao" , emailDomainDaoMock );
58
63
TargetProxyHelper .injectIntoProxy (pedm , "profileEntityCacheManager" , profileEntityCacheManagerMock );
64
+ TargetProxyHelper .injectIntoProxy (pedm , "emailDomainManager" , emailDomainManagerMock );
59
65
60
66
ProfileEmailDomainEntity ped1 = new ProfileEmailDomainEntity ();
61
67
ProfileEmailDomainEntity ped2 = new ProfileEmailDomainEntity ();
@@ -72,7 +78,16 @@ public void before() {
72
78
ped3 .setEmailDomain (EMAIL_DOMAIN );
73
79
ped3 .setOrcid (ORCID_TWO );
74
80
ped3 .setVisibility (Visibility .PUBLIC .value ());
75
-
81
+
82
+ EmailDomainEntity e1 = new EmailDomainEntity ();
83
+ e1 .setEmailDomain (EMAIL_DOMAIN );
84
+ e1 .setCategory (DomainCategory .PROFESSIONAL );
85
+
86
+ EmailDomainEntity e2 = new EmailDomainEntity ();
87
+ e2 .setEmailDomain (EMAIL_DOMAIN_TWO );
88
+ e2 .setCategory (DomainCategory .PROFESSIONAL );
89
+
90
+
76
91
when (profileEmailDomainDaoReadOnlyMock .findByEmailDomain (eq (ORCID ), eq (EMAIL_DOMAIN ))).thenReturn (ped1 );
77
92
when (profileEmailDomainDaoReadOnlyMock .findByEmailDomain (eq (ORCID ), eq (EMAIL_DOMAIN_TWO ))).thenReturn (ped2 );
78
93
when (profileEmailDomainDaoReadOnlyMock .findByEmailDomain (eq (ORCID_TWO ), eq (EMAIL_DOMAIN ))).thenReturn (ped3 );
@@ -87,6 +102,9 @@ public void before() {
87
102
when (profileEmailDomainDaoMock .addEmailDomain (eq (ORCID ), eq (EMAIL_DOMAIN_TWO ), eq (Visibility .LIMITED .value ()))).thenReturn (ped2 );
88
103
89
104
when (profileEmailDomainDaoMock .updateVisibility (eq (ORCID ), eq (EMAIL_DOMAIN_TWO ), eq (Visibility .LIMITED .value ()))).thenReturn (true );
105
+
106
+ when (emailDomainManagerMock .findByEmailDomain (eq (EMAIL_DOMAIN ))).thenReturn (List .of (e1 ));
107
+ when (emailDomainManagerMock .findByEmailDomain (eq (EMAIL_DOMAIN_TWO ))).thenReturn (List .of (e2 ));
90
108
91
109
ProfileEntity profile = new ProfileEntity ();
92
110
profile .setActivitiesVisibilityDefault (Visibility .PUBLIC .value ());
@@ -108,15 +126,15 @@ public void processDomain_domainAlreadyAdded() {
108
126
EmailDomainEntity professionalEmailDomain = new EmailDomainEntity ();
109
127
professionalEmailDomain .setCategory (DomainCategory .PROFESSIONAL );
110
128
professionalEmailDomain .setEmailDomain (EMAIL_DOMAIN );
111
- when (emailDomainDaoMock .findByEmailDomain (eq (EMAIL_DOMAIN ))).thenReturn (List .of (professionalEmailDomain ));
129
+ when (emailDomainManagerMock .findByEmailDomain (eq (EMAIL_DOMAIN ))).thenReturn (List .of (professionalEmailDomain ));
112
130
pedm .processDomain (ORCID , "email@orcid.org" );
113
131
verify (profileEmailDomainDaoReadOnlyMock , times (1 )).findByEmailDomain (eq (ORCID ), eq (EMAIL_DOMAIN ));
114
132
verify (profileEmailDomainDaoMock , never ()).addEmailDomain (anyString (), anyString (), anyString ());
115
133
}
116
134
117
135
@ Test
118
136
public void processDomain_doNotAddUnknownDomain () {
119
- when (emailDomainDaoMock .findByEmailDomain (eq (EMAIL_DOMAIN ))).thenReturn (null );
137
+ when (emailDomainManagerMock .findByEmailDomain (eq (EMAIL_DOMAIN ))).thenReturn (null );
120
138
pedm .processDomain (ORCID , "email@orcid.org" );
121
139
verify (profileEmailDomainDaoReadOnlyMock , never ()).findByEmailDomain (anyString (), anyString ());
122
140
verify (profileEmailDomainDaoMock , never ()).addEmailDomain (anyString (), anyString (), anyString ());
@@ -127,7 +145,7 @@ public void processDomain_doNotAddPersonalDomain() {
127
145
EmailDomainEntity professionalEmailDomain = new EmailDomainEntity ();
128
146
professionalEmailDomain .setCategory (DomainCategory .PERSONAL );
129
147
professionalEmailDomain .setEmailDomain (EMAIL_DOMAIN );
130
- when (emailDomainDaoMock .findByEmailDomain (eq (EMAIL_DOMAIN ))).thenReturn (List .of (professionalEmailDomain ));
148
+ when (emailDomainManagerMock .findByEmailDomain (eq (EMAIL_DOMAIN ))).thenReturn (List .of (professionalEmailDomain ));
131
149
pedm .processDomain (ORCID , "email@orcid.org" );
132
150
verify (profileEmailDomainDaoReadOnlyMock , never ()).findByEmailDomain (anyString (), anyString ());
133
151
verify (profileEmailDomainDaoMock , never ()).addEmailDomain (anyString (), anyString (), anyString ());
@@ -138,15 +156,15 @@ public void processDomain_addDomain() {
138
156
EmailDomainEntity professionalEmailDomain = new EmailDomainEntity ();
139
157
professionalEmailDomain .setCategory (DomainCategory .PROFESSIONAL );
140
158
professionalEmailDomain .setEmailDomain (EMAIL_DOMAIN_THREE );
141
- when (emailDomainDaoMock .findByEmailDomain (eq (EMAIL_DOMAIN_THREE ))).thenReturn (List .of (professionalEmailDomain ));
159
+ when (emailDomainManagerMock .findByEmailDomain (eq (EMAIL_DOMAIN_THREE ))).thenReturn (List .of (professionalEmailDomain ));
142
160
pedm .processDomain (ORCID , "email@domain.net" );
143
161
verify (profileEmailDomainDaoReadOnlyMock , times (1 )).findByEmailDomain (eq (ORCID ), eq (EMAIL_DOMAIN_THREE ));
144
162
verify (profileEmailDomainDaoMock , times (1 )).addEmailDomain (ORCID , EMAIL_DOMAIN_THREE , Visibility .PUBLIC .value ());
145
163
}
146
164
147
165
@ Test (expected = IllegalArgumentException .class )
148
166
public void updateEmailDomains_nullOrcid () {
149
- pedm .updateEmailDomains (null , new org .orcid .pojo .ajaxForm .Emails ());
167
+ pedm .updateEmailDomains (null , new org .orcid .pojo .ajaxForm .Emails (), new org . orcid . jaxb . model . v3 . release . record . Emails () );
150
168
}
151
169
152
170
@ Test
@@ -159,7 +177,18 @@ public void updateEmailDomains_updateVisibility() {
159
177
ed2 .setVisibility (Visibility .PRIVATE .value ());
160
178
ed2 .setValue (EMAIL_DOMAIN_TWO );
161
179
emails .setEmailDomains (List .of (ed1 , ed2 ));
162
- pedm .updateEmailDomains (ORCID , emails );
180
+
181
+ //current emails
182
+ org .orcid .jaxb .model .v3 .release .record .Emails recordEmails = new org .orcid .jaxb .model .v3 .release .record .Emails ();
183
+ org .orcid .jaxb .model .v3 .release .record .Email email1 = new org .orcid .jaxb .model .v3 .release .record .Email ();
184
+ email1 .setEmail ("one@" + EMAIL_DOMAIN );
185
+ email1 .setVerified (true );
186
+ org .orcid .jaxb .model .v3 .release .record .Email email2 = new org .orcid .jaxb .model .v3 .release .record .Email ();
187
+ email2 .setEmail ("two@" + EMAIL_DOMAIN_TWO );
188
+ email2 .setVerified (true );
189
+ recordEmails .setEmails (List .of (email1 , email2 ));
190
+ pedm .updateEmailDomains (ORCID , emails , recordEmails );
191
+
163
192
verify (profileEmailDomainDaoMock , times (1 )).updateVisibility (ORCID , EMAIL_DOMAIN , Visibility .LIMITED .value ());
164
193
verify (profileEmailDomainDaoMock , times (1 )).updateVisibility (ORCID , EMAIL_DOMAIN_TWO , Visibility .PRIVATE .value ());
165
194
verify (profileEmailDomainDaoMock , never ()).removeEmailDomain (anyString (), anyString ());
@@ -173,7 +202,13 @@ public void updateEmailDomains_makeNoChanges() {
173
202
ed1 .setVisibility (Visibility .PUBLIC .value ());
174
203
ed1 .setValue (EMAIL_DOMAIN );
175
204
emails .setEmailDomains (List .of (ed1 ));
176
- pedm .updateEmailDomains (ORCID_TWO , emails );
205
+ //current emails
206
+ org .orcid .jaxb .model .v3 .release .record .Emails recordEmails = new org .orcid .jaxb .model .v3 .release .record .Emails ();
207
+ org .orcid .jaxb .model .v3 .release .record .Email email1 = new org .orcid .jaxb .model .v3 .release .record .Email ();
208
+ email1 .setEmail ("one@" + EMAIL_DOMAIN );
209
+ email1 .setVerified (true );
210
+ recordEmails .setEmails (List .of (email1 ));
211
+ pedm .updateEmailDomains (ORCID_TWO , emails , recordEmails );
177
212
verify (profileEmailDomainDaoMock , never ()).updateVisibility (anyString (), anyString (), anyString ());
178
213
verify (profileEmailDomainDaoMock , never ()).removeEmailDomain (anyString (), anyString ());
179
214
}
@@ -182,7 +217,7 @@ public void updateEmailDomains_makeNoChanges() {
182
217
public void updateEmailDomains_removeDomain () {
183
218
org .orcid .pojo .ajaxForm .Emails emails = new org .orcid .pojo .ajaxForm .Emails ();
184
219
emails .setEmailDomains (List .of (new ProfileEmailDomain ()));
185
- pedm .updateEmailDomains (ORCID , emails );
220
+ pedm .updateEmailDomains (ORCID , emails , new org . orcid . jaxb . model . v3 . release . record . Emails () );
186
221
verify (profileEmailDomainDaoMock , never ()).updateVisibility (anyString (), anyString (), anyString ());
187
222
verify (profileEmailDomainDaoMock , times (1 )).removeEmailDomain (ORCID , EMAIL_DOMAIN );
188
223
verify (profileEmailDomainDaoMock , times (1 )).removeEmailDomain (ORCID , EMAIL_DOMAIN_TWO );
0 commit comments