Skip to content

Commit

Permalink
Testing getMember
Browse files Browse the repository at this point in the history
  • Loading branch information
rladdusaw committed Dec 11, 2019
1 parent 267c533 commit 27d9c52
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ private String getCardType(GHIssue content) throws IOException {
return label == null ? null : label.getName();
}

private Member getMember(GHUser user) throws IOException {
Member getMember(GHUser user) throws IOException {
Member member;
String memberId = String.valueOf(user.getId());
Optional<Member> cachedMember = getCachedMember(memberId);
Expand Down
122 changes: 84 additions & 38 deletions src/test/java/edu/tamu/app/service/manager/GitHubServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import static edu.tamu.app.service.manager.GitHubService.ISSUE_LABEL;
import static edu.tamu.app.service.manager.GitHubService.REQUEST_LABEL;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
Expand All @@ -33,6 +34,7 @@
import org.kohsuke.github.GHProjectCard;
import org.kohsuke.github.GHProjectColumn;
import org.kohsuke.github.GHRepository;
import org.kohsuke.github.GHUser;
import org.kohsuke.github.GitHub;
import org.kohsuke.github.PagedIterable;
import org.mockito.Mockito;
Expand Down Expand Up @@ -64,9 +66,12 @@ public class GitHubServiceTest extends CacheMockTests {
private static final String TEST_UNUSED_LABEL_NAME = "unused";
private static final String TEST_FEATURE_REQUEST_TITLE = "Feature request";
private static final String TEST_FEATURE_REQUEST_DESCRIPTION = "Description of feature request";
private static final Long TEST_REPOSITORY1_ID = 1L;
private static final Long TEST_REPOSITORY2_ID = 2L;

private static final String TEST_USER1_NAME = "User 1 name";
private static final String TEST_USER1_AVATAR_PATH = "http://example.com/avatar.jpg";
private static final Long TEST_REPOSITORY1_ID = 1L;
private static final Long TEST_REPOSITORY2_ID = 2L;
private static final Long TEST_USER1_ID = 3L;

private static final GHLabel TEST_LABEL1 = mock(GHLabel.class);
private static final GHLabel TEST_LABEL2 = mock(GHLabel.class);
private static final GHLabel TEST_LABEL3 = mock(GHLabel.class);
Expand All @@ -75,6 +80,11 @@ public class GitHubServiceTest extends CacheMockTests {

private static final GHIssue TEST_ISSUE = mock(GHIssue.class);

private static final GHUser TEST_USER1 = mock(GHUser.class);
private static final GHUser TEST_USER2 = mock(GHUser.class);
private static final GHUser TEST_USER3 = mock(GHUser.class);
private static final GHUser TEST_USER4 = mock(GHUser.class);

private static final GHProjectCard TEST_CARD1 = mock(GHProjectCard.class, RETURNS_DEEP_STUBS.get());
private static final GHProjectCard TEST_CARD2 = mock(GHProjectCard.class, RETURNS_DEEP_STUBS.get());
private static final GHProjectCard TEST_CARD3 = mock(GHProjectCard.class, RETURNS_DEEP_STUBS.get());
Expand All @@ -97,33 +107,45 @@ public class GitHubServiceTest extends CacheMockTests {
private static final FeatureRequest TEST_FEATURE_REQUEST = mock(FeatureRequest.class);

private static final List<GHLabel> ALL_TEST_LABELS = new ArrayList<GHLabel>(
Arrays.asList(new GHLabel[] { TEST_LABEL1, TEST_LABEL2, TEST_LABEL3, TEST_LABEL4, TEST_LABEL5 }));
private static final List<GHLabel> TEST_CARD1_LABELS = new ArrayList<GHLabel>(Arrays.asList(new GHLabel[] { TEST_LABEL1, TEST_LABEL5 }));
private static final List<GHLabel> TEST_CARD2_LABELS = new ArrayList<GHLabel>(Arrays.asList(new GHLabel[] { TEST_LABEL2, TEST_LABEL5 }));
private static final List<GHLabel> TEST_CARD3_LABELS = new ArrayList<GHLabel>(Arrays.asList(new GHLabel[] { TEST_LABEL3, TEST_LABEL5 }));
private static final List<GHLabel> TEST_CARD4_LABELS = new ArrayList<GHLabel>(Arrays.asList(new GHLabel[] { TEST_LABEL4 }));
private static final List<GHLabel> TEST_CARD5_LABELS = new ArrayList<GHLabel>(Arrays.asList(new GHLabel[] { TEST_LABEL5 }));
Arrays.asList(new GHLabel[] { TEST_LABEL1, TEST_LABEL2, TEST_LABEL3, TEST_LABEL4, TEST_LABEL5 }));
private static final List<GHLabel> TEST_CARD1_LABELS = new ArrayList<GHLabel>(
Arrays.asList(new GHLabel[] { TEST_LABEL1, TEST_LABEL5 }));
private static final List<GHLabel> TEST_CARD2_LABELS = new ArrayList<GHLabel>(
Arrays.asList(new GHLabel[] { TEST_LABEL2, TEST_LABEL5 }));
private static final List<GHLabel> TEST_CARD3_LABELS = new ArrayList<GHLabel>(
Arrays.asList(new GHLabel[] { TEST_LABEL3, TEST_LABEL5 }));
private static final List<GHLabel> TEST_CARD4_LABELS = new ArrayList<GHLabel>(
Arrays.asList(new GHLabel[] { TEST_LABEL4 }));
private static final List<GHLabel> TEST_CARD5_LABELS = new ArrayList<GHLabel>(
Arrays.asList(new GHLabel[] { TEST_LABEL5 }));

private static final List<GHUser> TEST_USERS1 = new ArrayList<GHUser>(Arrays.asList(new GHUser[] { TEST_USER1 }));
private static final List<GHUser> TEST_USERS2 = new ArrayList<GHUser>(
Arrays.asList(new GHUser[] { TEST_USER1, TEST_USER2 }));
private static final List<GHUser> TEST_USERS3 = new ArrayList<GHUser>(Arrays.asList(new GHUser[] {}));
private static final List<GHUser> TEST_USERS4 = new ArrayList<GHUser>(Arrays.asList(new GHUser[] { TEST_USER2 }));
private static final List<GHUser> TEST_USERS5 = new ArrayList<GHUser>(
Arrays.asList(new GHUser[] { TEST_USER3, TEST_USER1 }));

private static final List<GHProjectCard> TEST_COLUMN1_CARDS = new ArrayList<GHProjectCard>(
Arrays.asList(new GHProjectCard[] { TEST_CARD1, TEST_CARD2, TEST_CARD3 }));
Arrays.asList(new GHProjectCard[] { TEST_CARD1, TEST_CARD2, TEST_CARD3 }));
private static final List<GHProjectCard> TEST_COLUMN2_CARDS = new ArrayList<GHProjectCard>(
Arrays.asList(new GHProjectCard[] { TEST_CARD3, TEST_CARD4 }));
Arrays.asList(new GHProjectCard[] { TEST_CARD3, TEST_CARD4 }));
private static final List<GHProjectCard> TEST_COLUMN3_CARDS = new ArrayList<GHProjectCard>(
Arrays.asList(new GHProjectCard[] { TEST_CARD5 }));
Arrays.asList(new GHProjectCard[] { TEST_CARD5 }));

private static final List<GHProjectColumn> TEST_PROJECT_COLUMNS = new ArrayList<GHProjectColumn>(
Arrays.asList(new GHProjectColumn[] { TEST_COLUMN1, TEST_COLUMN2, TEST_COLUMN3 }));
Arrays.asList(new GHProjectColumn[] { TEST_COLUMN1, TEST_COLUMN2, TEST_COLUMN3 }));

