Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

testing improvements #118

Merged
merged 5 commits into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions topics/testing/code/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@
</dependency>

<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.25.3</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -103,6 +103,14 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
</exclusion>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,7 @@

import java.util.List;

public class ConsoleAccountPrinter {
@SuppressWarnings("PMD.UnusedPrivateField")
private final Console console;

public ConsoleAccountPrinter(Console console) {
this.console = console;
}

public record ConsoleAccountPrinter(Console console) {
@SuppressWarnings("PMD")
public void print(List<StatementLine> statementLines) {}
}
Original file line number Diff line number Diff line change
@@ -1,40 +1,10 @@
package ch.scs.jumpstart.bankkata.exercise;

import java.time.LocalDate;
import java.util.Objects;

public class Statement {
private final int amount;
private final LocalDate date;
public record Statement(int amount, LocalDate date) {

public static Statement of(int amount, LocalDate date) {
return new Statement(amount, date);
}

private Statement(int amount, LocalDate date) {

this.amount = amount;
this.date = date;
}

public int getAmount() {
return amount;
}

public LocalDate getDate() {
return date;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Statement statement = (Statement) o;
return amount == statement.amount && date.equals(statement.date);
}

@Override
public int hashCode() {
return Objects.hash(amount, date);
}
}
Original file line number Diff line number Diff line change
@@ -1,51 +1,10 @@
package ch.scs.jumpstart.bankkata.exercise;

import java.time.LocalDate;
import java.util.Objects;

public final class StatementLine {
private final int amount;
private final LocalDate date;
private final int balance;
public record StatementLine(int amount, LocalDate date, int balance) {

public static StatementLine of(int amount, LocalDate date, int balance) {
return new StatementLine(amount, date, balance);
}

private StatementLine(int amount, LocalDate date, int balance) {

this.amount = amount;
this.date = date;
this.balance = balance;
}

public int getAmount() {
return amount;
}

public LocalDate getDate() {
return date;
}

public int getBalance() {
return balance;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StatementLine that = (StatementLine) o;
return amount == that.amount && balance == that.balance && date.equals(that.date);
}

@Override
public int hashCode() {
return Objects.hash(amount, date, balance);
}

@Override
public String toString() {
return "StatementLine{" + "amount=" + amount + ", date=" + date + ", balance=" + balance + '}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,8 @@ public void print() {
int balance = 0;
var statementLines = new ArrayList<SolutionStatementLine>();
for (SolutionStatement statement : statementList) {
balance += statement.getAmount();
statementLines.add(
SolutionStatementLine.of(statement.getAmount(), statement.getDate(), balance));
balance += statement.amount();
statementLines.add(SolutionStatementLine.of(statement.amount(), statement.date(), balance));
}
consoleAccountPrinter.print(statementLines);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,17 @@
import java.util.Comparator;
import java.util.List;

public class SolutionConsoleAccountPrinter {
private final SolutionConsole console;

public SolutionConsoleAccountPrinter(SolutionConsole console) {
this.console = console;
}
public record SolutionConsoleAccountPrinter(SolutionConsole console) {

public void print(List<SolutionStatementLine> statementLines) {
console.printLine("Date || Amount || Balance");
statementLines.stream()
.sorted(Comparator.comparing(SolutionStatementLine::getDate).reversed())
.sorted(Comparator.comparing(SolutionStatementLine::date).reversed())
.forEach(statementLine -> console.printLine(createLine(statementLine)));
}

private String createLine(SolutionStatementLine statementLine) {
return String.join(
" || ",
List.of(
statementLine.getDate().toString(),
String.valueOf(statementLine.getAmount()),
String.valueOf(statementLine.getBalance())));
return "%s || %s || %s"
.formatted(statementLine.date(), statementLine.amount(), statementLine.balance());
}
}
Original file line number Diff line number Diff line change
@@ -1,40 +1,9 @@
package ch.scs.jumpstart.bankkata.solution;

import java.time.LocalDate;
import java.util.Objects;

public class SolutionStatement {
private final int amount;
private final LocalDate date;

public record SolutionStatement(int amount, LocalDate date) {
public static SolutionStatement of(int amount, LocalDate date) {
return new SolutionStatement(amount, date);
}

private SolutionStatement(int amount, LocalDate date) {

this.amount = amount;
this.date = date;
}

public int getAmount() {
return amount;
}

public LocalDate getDate() {
return date;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SolutionStatement statement = (SolutionStatement) o;
return amount == statement.amount && date.equals(statement.date);
}

@Override
public int hashCode() {
return Objects.hash(amount, date);
}
}
Original file line number Diff line number Diff line change
@@ -1,51 +1,10 @@
package ch.scs.jumpstart.bankkata.solution;

import java.time.LocalDate;
import java.util.Objects;

public final class SolutionStatementLine {
private final int amount;
private final LocalDate date;
private final int balance;
public record SolutionStatementLine(int amount, LocalDate date, int balance) {

public static SolutionStatementLine of(int amount, LocalDate date, int balance) {
return new SolutionStatementLine(amount, date, balance);
}

private SolutionStatementLine(int amount, LocalDate date, int balance) {

this.amount = amount;
this.date = date;
this.balance = balance;
}

public int getAmount() {
return amount;
}

public LocalDate getDate() {
return date;
}

public int getBalance() {
return balance;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SolutionStatementLine that = (SolutionStatementLine) o;
return amount == that.amount && balance == that.balance && date.equals(that.date);
}

@Override
public int hashCode() {
return Objects.hash(amount, date, balance);
}

@Override
public String toString() {
return "StatementLine{" + "amount=" + amount + ", date=" + date + ", balance=" + balance + '}';
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,7 @@
package ch.scs.jumpstart.mocking.exercise;

@SuppressWarnings("unused")
public class MoviePrinter {
@SuppressWarnings({"FieldCanBeLocal", "PMD.UnusedPrivateField"})
private final MovieRepository movieRepository;

@SuppressWarnings({"FieldCanBeLocal", "PMD.UnusedPrivateField"})
private final Printer printer;

@SuppressWarnings("unused")
public MoviePrinter(MovieRepository movieRepository, Printer printer) {
this.movieRepository = movieRepository;
this.printer = printer;
}
public record MoviePrinter(MovieRepository movieRepository, Printer printer) {

@SuppressWarnings({"unused", "PMD"})
public void printAllMovies() {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,7 @@
import ch.scs.jumpstart.mocking.exercise.MovieRepository;
import ch.scs.jumpstart.mocking.exercise.Printer;

public class SolutionMoviePrinter {
private final MovieRepository movieRepository;
private final Printer printer;

public SolutionMoviePrinter(MovieRepository movieRepository, Printer printer) {
this.movieRepository = movieRepository;
this.printer = printer;
}
public record SolutionMoviePrinter(MovieRepository movieRepository, Printer printer) {

public void printAllMovies() {
movieRepository.getAllMovies().forEach(printer::print);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public String statement() {
you need to separate these concerns
*/
double totalAmount = 0;
String result = "Rental Record for " + getName() + "\n";
String result = "Rental Record for %s\n".formatted(getName());

for (Rental each : rentals) {
double thisAmount = 0;
Expand All @@ -62,12 +62,12 @@ public String statement() {

// show figures for this rental
//noinspection StringConcatenationInLoop
result += "\t" + each.getMovie().getTitle() + "\t" + thisAmount + "\n";
result += "\t%s\t%s\n".formatted(each.getMovie().getTitle(), thisAmount);
totalAmount += thisAmount;
}

// add footer lines
result += "Amount owed is " + totalAmount + "\n";
result += "Amount owed is %s\n".formatted(totalAmount);

return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ public ResponseEntity<Customer> addRental(String customerName, AddRental addRent
if (customerOptional.isEmpty()) {
return ResponseEntity.notFound().build();
}
var movie = movieRepository.findById(addRental.getMovieTitle());
var movie = movieRepository.findById(addRental.movieTitle());
if (movie.isEmpty()) {
return ResponseEntity.notFound().build();
}

var rental = new Rental(movie.get(), addRental.getDaysRented());
var rental = new Rental(movie.get(), addRental.daysRented());
var customer = customerOptional.get();
customer.addRental(rental);
customerRepository.save(customer);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ private String step_2(Customer customer) {
@SuppressWarnings("PMD.UnusedPrivateMethod")
private String step_3(Customer customer) {
double totalAmount = 0;
String result = "Rental Record for " + customer.getName() + "\n";
String result = "Rental Record for %s\n".formatted(customer.getName());

for (Rental each : customer.getRentals()) {
double thisAmount = 0;
Expand All @@ -57,12 +57,12 @@ private String step_3(Customer customer) {

// show figures for this rental
//noinspection StringConcatenationInLoop
result += "\t" + each.getMovie().getTitle() + "\t" + thisAmount + "\n";
result += "\t%s\t%s\n".formatted(each.getMovie().getTitle(), thisAmount);
totalAmount += thisAmount;
}

// add footer lines
result += "Amount owed is " + totalAmount + "\n";
result += "Amount owed is %s\n".formatted(totalAmount);

return result;
}
Expand Down Expand Up @@ -108,11 +108,11 @@ private String step_4(Customer customer) {
}

// create string from data structure
String result = "Rental Record for " + customer.getName() + "\n";
String result = "Rental Record for %s\n".formatted(customer.getName());
for (RentalStatementMovie rentalStatementMovie : rentalStatementMovies) {
//noinspection StringConcatenationInLoop
result +=
"\t" + rentalStatementMovie.getTitle() + "\t" + rentalStatementMovie.getAmount() + "\n";
"\t%s\t%s\n".formatted(rentalStatementMovie.getTitle(), rentalStatementMovie.getAmount());
}
result += "Amount owed is " + sum + "\n";

Expand Down
Loading
Loading