BatchRunOutcome gezielt durch Tests abgesichert
This commit is contained in:
@@ -0,0 +1,135 @@
|
|||||||
|
package de.gecheckt.pdf.umbenenner.application.port.in;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit tests for {@link BatchRunOutcome} enumeration.
|
||||||
|
* <p>
|
||||||
|
* Verifies that all required outcome values are present and correctly defined,
|
||||||
|
* and that the business logic methods work as expected.
|
||||||
|
*/
|
||||||
|
class BatchRunOutcomeTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void allRequiredOutcomeValuesExist() {
|
||||||
|
// Verify all outcome values required by the architecture are present
|
||||||
|
assertNotNull(BatchRunOutcome.SUCCESS);
|
||||||
|
assertNotNull(BatchRunOutcome.LOCK_UNAVAILABLE);
|
||||||
|
assertNotNull(BatchRunOutcome.FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void successOutcome_hasCorrectMessage() {
|
||||||
|
BatchRunOutcome outcome = BatchRunOutcome.SUCCESS;
|
||||||
|
assertEquals("Batch processing completed successfully", outcome.message());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void lockUnavailableOutcome_hasCorrectMessage() {
|
||||||
|
BatchRunOutcome outcome = BatchRunOutcome.LOCK_UNAVAILABLE;
|
||||||
|
assertEquals("Another instance is already running; this run terminates immediately", outcome.message());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void failureOutcome_hasCorrectMessage() {
|
||||||
|
BatchRunOutcome outcome = BatchRunOutcome.FAILURE;
|
||||||
|
assertEquals("Batch processing failed", outcome.message());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void isSuccess_returnsTrueOnlyForSuccess() {
|
||||||
|
assertTrue(BatchRunOutcome.SUCCESS.isSuccess());
|
||||||
|
assertFalse(BatchRunOutcome.LOCK_UNAVAILABLE.isSuccess());
|
||||||
|
assertFalse(BatchRunOutcome.FAILURE.isSuccess());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void isFailure_returnsTrueForFailureAndLockUnavailable() {
|
||||||
|
assertFalse(BatchRunOutcome.SUCCESS.isFailure());
|
||||||
|
assertTrue(BatchRunOutcome.LOCK_UNAVAILABLE.isFailure());
|
||||||
|
assertTrue(BatchRunOutcome.FAILURE.isFailure());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void isLockUnavailable_returnsTrueOnlyForLockUnavailable() {
|
||||||
|
assertFalse(BatchRunOutcome.SUCCESS.isLockUnavailable());
|
||||||
|
assertTrue(BatchRunOutcome.LOCK_UNAVAILABLE.isLockUnavailable());
|
||||||
|
assertFalse(BatchRunOutcome.FAILURE.isLockUnavailable());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void outcomeEquality_worksByReference() {
|
||||||
|
// Enums have identity-based equality
|
||||||
|
assertSame(BatchRunOutcome.SUCCESS, BatchRunOutcome.SUCCESS);
|
||||||
|
assertNotSame(BatchRunOutcome.SUCCESS, BatchRunOutcome.FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void outcomeValues_areThreeInTotal() {
|
||||||
|
BatchRunOutcome[] values = BatchRunOutcome.values();
|
||||||
|
assertEquals(3, values.length, "BatchRunOutcome should have exactly 3 values");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void outcomeValues_haveCorrectOrder() {
|
||||||
|
BatchRunOutcome[] values = BatchRunOutcome.values();
|
||||||
|
assertSame(BatchRunOutcome.SUCCESS, values[0]);
|
||||||
|
assertSame(BatchRunOutcome.LOCK_UNAVAILABLE, values[1]);
|
||||||
|
assertSame(BatchRunOutcome.FAILURE, values[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void outcomeCanBeUsedInSwitch() {
|
||||||
|
BatchRunOutcome outcome = BatchRunOutcome.LOCK_UNAVAILABLE;
|
||||||
|
String result = "";
|
||||||
|
|
||||||
|
switch (outcome) {
|
||||||
|
case SUCCESS -> result = "success";
|
||||||
|
case LOCK_UNAVAILABLE -> result = "lock-unavailable";
|
||||||
|
case FAILURE -> result = "failure";
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals("lock-unavailable", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void toString_returnsName() {
|
||||||
|
assertEquals("SUCCESS", BatchRunOutcome.SUCCESS.toString());
|
||||||
|
assertEquals("LOCK_UNAVAILABLE", BatchRunOutcome.LOCK_UNAVAILABLE.toString());
|
||||||
|
assertEquals("FAILURE", BatchRunOutcome.FAILURE.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void enumHashCode_consistency() {
|
||||||
|
// Test hashCode consistency for enum values
|
||||||
|
assertEquals(BatchRunOutcome.SUCCESS.hashCode(), BatchRunOutcome.SUCCESS.hashCode());
|
||||||
|
assertNotEquals(BatchRunOutcome.SUCCESS.hashCode(), BatchRunOutcome.FAILURE.hashCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void enumEquals_consistency() {
|
||||||
|
// Test equals consistency for enum values
|
||||||
|
assertEquals(BatchRunOutcome.SUCCESS, BatchRunOutcome.SUCCESS);
|
||||||
|
assertNotEquals(BatchRunOutcome.SUCCESS, BatchRunOutcome.FAILURE);
|
||||||
|
// Enums should not equal null
|
||||||
|
assertNotEquals(BatchRunOutcome.SUCCESS, null);
|
||||||
|
// Enums should not equal objects of different types
|
||||||
|
assertNotEquals(BatchRunOutcome.SUCCESS, "SUCCESS");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void allMethods_coveredInTests() {
|
||||||
|
// Ensure all public methods are tested at least once with each enum value
|
||||||
|
for (BatchRunOutcome outcome : BatchRunOutcome.values()) {
|
||||||
|
// Just invoke each method to ensure no runtime exceptions
|
||||||
|
assertNotNull(outcome.message());
|
||||||
|
outcome.isSuccess();
|
||||||
|
outcome.isFailure();
|
||||||
|
outcome.isLockUnavailable();
|
||||||
|
assertNotNull(outcome.toString());
|
||||||
|
assertEquals(outcome.hashCode(), outcome.hashCode()); // Test consistency
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
6
review-input/.gitignore
vendored
6
review-input/.gitignore
vendored
@@ -1,6 +0,0 @@
|
|||||||
/jacoco-aggregate.xml
|
|
||||||
/pdf-umbenenner-adapter-in-cli-mutations.xml
|
|
||||||
/pdf-umbenenner-adapter-out-mutations.xml
|
|
||||||
/pdf-umbenenner-application-mutations.xml
|
|
||||||
/pdf-umbenenner-bootstrap-mutations.xml
|
|
||||||
/pdf-umbenenner-domain-mutations.xml
|
|
||||||
Reference in New Issue
Block a user