From 728ebdf02b31f1369bc7da46ab94d6e839a32061 Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Mon, 18 Jan 2021 23:38:17 +0100 Subject: [PATCH] Create a test case for the BuildActionIterator. --- .../echarts/BuildActionIteratorTest.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/test/java/io/jenkins/plugins/echarts/BuildActionIteratorTest.java diff --git a/src/test/java/io/jenkins/plugins/echarts/BuildActionIteratorTest.java b/src/test/java/io/jenkins/plugins/echarts/BuildActionIteratorTest.java new file mode 100644 index 0000000..a6fc652 --- /dev/null +++ b/src/test/java/io/jenkins/plugins/echarts/BuildActionIteratorTest.java @@ -0,0 +1,76 @@ +package io.jenkins.plugins.echarts; + +import java.util.NoSuchElementException; +import java.util.Optional; + +import org.junit.jupiter.api.Test; + +import edu.hm.hafner.echarts.BuildResult; + +import hudson.model.Run; + +import io.jenkins.plugins.util.BuildAction; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * Tests the class {@link BuildActionIterator}. + * + * @author Ullrich Hafner + */ +class BuildActionIteratorTest { + @Test + void shouldCreateEmptyIterator() { + BuildActionIterator iterator = new BuildActionIterator<>(TestAction.class, Optional.empty()); + + assertThat(iterator).isExhausted(); + assertThatExceptionOfType(NoSuchElementException.class).isThrownBy(iterator::next); + } + + @Test + void shouldReturnResultOfCurrentBuild() { + TestAction testAction = mock(TestAction.class); + Run baseline = mock(Run.class); + when(testAction.getOwner()).thenAnswer(i -> baseline); + + BuildActionIterator iterator = new BuildActionIterator<>(TestAction.class, Optional.of(testAction)); + + assertThat(iterator).hasNext(); + assertThat(iterator.next()).usingRecursiveComparison().ignoringFields("build") + .isEqualTo(new BuildResult<>(null, testAction)); + assertThat(iterator).isExhausted(); + } + + @Test + void shouldReturnResultOfPreviousBuild() { + TestAction testAction = mock(TestAction.class); + Run baseline = mock(Run.class); + when(testAction.getOwner()).thenAnswer(i -> baseline); + + BuildActionIterator iterator = new BuildActionIterator<>(TestAction.class, Optional.of(testAction)); + + TestAction previousAction = mock(TestAction.class); + Run previousBuild = mock(Run.class); + when(previousAction.getOwner()).thenAnswer(i -> previousBuild); + + when(previousBuild.getAction(TestAction.class)).thenReturn(previousAction); + when(baseline.getPreviousBuild()).thenAnswer(i -> previousBuild); + + assertThat(iterator).hasNext(); + assertThat(iterator.next()).usingRecursiveComparison().ignoringFields("build") + .isEqualTo(new BuildResult<>(null, testAction)); + + assertThat(iterator).hasNext(); + assertThat(iterator.next()).usingRecursiveComparison().ignoringFields("build") + .isEqualTo(new BuildResult<>(null, previousAction)); + } + + private abstract static class TestAction extends BuildAction { + private static final long serialVersionUID = -8129555082892128959L; + + TestAction(final Run owner, final String result) { + super(owner, result); + } + } +}