Skip to content

Commit 2d83c8f

Browse files
authored
Merge pull request #5316 from jay-hodgson/SWC-6712
SWC-6712
2 parents a8b91d4 + 2120c78 commit 2d83c8f

File tree

5 files changed

+91
-44
lines changed

5 files changed

+91
-44
lines changed

src/main/java/org/sagebionetworks/web/client/widget/team/BigTeamBadge.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,21 @@ public void onSuccess(String teamIconUrl) {
6868
}
6969
}
7070

71-
private void setViewTeam(
71+
public void setViewTeam(
7272
Team team,
7373
String description,
7474
TeamMembershipStatus teamMembershipStatus,
7575
String teamIconUrl
7676
) {
7777
view.setTeam(team, description, teamIconUrl);
7878
boolean canSendEmail =
79-
teamMembershipStatus != null && teamMembershipStatus.getCanSendEmail();
80-
view.setTeamEmailAddress(getTeamEmail(team.getName(), canSendEmail));
79+
teamMembershipStatus != null &&
80+
teamMembershipStatus.getCanSendEmail() &&
81+
authController.isLoggedIn();
82+
view.setTeamEmailVisible(canSendEmail);
83+
if (canSendEmail) {
84+
view.setTeamEmailAddress(getTeamEmail(team.getName()));
85+
}
8186
}
8287

8388
public void configure(final String teamId) {
@@ -121,12 +126,8 @@ public void setHeight(String height) {
121126
view.setHeight(height);
122127
}
123128

124-
public String getTeamEmail(String teamName, boolean canSendEmail) {
125-
if (authController.isLoggedIn() && canSendEmail) {
126-
// strip out any non-word character. Not a (letter, number, underscore)
127-
return teamName.replaceAll("\\W", "") + "@synapse.org";
128-
} else {
129-
return "";
130-
}
129+
public String getTeamEmail(String teamName) {
130+
// strip out any non-word character. Not a (letter, number, underscore)
131+
return teamName.replaceAll("\\W", "") + "@synapse.org";
131132
}
132133
}

src/main/java/org/sagebionetworks/web/client/widget/team/BigTeamBadgeView.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@ public interface BigTeamBadgeView extends IsWidget, SynapseView {
1717

1818
void setMemberCountWidget(IsWidget widget);
1919

20+
void setTeamEmailVisible(boolean visible);
2021
void setTeamEmailAddress(String teamEmail);
2122
}

src/main/java/org/sagebionetworks/web/client/widget/team/BigTeamBadgeViewImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ public interface Binder extends UiBinder<Widget, BigTeamBadgeViewImpl> {}
5454
@UiField
5555
TextBoxWithCopyToClipboardWidget synapseEmailField;
5656

57+
@UiField
58+
Div emailUI;
59+
5760
GlobalApplicationState globalApplicationState;
5861
IconsImageBundle iconsImageBundle;
5962
Linkify linkify;
@@ -152,6 +155,11 @@ public void setMemberCountWidget(IsWidget widget) {
152155
memberCountContainer.add(widget);
153156
}
154157

158+
@Override
159+
public void setTeamEmailVisible(boolean visible) {
160+
emailUI.setVisible(visible);
161+
}
162+
155163
@Override
156164
public void setTeamEmailAddress(String teamEmail) {
157165
synapseEmailField.setText(teamEmail);

src/main/resources/org/sagebionetworks/web/client/widget/team/BigTeamBadgeViewImpl.ui.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,16 @@
4646
<bh:Text>team members</bh:Text>
4747
</bh:Div>
4848
<bh:Div ui:field="descriptionContainer" marginTop="10" />
49-
<w:TextBoxWithCopyToClipboardWidget
50-
ui:field="synapseEmailField"
51-
addStyleNames="margin-top-10"
52-
/>
49+
<bh:Div ui:field="emailUI">
50+
<bh:Text>Team email list:</bh:Text>
51+
<w:TextBoxWithCopyToClipboardWidget
52+
ui:field="synapseEmailField"
53+
addStyleNames="margin-top-10 margin-left-5 margin-right-5"
54+
/>
55+
<bh:Italic>
56+
(note: all emails to this address sent to the entire team)
57+
</bh:Italic>
58+
</bh:Div>
5359
</bh:Span>
5460
</bh:Span>
5561
</bh:Div>

src/test/java/org/sagebionetworks/web/unitclient/widget/entity/team/BigTeamBadgeTest.java

Lines changed: 61 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.mockito.Mock;
1313
import org.mockito.runners.MockitoJUnitRunner;
1414
import org.sagebionetworks.repo.model.Team;
15+
import org.sagebionetworks.repo.model.TeamMembershipStatus;
1516
import org.sagebionetworks.web.client.SynapseJSNIUtils;
1617
import org.sagebionetworks.web.client.SynapseJavascriptClient;
1718
import org.sagebionetworks.web.client.security.AuthenticationController;
@@ -38,6 +39,9 @@ public class BigTeamBadgeTest {
3839
@Mock
3940
TeamMemberCountWidget mockTeamMemberCountWidget;
4041

42+
@Mock
43+
TeamMembershipStatus mockTeamMembershipStatus;
44+
4145
BigTeamBadge presenter;
4246

4347
@Mock
@@ -48,22 +52,20 @@ public class BigTeamBadgeTest {
4852

4953
@Before
5054
public void setUp() throws Exception {
51-
presenter =
52-
new BigTeamBadge(
53-
mockView,
54-
mockJsClient,
55-
mockJsniUtils,
56-
mockAuthenticationController,
57-
mockTeamMemberCountWidget
58-
);
55+
presenter = new BigTeamBadge(
56+
mockView,
57+
mockJsClient,
58+
mockJsniUtils,
59+
mockAuthenticationController,
60+
mockTeamMemberCountWidget
61+
);
62+
when(mockTeam.getName()).thenReturn("simpleteam");
5963
when(mockTeam.getDescription()).thenReturn(TEAM_DESCRIPTION);
6064
when(mockTeam.getIcon()).thenReturn("1111");
61-
AsyncMockStubber
62-
.callSuccessWith(TEAM_ICON_URL)
65+
AsyncMockStubber.callSuccessWith(TEAM_ICON_URL)
6366
.when(mockJsClient)
6467
.getTeamPicturePreviewURL(anyString(), any(AsyncCallback.class));
65-
AsyncMockStubber
66-
.callSuccessWith(mockTeam)
68+
AsyncMockStubber.callSuccessWith(mockTeam)
6769
.when(mockJsClient)
6870
.getTeam(anyString(), any(AsyncCallback.class));
6971
}
@@ -77,8 +79,7 @@ public void testConfigure() {
7779

7880
@Test
7981
public void testConfigureFailedToGetIcon() {
80-
AsyncMockStubber
81-
.callFailureWith(new Exception("failed"))
82+
AsyncMockStubber.callFailureWith(new Exception("failed"))
8283
.when(mockJsClient)
8384
.getTeamPicturePreviewURL(anyString(), any(AsyncCallback.class));
8485

@@ -89,33 +90,63 @@ public void testConfigureFailedToGetIcon() {
8990

9091
@Test
9192
public void testGetTeamEmail() {
92-
boolean canSendEmail = true;
93-
when(mockAuthenticationController.isLoggedIn()).thenReturn(true);
94-
assertEquals(
95-
96-
presenter.getTeamEmail("basic", canSendEmail)
97-
);
93+
assertEquals("[email protected]", presenter.getTeamEmail("basic"));
9894
assertEquals(
9995
100-
presenter.getTeamEmail("Standard Case Here", canSendEmail)
96+
presenter.getTeamEmail("Standard Case Here")
10197
);
10298
assertEquals(
10399
104-
presenter.getTeamEmail(" \n\r unlikely\t case ", canSendEmail)
100+
presenter.getTeamEmail(" \n\r unlikely\t case ")
105101
);
106102
assertEquals(
107103
108-
presenter.getTeamEmail(
109-
" %^$##* Another_Unlikely\t &*#$)(!!@~Case ",
110-
canSendEmail
111-
)
104+
presenter.getTeamEmail(" %^$##* Another_Unlikely\t &*#$)(!!@~Case ")
105+
);
106+
}
107+
108+
@Test
109+
public void testEmailVisible() {
110+
when(mockAuthenticationController.isLoggedIn()).thenReturn(true);
111+
when(mockTeamMembershipStatus.getCanSendEmail()).thenReturn(true);
112+
113+
presenter.setViewTeam(
114+
mockTeam,
115+
TEAM_DESCRIPTION,
116+
mockTeamMembershipStatus,
117+
TEAM_ICON_URL
112118
);
113119

114-
canSendEmail = false;
115-
assertEquals("", presenter.getTeamEmail("basic", canSendEmail));
120+
verify(mockView).setTeamEmailVisible(true);
121+
}
116122

117-
canSendEmail = true;
123+
@Test
124+
public void testEmailNotVisibleWhenAnonymous() {
118125
when(mockAuthenticationController.isLoggedIn()).thenReturn(false);
119-
assertEquals("", presenter.getTeamEmail("basic", canSendEmail));
126+
when(mockTeamMembershipStatus.getCanSendEmail()).thenReturn(true);
127+
128+
presenter.setViewTeam(
129+
mockTeam,
130+
TEAM_DESCRIPTION,
131+
mockTeamMembershipStatus,
132+
TEAM_ICON_URL
133+
);
134+
135+
verify(mockView).setTeamEmailVisible(false);
136+
}
137+
138+
@Test
139+
public void testEmailNotVisibleWhenUnauthorized() {
140+
when(mockAuthenticationController.isLoggedIn()).thenReturn(true);
141+
when(mockTeamMembershipStatus.getCanSendEmail()).thenReturn(false);
142+
143+
presenter.setViewTeam(
144+
mockTeam,
145+
TEAM_DESCRIPTION,
146+
mockTeamMembershipStatus,
147+
TEAM_ICON_URL
148+
);
149+
150+
verify(mockView).setTeamEmailVisible(false);
120151
}
121152
}

0 commit comments

Comments
 (0)