private static final List<GHProject> TEST_PROJECTS = new ArrayList<GHProject>(Arrays.asList(new GHProject[] { TEST_PROJECT1, TEST_PROJECT2, TEST_PROJECT3 }));
private static final List<GHProject> TEST_PROJECTS = new ArrayList<GHProject>(
Arrays.asList(new GHProject[] { TEST_PROJECT1, TEST_PROJECT2, TEST_PROJECT3 }));

private static final List<GHRepository> TEST_REPOSITORIES = new ArrayList<GHRepository>(
Arrays.asList(new GHRepository[] { TEST_REPOSITORY1, TEST_REPOSITORY2 } ));

Arrays.asList(new GHRepository[] { TEST_REPOSITORY1, TEST_REPOSITORY2 }));

Map<String, GHRepository> TEST_REPOSITORY_MAP = Stream.of(new Object[][] {
{ TEST_REPOSITORY1_NAME, TEST_REPOSITORY1 },
{ TEST_REPOSITORY2_NAME, TEST_REPOSITORY2 }
}).collect(Collectors.toMap(data -> (String) data[0], data -> (GHRepository) data[1]));
Map<String, GHRepository> TEST_REPOSITORY_MAP = Stream.of(
new Object[][] { { TEST_REPOSITORY1_NAME, TEST_REPOSITORY1 }, { TEST_REPOSITORY2_NAME, TEST_REPOSITORY2 } })
.collect(Collectors.toMap(data -> (String) data[0], data -> (GHRepository) data[1]));

