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