From c13dbd237bf3ab23989cf87ba3dce134e202f80a Mon Sep 17 00:00:00 2001 From: David Whitlock Date: Sat, 25 Apr 2026 09:27:17 -0700 Subject: [PATCH] Add an integration test for PhoneBillDAO to increase code coverage. --- .../pdx/cs/joy/phonebill/PhoneBillDAOIT.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 projects-parent/originals-parent/phonebill/src/it/java/edu/pdx/cs/joy/phonebill/PhoneBillDAOIT.java diff --git a/projects-parent/originals-parent/phonebill/src/it/java/edu/pdx/cs/joy/phonebill/PhoneBillDAOIT.java b/projects-parent/originals-parent/phonebill/src/it/java/edu/pdx/cs/joy/phonebill/PhoneBillDAOIT.java new file mode 100644 index 000000000..cd65b4c2f --- /dev/null +++ b/projects-parent/originals-parent/phonebill/src/it/java/edu/pdx/cs/joy/phonebill/PhoneBillDAOIT.java @@ -0,0 +1,39 @@ +package edu.pdx.cs.joy.phonebill; + +import edu.pdx.cs.joy.InvokeMainTestCase; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.nio.file.Path; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.MatcherAssert.assertThat; + +/** + * Integration tests for {@link PhoneBillDAO#main(String[])}. + */ +class PhoneBillDAOIT extends InvokeMainTestCase { + + private MainMethodResult invokeMain(String... args) { + return invokeMain(PhoneBillDAO.class, args); + } + + @Test + void testNoCommandLineArguments() { + MainMethodResult result = invokeMain(); + + assertThat(result.getTextWrittenToStandardError(), + containsString("Usage: java PhoneBillDAO ")); + } + + @Test + void testCreatesAndRetrievesPhoneBill(@TempDir Path tempDirectory) { + String databaseFile = tempDirectory.resolve("phonebill").toString(); + String customerName = "Test Customer"; + + MainMethodResult result = invokeMain(databaseFile, customerName); + + assertThat(result.getTextWrittenToStandardOut(), + containsString("Retrieved PhoneBill for customer: " + customerName)); + } +}