forked from wildfly/wildfly-github-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPRChecksTest.java
More file actions
122 lines (110 loc) · 5.12 KB
/
PRChecksTest.java
File metadata and controls
122 lines (110 loc) · 5.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package org.wildfly.bot;
import io.quarkiverse.githubapp.testing.GitHubAppTest;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.kohsuke.github.GHPullRequest;
import org.kohsuke.github.GHRepository;
import org.mockito.Mockito;
import org.wildfly.bot.utils.TestConstants;
import org.wildfly.bot.utils.WildflyGitHubBotTesting;
import org.wildfly.bot.utils.mocking.Mockable;
import org.wildfly.bot.utils.mocking.MockedGHPullRequest;
import org.wildfly.bot.utils.testing.PullRequestJson;
import org.wildfly.bot.utils.testing.internal.TestModel;
/**
* Tests containing multiple/all checks at the same time.
*/
@QuarkusTest
@GitHubAppTest
public class PRChecksTest {
private static String wildflyConfigFile;
private static PullRequestJson pullRequestJson;
private Mockable mockedContext;
@BeforeAll
static void setPullRequestJson() throws Exception {
TestModel.defaultBeforeEachJsons();
}
@Test
void testNoConfigFile() throws Throwable {
wildflyConfigFile = """
wildfly:
format:
title:
enabled: false
commit:
enabled: false
""";
pullRequestJson = TestModel.setPullRequestJsonBuilder(
pullRequestJsonBuilder -> pullRequestJsonBuilder.title(TestConstants.INVALID_TITLE)
.description(TestConstants.INVALID_DESCRIPTION));
mockedContext = MockedGHPullRequest.builder(pullRequestJson.id())
.commit(TestConstants.INVALID_COMMIT_MESSAGE);
TestModel.given(
mocks -> WildflyGitHubBotTesting.mockRepo(mocks, wildflyConfigFile, pullRequestJson, mockedContext))
.pullRequestEvent(pullRequestJson)
.then(mocks -> {
GHRepository repo = mocks.repository(TestConstants.TEST_REPO);
WildflyGitHubBotTesting.verifyFormatSuccess(repo, pullRequestJson);
});
}
@Test
void testAllChecksPass() throws Throwable {
wildflyConfigFile = """
wildfly:
rules:
- id: "Title"
title: "Title"
notify: [Tadpole]
- id: "Description"
body: "redhat.atlassian.net"
notify: [Butterfly]
format:
description:
regexes:
- pattern: "JIRA:\\\\s+https://redhat.atlassian.net/browse/WFLY-\\\\d+|https://redhat.atlassian.net/browse/WFLY-\\\\d+"
message: "The PR description must contain a link to the JIRA issue"
""";
pullRequestJson = TestModel.getPullRequestJson();
TestModel.given(mocks -> WildflyGitHubBotTesting.mockRepo(mocks, wildflyConfigFile, pullRequestJson))
.pullRequestEvent(pullRequestJson)
.then(mocks -> {
GHRepository repo = mocks.repository(TestConstants.TEST_REPO);
WildflyGitHubBotTesting.verifyFormatSuccess(repo, pullRequestJson);
GHPullRequest mockedPR = mocks.pullRequest(pullRequestJson.id());
Mockito.verify(mockedPR).comment("/cc @Tadpole [Title], @Butterfly [Description]");
});
}
@Test
void testAllChecksFail() throws Throwable {
wildflyConfigFile = """
wildfly:
rules:
- id: "Title"
title: "Title"
notify: [Tadpole]
- id: "Description"
body: "JIRA"
notify: [Butterfly]
format:
description:
regexes:
- pattern: "JIRA:\\\\s+https://redhat.atlassian.net/browse/WFLY-\\\\d+|https://redhat.atlassian.net/browse/WFLY-\\\\d+"
message: "The PR description must contain a link to the JIRA issue"
""";
pullRequestJson = TestModel.setPullRequestJsonBuilder(
pullRequestJsonBuilder -> pullRequestJsonBuilder.title(TestConstants.INVALID_TITLE)
.description(TestConstants.INVALID_DESCRIPTION));
mockedContext = MockedGHPullRequest.builder(pullRequestJson.id())
.commit(TestConstants.INVALID_COMMIT_MESSAGE);
TestModel.given(
mocks -> WildflyGitHubBotTesting.mockRepo(mocks, wildflyConfigFile, pullRequestJson, mockedContext))
.pullRequestEvent(pullRequestJson)
.then(mocks -> {
GHRepository repo = mocks.repository(TestConstants.TEST_REPO);
WildflyGitHubBotTesting.verifyFormatFailure(repo, pullRequestJson, "commit, description, title");
GHPullRequest mockedPR = mocks.pullRequest(pullRequestJson.id());
Mockito.verify(mockedPR, Mockito.never()).comment("/cc @Tadpole [Title], @Butterfly [Description]");
});
}
}