Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 99c0c75

Browse files
针对于GitHubServiceImpl的测试
1 parent 37570d3 commit 99c0c75

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
package com.dockerx.rxreact.services;
2+
3+
import com.dockerx.rxreact.domain.*;
4+
import com.dockerx.rxreact.repository.GitHbubRepos;
5+
import io.reactivex.subscribers.TestSubscriber;
6+
import org.junit.Before;
7+
import org.junit.Test;
8+
import org.junit.runner.RunWith;
9+
import org.mockito.Mock;
10+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
11+
12+
import java.time.LocalDateTime;
13+
import java.util.Arrays;
14+
import java.util.List;
15+
16+
import static org.assertj.core.api.Assertions.assertThat;
17+
import static org.mockito.ArgumentMatchers.anyString;
18+
import static org.mockito.Mockito.when;
19+
import static org.mockito.MockitoAnnotations.initMocks;
20+
21+
/**
22+
* @author Author 知秋
23+
* @email fei6751803@163.com
24+
* @time Created by Auser on 2018年4月26日 18:02.
25+
*/
26+
@RunWith(SpringJUnit4ClassRunner.class)
27+
public class GitHubServiceImplTest {
28+
29+
@Mock
30+
private GitHbubRepos gitHbubRepos;
31+
private GitHubService gitHubService;
32+
33+
@Before
34+
public void setup() {
35+
initMocks(this);
36+
gitHubService=new GitHubServiceImpl(gitHbubRepos);
37+
when(gitHbubRepos.getRepos(anyString())).thenAnswer(m->getReposForTest());
38+
39+
when(gitHbubRepos.getCommitsInWeek(anyString(), anyString())).thenAnswer(m -> getCommitsInWeekForTest());
40+
when(gitHbubRepos.getSingleCommit(anyString(), anyString(), anyString())).thenAnswer(m -> getSingleCommitForTest());
41+
when(gitHbubRepos.getSingleCommitByUrl(anyString())).thenAnswer(m -> getSingleCommitForTest());
42+
}
43+
44+
private List<Repository> getReposForTest() {
45+
try {
46+
Thread.sleep(1000);
47+
} catch (InterruptedException ignore) {
48+
}
49+
return Arrays.asList(
50+
new Repository("repo1", LocalDateTime.now().minusMonths(1)),
51+
new Repository("repo2", LocalDateTime.now()),
52+
new Repository("repo3", LocalDateTime.now().minusDays(3))
53+
);
54+
}
55+
@Test
56+
public void getRepos() {
57+
TestSubscriber<String> testSubscriber = new TestSubscriber<>();
58+
59+
60+
gitHubService.getRepos("test-user")
61+
.subscribe(testSubscriber);
62+
63+
testSubscriber.assertNoErrors();
64+
assertThat(testSubscriber.values())
65+
.as("getRepos returns all user code repository ")
66+
.containsExactly("repo1 ","repo2 ", "repo3 ");
67+
}
68+
69+
@Test
70+
public void getReposInWeek() {
71+
TestSubscriber<String> testSubscriber = new TestSubscriber<>();
72+
73+
gitHubService.getReposInWeek("test-user")
74+
.subscribe(testSubscriber);
75+
76+
testSubscriber.assertNoErrors();
77+
assertThat(testSubscriber.values())
78+
.as("getReposInWeek returns updated repos within one week")
79+
.containsExactly("repo2 ", "repo3 ");
80+
}
81+
82+
@Test
83+
public void getCommitsInWeek() {
84+
TestSubscriber<Commit> testSubscriber = new TestSubscriber<>();
85+
86+
gitHubService.getCommitsInWeek("test-user", "test-repo")
87+
.subscribe(testSubscriber);
88+
89+
testSubscriber.assertNoErrors();
90+
assertThat(testSubscriber.values())
91+
.as("getCommitsInWeek returns commits updated by `user` within one week")
92+
.extracting(Commit::getSha)
93+
.containsExactly("sha1");
94+
}
95+
96+
97+
98+
@Test
99+
public void getCommittedFilesByUser() {
100+
TestSubscriber<CommittedFile> testSubscriber = new TestSubscriber<>();
101+
102+
gitHubService.getCommittedFilesByUser("test-user")
103+
.subscribe(testSubscriber);
104+
105+
testSubscriber.assertNoErrors();
106+
assertThat(testSubscriber.values())
107+
.as("getCommittedFilesByUser returns CommittedFiles by `user`")
108+
.extracting(CommittedFile::getFilename)
109+
.containsOnly("filename1", "filename1", "filename2", "filename2");
110+
}
111+
112+
private List<Commit> getCommitsInWeekForTest() {
113+
try {
114+
Thread.sleep(300);
115+
} catch (InterruptedException ignore) {
116+
}
117+
return Arrays.asList(
118+
Commit.builder()
119+
.sha("sha1")
120+
.committer(new Committer("test-user","https://github.com/muyinchen","https://api.github.com/users/muyinchen/orgs"))
121+
.author(new Author("url2","https://github.com/muyinchen",true,"https://api.github.com/users/muyinchen/orgs"))
122+
.build(),
123+
Commit.builder()
124+
.sha("sha2")
125+
.committer(new Committer("no-test-user","https://github.com/muyinchen/no-test-user","https://api.github.com/users/muyinchen/orgs/no-test-user"))
126+
.author(new Author("url2","https://github.com/muyinchen/no-test-user",true,"https://api.github.com/users/muyinchen/orgs/no-test-user"))
127+
.build()
128+
);
129+
}
130+
131+
private SingleCommit getSingleCommitForTest() {
132+
try {
133+
Thread.sleep(300);
134+
} catch (InterruptedException ignore) {
135+
}
136+
return new SingleCommit(
137+
Arrays.asList(
138+
new CommittedFile("filename1", 10),
139+
new CommittedFile("filename2", 20)
140+
)
141+
);
142+
}
143+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /