1
2
3
4
5 package com.jcabi.github.mock;
6
7 import com.google.common.base.Optional;
8 import com.jcabi.github.Event;
9 import java.io.IOException;
10 import java.util.Iterator;
11 import org.hamcrest.MatcherAssert;
12 import org.hamcrest.Matchers;
13 import org.junit.jupiter.api.Test;
14
15
16
17
18
19 @SuppressWarnings("PMD.AvoidDuplicateLiterals")
20 final class MkIssueEventsTest {
21
22
23
24 private static final Optional<String> ABSENT_STR = Optional.absent();
25
26
27
28
29
30 @Test
31 void createsIssueEvent() throws Exception {
32 final MkIssueEvents events = MkIssueEventsTest.issueEvents();
33 final String login = "jack";
34 final String type = "locked";
35 final long before = MkIssueEventsTest.now();
36 final Event.Smart event = new Event.Smart(
37 events.create(
38 type,
39 2,
40 login,
41 MkIssueEventsTest.ABSENT_STR
42 )
43 );
44 final long after = MkIssueEventsTest.now();
45 MatcherAssert.assertThat(
46 "Values are not equal",
47 event.type(),
48 Matchers.equalTo(type)
49 );
50 MatcherAssert.assertThat(
51 "Values are not equal",
52 event.author().login(),
53 Matchers.equalTo(login)
54 );
55 MatcherAssert.assertThat(
56 "Values are not equal",
57 event.url().toString(),
58 Matchers.equalTo(
59 String.format(
60
61 "https://api.jcabi-github.invalid/repos/jeff/%s/issues/events/1",
62 events.repo().coordinates().repo()
63 )
64 )
65 );
66 MatcherAssert.assertThat(
67 "Value is not greater than expected",
68 event.createdAt().getTime(),
69 Matchers.greaterThanOrEqualTo(before)
70 );
71 MatcherAssert.assertThat(
72 "Value is not less than expected",
73 event.createdAt().getTime(),
74 Matchers.lessThanOrEqualTo(after)
75 );
76 }
77
78
79
80
81
82 @Test
83 void createsIssueEventWithLabel() throws Exception {
84 final MkIssueEvents events = MkIssueEventsTest.issueEvents();
85 final String label = "my label";
86 final Event.Smart event = new Event.Smart(
87 events.create(
88 "labeled",
89 2,
90 "samuel",
91 Optional.of(label)
92 )
93 );
94 MatcherAssert.assertThat(
95 "Values are not equal",
96 event.label().get().name(),
97 Matchers.equalTo(label)
98 );
99 }
100
101
102
103
104
105 @Test
106 void getsIssueEvent() throws Exception {
107 final MkIssueEvents events = MkIssueEventsTest.issueEvents();
108 final String type = "unlocked";
109 final String login = "jill";
110 final int eventnum = events.create(
111 type,
112 2,
113 login,
114 MkIssueEventsTest.ABSENT_STR
115 ).number();
116 final Event.Smart event = new Event.Smart(events.get(eventnum));
117 MatcherAssert.assertThat(
118 "Values are not equal",
119 event.number(),
120 Matchers.equalTo(eventnum)
121 );
122 MatcherAssert.assertThat(
123 "Values are not equal",
124 event.type(),
125 Matchers.equalTo(type)
126 );
127 MatcherAssert.assertThat(
128 "Values are not equal",
129 event.author().login(),
130 Matchers.equalTo(login)
131 );
132 }
133
134
135
136
137
138 @Test
139 void iteratesIssueEvents() throws Exception {
140 final MkIssueEvents events = MkIssueEventsTest.issueEvents();
141 final Event first = events.create(
142 "closed",
143 3,
144 "john",
145 MkIssueEventsTest.ABSENT_STR
146 );
147 final Event second = events.create(
148 "reopened",
149 3,
150 "jane",
151 MkIssueEventsTest.ABSENT_STR
152 );
153 MatcherAssert.assertThat(
154 "Collection size is incorrect",
155 events.iterate(),
156 Matchers.iterableWithSize(2)
157 );
158 final Iterator<Event> iter = events.iterate().iterator();
159 MatcherAssert.assertThat(
160 "Values are not equal",
161 iter.next(),
162 Matchers.equalTo(first)
163 );
164 MatcherAssert.assertThat(
165 "Values are not equal",
166 iter.next(),
167 Matchers.equalTo(second)
168 );
169 }
170
171
172
173
174
175
176
177 private static MkIssueEvents issueEvents() throws IOException {
178 return MkIssueEvents.class.cast(
179 new MkGitHub().randomRepo().issueEvents()
180 );
181 }
182
183
184
185
186
187 private static long now() {
188 final long sinceepoch = System.currentTimeMillis();
189 return sinceepoch - sinceepoch % 1000;
190 }
191 }