Add truth subject for RequiredLabel
This makes the assertions on RequiredLabel a bit easier to read.
Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I3414b0af3fbca1764d014a093b38428a7580b157
diff --git a/java/com/google/gerrit/plugins/codeowners/testing/RequiredApprovalSubject.java b/java/com/google/gerrit/plugins/codeowners/testing/RequiredApprovalSubject.java
new file mode 100644
index 0000000..c0e7563
--- /dev/null
+++ b/java/com/google/gerrit/plugins/codeowners/testing/RequiredApprovalSubject.java
@@ -0,0 +1,79 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.plugins.codeowners.testing;
+
+import static com.google.common.truth.Truth.assertAbout;
+
+import com.google.common.truth.FailureMetadata;
+import com.google.common.truth.IntegerSubject;
+import com.google.common.truth.StringSubject;
+import com.google.common.truth.Subject;
+import com.google.gerrit.plugins.codeowners.config.RequiredApproval;
+import com.google.gerrit.truth.OptionalSubject;
+import java.util.Optional;
+
+/** {@link Subject} for doing assertions on {@link RequiredApproval}s. */
+public class RequiredApprovalSubject extends Subject {
+ /**
+ * Starts a fluent chain to do assertions on a {@link RequiredApproval}.
+ *
+ * @param requiredApproval the required approval on which assertions should be done
+ * @return the created {@link RequiredApprovalSubject}
+ */
+ public static RequiredApprovalSubject assertThat(RequiredApproval requiredApproval) {
+ return assertAbout(requiredApprovals()).that(requiredApproval);
+ }
+
+ /**
+ * Starts a fluent chain to do assertions on an {@link Optional} {@link RequiredApproval}.
+ *
+ * @param requiredApproval optional required approval on which assertions should be done
+ * @return the created {@link OptionalSubject}
+ */
+ public static OptionalSubject<RequiredApprovalSubject, RequiredApproval> assertThat(
+ Optional<RequiredApproval> requiredApproval) {
+ return OptionalSubject.assertThat(requiredApproval, requiredApprovals());
+ }
+
+ /**
+ * Creates a subject factory for mapping {@link RequiredApproval}s to {@link
+ * RequiredApprovalSubject}s.
+ */
+ private static Subject.Factory<RequiredApprovalSubject, RequiredApproval> requiredApprovals() {
+ return RequiredApprovalSubject::new;
+ }
+
+ private final RequiredApproval requiredApproval;
+
+ private RequiredApprovalSubject(FailureMetadata metadata, RequiredApproval requiredApproval) {
+ super(metadata, requiredApproval);
+ this.requiredApproval = requiredApproval;
+ }
+
+ /** Returns a subject for the label name. */
+ public StringSubject hasLabelNameThat() {
+ return check("labelName()").that(requiredApproval().labelType().getName());
+ }
+
+ /** Returns a subject for the value. */
+ public IntegerSubject hasValueThat() {
+ return check("value()").that((int) requiredApproval().value());
+ }
+
+ private RequiredApproval requiredApproval() {
+ isNotNull();
+ return requiredApproval;
+ }
+}
diff --git a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersPluginConfigValidatorIT.java b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersPluginConfigValidatorIT.java
index c7221f7..e81a707 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersPluginConfigValidatorIT.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersPluginConfigValidatorIT.java
@@ -17,6 +17,7 @@
import static com.google.common.truth.Truth.assertThat;
import static com.google.gerrit.acceptance.GitUtil.fetch;
import static com.google.gerrit.acceptance.GitUtil.pushHead;
+import static com.google.gerrit.plugins.codeowners.testing.RequiredApprovalSubject.assertThat;
import com.google.gerrit.entities.BranchNameKey;
import com.google.gerrit.entities.RefNames;
@@ -238,8 +239,8 @@
PushResult r = pushRefsMetaConfig();
assertThat(r.getRemoteUpdate(RefNames.REFS_CONFIG).getStatus()).isEqualTo(Status.OK);
RequiredApproval requiredApproval = codeOwnersPluginConfiguration.getRequiredApproval(project);
- assertThat(requiredApproval.labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.value()).isEqualTo(2);
+ assertThat(requiredApproval).hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).hasValueThat().isEqualTo(2);
}
@Test
@@ -282,8 +283,9 @@
assertThat(r.getRemoteUpdate(RefNames.REFS_CONFIG).getStatus()).isEqualTo(Status.OK);
Optional<RequiredApproval> overrideApproval =
codeOwnersPluginConfiguration.getOverrideApproval(project);
- assertThat(overrideApproval.get().labelType().getName()).isEqualTo("Code-Review");
- assertThat(overrideApproval.get().value()).isEqualTo(2);
+ assertThat(overrideApproval).isPresent();
+ assertThat(overrideApproval).value().hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(overrideApproval).value().hasValueThat().isEqualTo(2);
}
@Test
diff --git a/javatests/com/google/gerrit/plugins/codeowners/config/AbstractRequiredApprovalConfigTest.java b/javatests/com/google/gerrit/plugins/codeowners/config/AbstractRequiredApprovalConfigTest.java
index f067d4a..a8b5c7d 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/config/AbstractRequiredApprovalConfigTest.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/config/AbstractRequiredApprovalConfigTest.java
@@ -16,6 +16,7 @@
import static com.google.common.truth.Truth.assertThat;
import static com.google.gerrit.plugins.codeowners.config.CodeOwnersPluginConfiguration.SECTION_CODE_OWNERS;
+import static com.google.gerrit.plugins.codeowners.testing.RequiredApprovalSubject.assertThat;
import static com.google.gerrit.server.project.ProjectCache.illegalState;
import static com.google.gerrit.testing.GerritJUnit.assertThrows;
import static com.google.gerrit.truth.OptionalSubject.assertThat;
@@ -87,8 +88,8 @@
Optional<RequiredApproval> requiredApproval =
getRequiredApprovalConfig().get(projectState, cfg);
assertThat(requiredApproval).isPresent();
- assertThat(requiredApproval.get().labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.get().value()).isEqualTo(2);
+ assertThat(requiredApproval).value().hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).value().hasValueThat().isEqualTo(2);
}
@Test
diff --git a/javatests/com/google/gerrit/plugins/codeowners/config/BUILD b/javatests/com/google/gerrit/plugins/codeowners/config/BUILD
index 9f115b5..e613a56 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/config/BUILD
+++ b/javatests/com/google/gerrit/plugins/codeowners/config/BUILD
@@ -15,6 +15,7 @@
":testbases",
"//plugins/code-owners:code-owners__plugin",
"//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/acceptance",
+ "//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/testing",
],
)
@@ -29,5 +30,6 @@
"//lib/truth",
"//plugins/code-owners:code-owners__plugin",
"//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/acceptance",
+ "//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/testing",
],
)
diff --git a/javatests/com/google/gerrit/plugins/codeowners/config/CodeOwnersPluginConfigurationTest.java b/javatests/com/google/gerrit/plugins/codeowners/config/CodeOwnersPluginConfigurationTest.java
index 0f8fe24..7c6ab3a 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/config/CodeOwnersPluginConfigurationTest.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/config/CodeOwnersPluginConfigurationTest.java
@@ -15,6 +15,7 @@
package com.google.gerrit.plugins.codeowners.config;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.gerrit.plugins.codeowners.testing.RequiredApprovalSubject.assertThat;
import static com.google.gerrit.testing.GerritJUnit.assertThrows;
import static com.google.gerrit.truth.OptionalSubject.assertThat;
@@ -460,17 +461,16 @@
@Test
public void getDefaultRequiredApprovalWhenNoRequiredApprovalIsConfigured() throws Exception {
RequiredApproval requiredApproval = codeOwnersPluginConfiguration.getRequiredApproval(project);
- assertThat(requiredApproval.labelType().getName())
- .isEqualTo(RequiredApprovalConfig.DEFAULT_LABEL);
- assertThat(requiredApproval.value()).isEqualTo(RequiredApprovalConfig.DEFAULT_VALUE);
+ assertThat(requiredApproval).hasLabelNameThat().isEqualTo(RequiredApprovalConfig.DEFAULT_LABEL);
+ assertThat(requiredApproval).hasValueThat().isEqualTo(RequiredApprovalConfig.DEFAULT_VALUE);
}
@Test
@GerritConfig(name = "plugin.code-owners.requiredApproval", value = "Code-Review+2")
public void getConfiguredDefaultRequireApproval() throws Exception {
RequiredApproval requiredApproval = codeOwnersPluginConfiguration.getRequiredApproval(project);
- assertThat(requiredApproval.labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.value()).isEqualTo(2);
+ assertThat(requiredApproval).hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).hasValueThat().isEqualTo(2);
}
@Test
@@ -530,8 +530,8 @@
public void getRequiredApprovalConfiguredOnProjectLevel() throws Exception {
configureRequiredApproval(project, "Code-Review+2");
RequiredApproval requiredApproval = codeOwnersPluginConfiguration.getRequiredApproval(project);
- assertThat(requiredApproval.labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.value()).isEqualTo(2);
+ assertThat(requiredApproval).hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).hasValueThat().isEqualTo(2);
}
@Test
@@ -540,16 +540,16 @@
throws Exception {
configureRequiredApproval(project, "Code-Review+2");
RequiredApproval requiredApproval = codeOwnersPluginConfiguration.getRequiredApproval(project);
- assertThat(requiredApproval.labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.value()).isEqualTo(2);
+ assertThat(requiredApproval).hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).hasValueThat().isEqualTo(2);
}
@Test
public void requiredApprovalIsInheritedFromParentProject() throws Exception {
configureRequiredApproval(allProjects, "Code-Review+2");
RequiredApproval requiredApproval = codeOwnersPluginConfiguration.getRequiredApproval(project);
- assertThat(requiredApproval.labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.value()).isEqualTo(2);
+ assertThat(requiredApproval).hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).hasValueThat().isEqualTo(2);
}
@Test
@@ -557,8 +557,8 @@
public void inheritedRequiredApprovalOverridesDefaultRequiredApproval() throws Exception {
configureRequiredApproval(allProjects, "Code-Review+2");
RequiredApproval requiredApproval = codeOwnersPluginConfiguration.getRequiredApproval(project);
- assertThat(requiredApproval.labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.value()).isEqualTo(2);
+ assertThat(requiredApproval).hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).hasValueThat().isEqualTo(2);
}
@Test
@@ -566,8 +566,8 @@
configureRequiredApproval(allProjects, "Code-Review+1");
configureRequiredApproval(project, "Code-Review+2");
RequiredApproval requiredApproval = codeOwnersPluginConfiguration.getRequiredApproval(project);
- assertThat(requiredApproval.labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.value()).isEqualTo(2);
+ assertThat(requiredApproval).hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).hasValueThat().isEqualTo(2);
}
@Test
@@ -631,8 +631,8 @@
Project.NameKey otherProject = projectOperations.newProject().create();
configureRequiredApproval(otherProject, "Code-Review+2");
RequiredApproval requiredApproval = codeOwnersPluginConfiguration.getRequiredApproval(project);
- assertThat(requiredApproval.labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.value()).isEqualTo(1);
+ assertThat(requiredApproval).hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).hasValueThat().isEqualTo(1);
}
@Test
@@ -660,8 +660,8 @@
Optional<RequiredApproval> requiredApproval =
codeOwnersPluginConfiguration.getOverrideApproval(project);
assertThat(requiredApproval).isPresent();
- assertThat(requiredApproval.get().labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.get().value()).isEqualTo(2);
+ assertThat(requiredApproval).value().hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).value().hasValueThat().isEqualTo(2);
}
@Test
@@ -670,8 +670,8 @@
Optional<RequiredApproval> requiredApproval =
codeOwnersPluginConfiguration.getOverrideApproval(project);
assertThat(requiredApproval).isPresent();
- assertThat(requiredApproval.get().labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.get().value()).isEqualTo(2);
+ assertThat(requiredApproval).value().hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).value().hasValueThat().isEqualTo(2);
}
@Test
diff --git a/javatests/com/google/gerrit/plugins/codeowners/config/OverrideApprovalConfigTest.java b/javatests/com/google/gerrit/plugins/codeowners/config/OverrideApprovalConfigTest.java
index 648afcf..c1a04cb 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/config/OverrideApprovalConfigTest.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/config/OverrideApprovalConfigTest.java
@@ -15,6 +15,7 @@
package com.google.gerrit.plugins.codeowners.config;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.gerrit.plugins.codeowners.testing.RequiredApprovalSubject.assertThat;
import static com.google.gerrit.server.project.ProjectCache.illegalState;
import static com.google.gerrit.truth.OptionalSubject.assertThat;
@@ -48,8 +49,8 @@
Optional<RequiredApproval> requiredApproval =
getRequiredApprovalConfig().get(projectState, new Config());
assertThat(requiredApproval).isPresent();
- assertThat(requiredApproval.get().labelType().getName()).isEqualTo("Owners-Override");
- assertThat(requiredApproval.get().value()).isEqualTo(1);
+ assertThat(requiredApproval).value().hasLabelNameThat().isEqualTo("Owners-Override");
+ assertThat(requiredApproval).value().hasValueThat().isEqualTo(1);
}
@Test
diff --git a/javatests/com/google/gerrit/plugins/codeowners/config/RequiredApprovalConfigTest.java b/javatests/com/google/gerrit/plugins/codeowners/config/RequiredApprovalConfigTest.java
index f91faee..e45b823 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/config/RequiredApprovalConfigTest.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/config/RequiredApprovalConfigTest.java
@@ -15,6 +15,7 @@
package com.google.gerrit.plugins.codeowners.config;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.gerrit.plugins.codeowners.testing.RequiredApprovalSubject.assertThat;
import static com.google.gerrit.server.project.ProjectCache.illegalState;
import static com.google.gerrit.testing.GerritJUnit.assertThrows;
import static com.google.gerrit.truth.OptionalSubject.assertThat;
@@ -47,8 +48,8 @@
Optional<RequiredApproval> requiredApproval =
getRequiredApprovalConfig().get(projectState, new Config());
assertThat(requiredApproval).isPresent();
- assertThat(requiredApproval.get().labelType().getName()).isEqualTo("Code-Review");
- assertThat(requiredApproval.get().value()).isEqualTo(2);
+ assertThat(requiredApproval).value().hasLabelNameThat().isEqualTo("Code-Review");
+ assertThat(requiredApproval).value().hasValueThat().isEqualTo(2);
}
@Test