private GitHubService gitHubService;

Expand All @@ -135,14 +157,15 @@ public class GitHubServiceTest extends CacheMockTests {

@Before
public void setup() throws Exception {
ManagementService managementService = new RemoteProjectManager("GitHub", ServiceType.GITHUB, new HashMap<String, String>() {
private static final long serialVersionUID = 2020874481642498006L;
{
put("url", "https://localhost:9101/TexasAMLibrary");
put("username", "username");
put("password", "password");
}
});
ManagementService managementService = new RemoteProjectManager("GitHub", ServiceType.GITHUB,
new HashMap<String, String>() {
private static final long serialVersionUID = 2020874481642498006L;
{
put("url", "https://localhost:9101/TexasAMLibrary");
put("username", "username");
put("password", "password");
}
});

CardTypeRepo cardTypeRepo = mock(CardTypeRepo.class);
StatusRepo statusRepo = mock(StatusRepo.class);
Expand Down Expand Up @@ -183,6 +206,15 @@ public void setup() throws Exception {
when(TEST_CARD3.getContent().getLabels()).thenReturn(TEST_CARD3_LABELS);
when(TEST_CARD4.getContent().getLabels()).thenReturn(TEST_CARD4_LABELS);
when(TEST_CARD5.getContent().getLabels()).thenReturn(TEST_CARD5_LABELS);
when(TEST_CARD1.getContent().getAssignees()).thenReturn(TEST_USERS1);
when(TEST_CARD2.getContent().getAssignees()).thenReturn(TEST_USERS2);
when(TEST_CARD3.getContent().getAssignees()).thenReturn(TEST_USERS3);
when(TEST_CARD4.getContent().getAssignees()).thenReturn(TEST_USERS4);
when(TEST_CARD5.getContent().getAssignees()).thenReturn(TEST_USERS5);

when(TEST_USER1.getId()).thenReturn(TEST_USER1_ID);
when(TEST_USER1.getName()).thenReturn(TEST_USER1_NAME);
when(TEST_USER1.getAvatarUrl()).thenReturn(TEST_USER1_AVATAR_PATH);

when(TEST_LABEL1.getName()).thenReturn(REQUEST_LABEL);
when(TEST_LABEL2.getName()).thenReturn(ISSUE_LABEL);
Expand All @@ -194,25 +226,27 @@ public void setup() throws Exception {
when(TEST_FEATURE_REQUEST.getTitle()).thenReturn(TEST_FEATURE_REQUEST_TITLE);
when(TEST_FEATURE_REQUEST.getDescription()).thenReturn(TEST_FEATURE_REQUEST_DESCRIPTION);


when(cardTypeRepo.findByMapping(any(String.class))).thenAnswer(new Answer<Optional<CardType>>() {
@Override
public Optional<CardType> answer(InvocationOnMock invocation) {
String identifier = (String) invocation.getArguments()[0];
Optional<CardType> cardType = Optional.empty();
switch (identifier) {
case "Story":
cardType = Optional.of(new CardType("Feature", new HashSet<String>(Arrays.asList(new String[] { "Story" }))));
cardType = Optional
.of(new CardType("Feature", new HashSet<String>(Arrays.asList(new String[] { "Story" }))));
break;
case "Defect":
cardType = Optional.of(new CardType("Defect", new HashSet<String>(Arrays.asList(new String[] { "Defect" }))));
cardType = Optional
.of(new CardType("Defect", new HashSet<String>(Arrays.asList(new String[] { "Defect" }))));
break;
}
return cardType;
}
});

when(cardTypeRepo.findByIdentifier(any(String.class))).thenReturn(new CardType("Feature", new HashSet<String>(Arrays.asList(new String[] { "Story" }))));
when(cardTypeRepo.findByIdentifier(any(String.class)))
.thenReturn(new CardType("Feature", new HashSet<String>(Arrays.asList(new String[] { "Story" }))));

when(statusRepo.findByMapping(any(String.class))).thenAnswer(new Answer<Optional<Status>>() {
@Override
Expand All @@ -222,16 +256,20 @@ public Optional<Status> answer(InvocationOnMock invocation) {
switch (identifier) {
case "None":
case "Feature":
status = Optional.of(new Status("None", new HashSet<String>(Arrays.asList(new String[] { "None", "Future" }))));
status = Optional.of(
new Status("None", new HashSet<String>(Arrays.asList(new String[] { "None", "Future" }))));
break;
case "In Progress":
status = Optional.of(new Status("In Progress", new HashSet<String>(Arrays.asList(new String[] { "In Progress" }))));
status = Optional.of(new Status("In Progress",
new HashSet<String>(Arrays.asList(new String[] { "In Progress" }))));
break;
case "Done":
status = Optional.of(new Status("Done", new HashSet<String>(Arrays.asList(new String[] { "Done" }))));
status = Optional
.of(new Status("Done", new HashSet<String>(Arrays.asList(new String[] { "Done" }))));
break;
case "Accepted":
status = Optional.of( new Status("Accepted", new HashSet<String>(Arrays.asList(new String[] { "Accepted" }))));
status = Optional.of(
new Status("Accepted", new HashSet<String>(Arrays.asList(new String[] { "Accepted" }))));
break;
}
return status;
Expand All @@ -245,8 +283,8 @@ public Optional<Estimate> answer(InvocationOnMock invocation) {
}
});

when(statusRepo.findByIdentifier(any(String.class))).thenReturn(new Status("None", new HashSet<String>(Arrays.asList(new String[] { "None", "Future" }))));

when(statusRepo.findByIdentifier(any(String.class)))
.thenReturn(new Status("None", new HashSet<String>(Arrays.asList(new String[] { "None", "Future" }))));

setField(cardTypeMappingService, "serviceMappingRepo", cardTypeRepo);
setField(statusMappingService, "serviceMappingRepo", statusRepo);
Expand Down Expand Up @@ -296,4 +334,12 @@ public void testPush() throws Exception {
GHIssue issue = (GHIssue) gitHubService.push(TEST_FEATURE_REQUEST);
assertEquals("Didn't get expected issue", TEST_ISSUE, issue);
}

@Test
public void testGetMember() throws IOException {
Member member = gitHubService.getMember(TEST_USER1);
assertEquals("Member ID is incorrect", String.valueOf(TEST_USER1_ID), member.getId());
assertEquals("Member Name is incorrect", TEST_USER1_NAME, member.getName());
assertEquals("Member Avatar URL is incorrect", TEST_USER1_AVATAR_PATH, member.getAvatar());
}
}

0 comments on commit 27d9c52

Please sign in to comment.