1
2
3
4
5 package com.jcabi.github;
6
7 import jakarta.json.Json;
8 import java.io.IOException;
9 import java.util.Arrays;
10 import java.util.Collections;
11 import org.hamcrest.MatcherAssert;
12 import org.hamcrest.Matchers;
13 import org.junit.jupiter.api.Assertions;
14 import org.junit.jupiter.api.Test;
15 import org.mockito.Mockito;
16
17
18
19
20
21
22 final class IssueLabelsTest {
23
24 @Test
25 void fetchesLabelsByColor() throws IOException {
26 final Label first = Mockito.mock(Label.class);
27 Mockito.doReturn(
28 Json.createObjectBuilder().add("color", "c0c0c0").build()
29 ).when(first).json();
30 final Label second = Mockito.mock(Label.class);
31 Mockito.doReturn(
32 Json.createObjectBuilder().add("color", "fefefe").build()
33 ).when(second).json();
34 final IssueLabels labels = Mockito.mock(IssueLabels.class);
35 Mockito.doReturn(Arrays.asList(first, second)).when(labels).iterate();
36 MatcherAssert.assertThat(
37 "Collection size is incorrect",
38 new IssueLabels.Smart(labels).findByColor("c0c0c0"),
39 Matchers.allOf(
40 Matchers.iterableWithSize(1),
41 Matchers.hasItems(first)
42 )
43 );
44 }
45
46
47
48
49 @Test
50 void checksLabelExistenceByName() {
51 final Label first = Mockito.mock(Label.class);
52 Mockito.doReturn("first").when(first).name();
53 final Label second = Mockito.mock(Label.class);
54 Mockito.doReturn("second").when(second).name();
55 final IssueLabels labels = Mockito.mock(IssueLabels.class);
56 Mockito.doReturn(Arrays.asList(first, second)).when(labels).iterate();
57 MatcherAssert.assertThat(
58 "Values are not equal",
59 new IssueLabels.Smart(labels).contains("first"),
60 Matchers.is(true)
61 );
62 MatcherAssert.assertThat(
63 "Values are not equal",
64 new IssueLabels.Smart(labels).contains("third"),
65 Matchers.is(false)
66 );
67 }
68
69 @Test
70 void getsLabelByName() {
71 final Label first = Mockito.mock(Label.class);
72 Mockito.doReturn("a").when(first).name();
73 final Label second = Mockito.mock(Label.class);
74 Mockito.doReturn("b").when(second).name();
75 final IssueLabels labels = Mockito.mock(IssueLabels.class);
76 Mockito.doReturn(Arrays.asList(first, second)).when(labels).iterate();
77 MatcherAssert.assertThat(
78 "Values are not equal",
79 new IssueLabels.Smart(labels).get("a").name(),
80 Matchers.equalTo("a")
81 );
82 }
83
84 @Test
85 void throwsWhenLabelIsAbsent() {
86 final IssueLabels labels = Mockito.mock(IssueLabels.class);
87 Mockito.doReturn(Collections.emptyList()).when(labels).iterate();
88 Assertions.assertThrows(
89 IllegalArgumentException.class,
90 () -> new IssueLabels.Smart(labels).get("something"),
91 "Should throw when label is absent"
92 );
93 }
94
95 }