priceList) {
- String[] orderData = orderString.split("\\s+");
- Integer productPrice = priceList.get(orderData[0].split("-")[1]);
- return Integer.parseInt(orderData[1]) * productPrice;
- }
-
- public static void main(String[] args) {
- System.out.println(new SplitPhase().calculateOrderPrice("Chair-CHR 4", Collections.singletonMap("CHR", 5)));
- }
-}
diff --git a/src/main/java/victor/training/cleancode/refactoring/SplitVariable.java b/src/main/java/victor/training/cleancode/refactoring/SplitVariable.java
deleted file mode 100644
index 742250b11..000000000
--- a/src/main/java/victor/training/cleancode/refactoring/SplitVariable.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package victor.training.cleancode.refactoring;
-
-public class SplitVariable {
-
- // @see test
- public static int discount(int price, int quantity) {
- if (price > 50) price = price - 2;
- if (quantity > 100) price = price - 1;
- return price;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/victor/training/cleancode/refactoring/inheritance/ExtractInterface.java b/src/main/java/victor/training/cleancode/refactoring/inheritance/ExtractInterface.java
deleted file mode 100644
index 4e4cb60f3..000000000
--- a/src/main/java/victor/training/cleancode/refactoring/inheritance/ExtractInterface.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package victor.training.cleancode.refactoring.inheritance;
-
-class CsvWriter {
-
- public void writeLine() {
- }
-
- public void writeCell(String value) {
- }
-}
-
-class SomeOtherClass {
- public void writeFooter(CsvWriter writer) {
- writer.writeCell("Generated with X SoftWare");
- writer.writeLine();
- }
-}
-
-class AnotherDistantClass {
- private final CsvWriter csvWriter;
-
- public AnotherDistantClass(CsvWriter csvWriter) {
- this.csvWriter = csvWriter;
- }
- public void writeHeader() {
- csvWriter.writeCell("Head1");
- csvWriter.writeCell("Head2");
- csvWriter.writeLine();
- }
-
-}
diff --git a/src/main/java/victor/training/cleancode/refactoring/inheritance/ExtractSuperClass.java b/src/main/java/victor/training/cleancode/refactoring/inheritance/ExtractSuperClass.java
deleted file mode 100644
index 3222c592c..000000000
--- a/src/main/java/victor/training/cleancode/refactoring/inheritance/ExtractSuperClass.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package victor.training.cleancode.refactoring.inheritance;
-
-
-class S {}
-class A {
- private int x;
- private int y;
- void m() {System.out.println(x);}
- void n() {x ++;}
-}
-
-class B {
- private int x;
- private int y;
- void m() {System.out.println(x);}
-}
-class C {
- private int x;
- void m() {System.out.println(x);}
- void n() {x++;}
-}
\ No newline at end of file
diff --git a/src/main/java/victor/training/cleancode/refactoring/inheritance/SubclassToDelegate.java b/src/main/java/victor/training/cleancode/refactoring/inheritance/SubclassToDelegate.java
deleted file mode 100644
index 74a0944ca..000000000
--- a/src/main/java/victor/training/cleancode/refactoring/inheritance/SubclassToDelegate.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package victor.training.cleancode.refactoring.inheritance;
-
-class Order
-{
- private Warehouse warehouse;
-
- // TODO if delegate != null -> delegate.prioritityPlan...
- public int daysToShip() {
- return warehouse.getDaysToShip();
- }
-}
-
-class PriorityOrder extends Order
-{
- private PriorityPlan priorityPlan;
-
- public int daysToShip() {
- return priorityPlan.getDaysToShip();
- }
-}
-
-class PriorityPlan {
- public int getDaysToShip() {
- return 3;
- }
-}
-
-class Warehouse {
-
- public int getDaysToShip() {
- return 5;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/victor/training/cleancode/refactoring/inheritance/SuperclassToDelegate.java b/src/main/java/victor/training/cleancode/refactoring/inheritance/SuperclassToDelegate.java
deleted file mode 100644
index 29e9ace31..000000000
--- a/src/main/java/victor/training/cleancode/refactoring/inheritance/SuperclassToDelegate.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package victor.training.cleancode.refactoring.inheritance;
-
-class Rectangle {
- private int width;
- private int height;
-
- public int area() {
- return width * height;
- }
- public int perimeter() {
- return 2 * (width + height);
- }
-
- public int getHeight() {
- return height;
- }
-
- public void setHeight(int height) {
- this.height = height;
- }
-
- public int getWidth() {
- return width;
- }
-
- public void setWidth(int width) {
- this.width = width;
- }
-}
-
-// TODO
-class Square {}
\ No newline at end of file
diff --git a/src/main/java/victor/training/cleancode/refactoring/inheritance/TypecodeToSubclass.java b/src/main/java/victor/training/cleancode/refactoring/inheritance/TypecodeToSubclass.java
deleted file mode 100644
index d2b3df59a..000000000
--- a/src/main/java/victor/training/cleancode/refactoring/inheritance/TypecodeToSubclass.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package victor.training.cleancode.refactoring.inheritance;
-
-class TheatreEvent {
- enum Category {
- TYPE_MUSICAL,
- TYPE_DRAMA,
- TYPE_COMEDY
- }
-
- private String title;
- private int duration;
- private int weekDay;
- private Category type;
- private boolean adultComedy;
-
- public String getTitle() {
- return title;
- }
-
- public int minimumAge() {
- switch (type) {
- case TYPE_MUSICAL:
- return 6;
- case TYPE_DRAMA:
- return 10;
- case TYPE_COMEDY:
- return adultComedy ? 18 : (duration > 120 ? 9 : 7);
- }
- return -1;
- }
-
- public boolean isWeekend() {
- return weekDay >= 6;
- }
-
- public float basePrice() {
- switch (type) {
- case TYPE_MUSICAL:
- return 60 + (isWeekend() ? 10 : 0);
- case TYPE_DRAMA:
- return 40 + (isWeekend() ? 5 : 0);
- case TYPE_COMEDY:
- return 50 - (adultComedy ? 5 : 0);
- }
- return 0;
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/BossTest.java b/src/test/java/victor/training/cleancode/BossTest.java
deleted file mode 100644
index db2b99dbb..000000000
--- a/src/test/java/victor/training/cleancode/BossTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package victor.training.cleancode;
-
-import org.junit.jupiter.api.Test;
-import victor.training.cleancode.CaptureSystemOutput.OutputCapture;
-
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-class BossTest {
-
- private final Boss target = new Boss();
-
- @Test
- @CaptureSystemOutput
- void bossLevelFluff(OutputCapture outputCapture) {
- target.bossLevel(true, List.of(new Task(5)), false);
-
- assertThat(outputCapture.toString())
- .isEqualToIgnoringNewLines("Logic1\n" +
- "Logic3\n" +
- "Starting Task(id=5, started=false)\n" +
- "Audit task #1: Task(id=5, started=true)\n" +
- "Logic6 1\n" +
- "Task Ids: [5]\n" +
- "Logic8\n");
- }
- @Test
- @CaptureSystemOutput
- void bossLevelFluff_c323(OutputCapture outputCapture) {
- target.bossLevel(true, List.of(new Task(5)), true);
-
- assertThat(outputCapture.toString())
- .isEqualToIgnoringNewLines("Logic1\n" +
- "Logic3\n" +
- "Starting Task(id=5, started=false)\n" +
- "My Logic: Task(id=5, started=true)\n" +
- "Audit task #1: Task(id=5, started=true)\n" +
- "Logic6 1\n" +
- "Task Ids: [5]\n" +
- "Logic8");
- }
-
- @Test
- @CaptureSystemOutput
- void bossLevelFluff_emptyList(OutputCapture outputCapture) {
- target.bossLevel(true, List.of(), false);
-
- assertThat(outputCapture.toString())
- .isEqualToIgnoringNewLines("");
- }
- @Test
- @CaptureSystemOutput
- void bossLevelFalse(OutputCapture outputCapture) {
- target.bossLevel(false, List.of(new Task(5)), false);
-
- assertThat(outputCapture.toString())
- .isEqualToIgnoringNewLines("Logic1\n" +
- "Logic7 on fluff=false [Task(id=5, started=false)]\n" +
- "Logic8\n");
- }
-
- @Test
- @CaptureSystemOutput
- void stuffForEachElement_inWateverOrder(OutputCapture outputCapture) {
- target.bossLevel(true, List.of(new Task(5),new Task(6)), false);
-
- // we don't care in what order we validate or audit tasks
- assertThat(outputCapture.toString())
- .contains("Starting Task(id=5, started=false)")
- .contains("Starting Task(id=6, started=false)")
- .contains("Audit task #1: Task(id=5, started=true)")
- .contains("Audit task #2: Task(id=6, started=true)")
- ;
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/CaptureSystemOutput.java b/src/test/java/victor/training/cleancode/CaptureSystemOutput.java
deleted file mode 100644
index b1675436b..000000000
--- a/src/test/java/victor/training/cleancode/CaptureSystemOutput.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright 2012-2019 the original author or authors.
- *
- * 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 victor.training.cleancode;
-
-import org.junit.jupiter.api.extension.*;
-import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
-import org.junit.jupiter.api.extension.ExtensionContext.Store;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * {@code @CaptureSystemOutput} is a JUnit JUpiter extension for capturing
- * output to {@code System.out} and {@code System.err}
- *
- * Example Usage
- *
- *
- * {@literal @}Test
- * {@literal @}CaptureSystemOutput
- * void systemOut(OutputCapture outputCapture) {
- * System.out.println("Printed to System.out!");
- * assertThat(outputCapture.toString()).contains("System.out!");
- * }
- *
- *
- * Based on code from Spring Boot's
- * OutputCapture
- * rule for JUnit 4 by Phillip Webb and Andy Wilkinson.
- */
-@Target({TYPE, METHOD})
-@Retention(RUNTIME)
-@Documented
-@ExtendWith(CaptureSystemOutput.Extension.class)
-public @interface CaptureSystemOutput {
-
- class Extension implements BeforeEachCallback, AfterEachCallback, ParameterResolver {
- @Override
- public void beforeEach(ExtensionContext context) throws Exception {
- getOutputCapture(context).captureOutput();
- }
-
- @Override
- public void afterEach(ExtensionContext context) throws Exception {
- OutputCapture outputCapture = getOutputCapture(context);
- outputCapture.releaseOutput();
- }
-
- @Override
- public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
- boolean isTestMethodLevel = extensionContext.getTestMethod().isPresent();
- boolean isOutputCapture = parameterContext.getParameter().getType() == OutputCapture.class;
- return isTestMethodLevel && isOutputCapture;
- }
-
- @Override
- public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
- return getOutputCapture(extensionContext);
- }
-
- private OutputCapture getOutputCapture(ExtensionContext context) {
- Namespace namespace = Namespace.create(getClass(), context.getRequiredTestMethod());
- Store store = context.getStore(namespace);
- return store.getOrComputeIfAbsent(OutputCapture.class);
- }
- }
-
- class OutputCapture {
- private CaptureOutputStream captureOut;
- private CaptureOutputStream captureErr;
- private ByteArrayOutputStream copy;
-
- void captureOutput() {
- this.copy = new ByteArrayOutputStream();
- this.captureOut = new CaptureOutputStream(System.out, this.copy);
- this.captureErr = new CaptureOutputStream(System.err, this.copy);
- System.setOut(new PrintStream(this.captureOut));
- System.setErr(new PrintStream(this.captureErr));
- }
-
- void releaseOutput() {
- System.setOut(this.captureOut.getOriginal());
- System.setErr(this.captureErr.getOriginal());
- this.copy = null;
- }
-
- private void flush() {
- try {
- this.captureOut.flush();
- this.captureErr.flush();
- } catch (IOException ex) {
- // ignore
- }
- }
-
- /**
- * Return all captured output to {@code System.out} and {@code System.err}
- * as a single string.
- */
- @Override
- public String toString() {
- flush();
- return this.copy.toString();
- }
-
- private static class CaptureOutputStream extends OutputStream {
- private final PrintStream original;
- private final OutputStream copy;
-
- CaptureOutputStream(PrintStream original, OutputStream copy) {
- this.original = original;
- this.copy = copy;
- }
-
- PrintStream getOriginal() {
- return this.original;
- }
-
- @Override
- public void write(int b) throws IOException {
- this.copy.write(b);
- this.original.write(b);
- this.original.flush();
- }
-
- @Override
- public void write(byte[] b) throws IOException {
- write(b, 0, b.length);
- }
-
- @Override
- public void write(byte[] b, int off, int len) throws IOException {
- this.copy.write(b, off, len);
- this.original.write(b, off, len);
- }
-
- @Override
- public void flush() throws IOException {
- this.copy.flush();
- this.original.flush();
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/CarSearchTest.java b/src/test/java/victor/training/cleancode/CarSearchTest.java
deleted file mode 100644
index 23d659832..000000000
--- a/src/test/java/victor/training/cleancode/CarSearchTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package victor.training.cleancode;
-
-import org.junit.jupiter.api.Test;
-
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-class CarSearchTest {
-
- CarSearch searchEngine = new CarSearch();
-
- CarModel fordFocusMk2 = new CarModel("Ford", "Focus", 2012, 2016);
-
- // Ford Focus: [2012 ---- 2016]
- // Search: [2014 ---- 2018]
- // can't afford a 2021 car
- @Test
- void byYear_match() {
- CarSearchCriteria criteria = new CarSearchCriteria(2014, 2018, "Ford");
-
- List models = searchEngine.filterCarModels(criteria, List.of(fordFocusMk2));
-
- assertThat(models).hasSize(1);
- }
- @Test
- void byYear_no_match() {
- CarSearchCriteria criteria = new CarSearchCriteria(2017, 2018, "Ford");
-
- List models = searchEngine.filterCarModels(criteria, List.of(fordFocusMk2));
-
- assertThat(models).isEmpty();
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/GuardsTest.java b/src/test/java/victor/training/cleancode/GuardsTest.java
deleted file mode 100644
index d087894df..000000000
--- a/src/test/java/victor/training/cleancode/GuardsTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package victor.training.cleancode;
-
-import org.junit.jupiter.api.Test;
-
-import java.util.Collections;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-class GuardsTest {
-
- private final Guards guards = new Guards();
-
- // generated via a 10 minutes chat with GitHub Copilot
- @Test
- void throwsExceptionForBonusPackageValueLessThan10() {
- Marine marine = new Marine(false, false, 10, Collections.emptyList());
- BonusPackage bonusPackage = new BonusPackage(9);
-
- assertThatThrownBy(() -> guards.getPayAmount(marine, bonusPackage))
- .isInstanceOf(IllegalArgumentException.class)
- .hasMessage("Not applicable!");
- }
-
- @Test
- void throwsExceptionForInvalidBonusPackageValueTooLarge() {
- Marine marine = new Marine(false, false, 10, Collections.emptyList());
- BonusPackage bonusPackage = new BonusPackage(101);
-
- assertThatThrownBy(() -> guards.getPayAmount(marine, bonusPackage))
- .isInstanceOf(IllegalArgumentException.class)
- .hasMessage("Not applicable!");
- }
-
- @Test
- void throwsExceptionForNullMarine() {
- Marine marine = null;
- BonusPackage bonusPackage = new BonusPackage(50);
-
- assertThatThrownBy(() -> guards.getPayAmount(marine, bonusPackage))
- .isInstanceOf(IllegalArgumentException.class)
- .hasMessage("Not applicable!");
- }
-
- @Test
- void throwsExceptionForInvalidBonusPackageValue() {
- Marine marine = new Marine(false, false, 10, Collections.emptyList());
- BonusPackage bonusPackage = new BonusPackage(200);
-
- assertThatThrownBy(() -> guards.getPayAmount(marine, bonusPackage));
- }
-
- @Test
- void calculatesPayAmountForActiveMarine() {
- Marine marine = new Marine(false, false, 10, Collections.emptyList());
- BonusPackage bonusPackage = new BonusPackage(50);
-
- int payAmount = guards.getPayAmount(marine, bonusPackage);
-
- assertThat(payAmount).isEqualTo(1050);
- }
-
-
- @Test
- void calculatesPayAmountForMarineWithThreeAwards() {
- Award award = new Award();
- Marine marine = new Marine(false, false, 10, List.of(award, award, award));
- BonusPackage bonusPackage = new BonusPackage(50);
-
- int payAmount = guards.getPayAmount(marine, bonusPackage);
-
- assertThat(payAmount).isEqualTo(4050);
- }
-
- @Test
- void calculatesPayAmountForRetiredMarine() {
- Marine marine = new Marine(false, true, 10, Collections.emptyList());
- BonusPackage bonusPackage = new BonusPackage(50);
-
- int payAmount = guards.getPayAmount(marine, bonusPackage);
-
- assertThat(payAmount).isEqualTo(2);
- }
-
- @Test
- void calculatesPayAmountForMarineWithAwards() {
- Award award = new Award();
- Marine marine = new Marine(false, false, 10, List.of(award));
- BonusPackage bonusPackage = new BonusPackage(50);
-
- int payAmount = guards.getPayAmount(marine, bonusPackage);
-
- assertThat(payAmount).isEqualTo(2050);
- }
-
- @Test
- void calculatesPayAmountForDeadMarine() {
- Marine marine = new Marine(true, false, 10, Collections.emptyList());
- BonusPackage bonusPackage = new BonusPackage(50);
-
- int payAmount = guards.getPayAmount(marine, bonusPackage);
-
- assertThat(payAmount).isEqualTo(Guards.DEAD_PAY_AMOUNT);
- }
-
- @Test
- void throwsExceptionForMarineWithNullYearsService() {
- Marine marine = new Marine(false, false, null, Collections.emptyList());
- BonusPackage bonusPackage = new BonusPackage(50);
-
- assertThatThrownBy(() -> guards.getPayAmount(marine, bonusPackage))
- .isInstanceOf(IllegalArgumentException.class)
- .hasMessage("Any marine should have the years of service set");
- }
-
- @Test
- void throwsExceptionForInvalidBonusPackage() {
- Marine marine = new Marine(false, false, 10, Collections.emptyList());
- BonusPackage bonusPackage = new BonusPackage(200);
-
- assertThatThrownBy(() -> guards.getPayAmount(marine, bonusPackage))
- .isInstanceOf(IllegalArgumentException.class)
- .hasMessage("Not applicable!");
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/SomeServiceTest.java b/src/test/java/victor/training/cleancode/SomeServiceTest.java
deleted file mode 100644
index 7e26815b1..000000000
--- a/src/test/java/victor/training/cleancode/SomeServiceTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package victor.training.cleancode;
-
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class SomeServiceTest {
-
- @Test
- void greenMethodTest() { // bad test (evergreen)
- new SomeService().greenMethod(1, new Task(5));
- }
-
- @Test
- void yellowMethodTest() {
- new SomeService().yellowMethod(1, new Task(5));
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/SplitLoopHardTest.java b/src/test/java/victor/training/cleancode/SplitLoopHardTest.java
deleted file mode 100644
index 2e656921b..000000000
--- a/src/test/java/victor/training/cleancode/SplitLoopHardTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package victor.training.cleancode;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import victor.training.cleancode.SplitLoop.Employee;
-import victor.training.cleancode.SplitLoopHard.EmployeeService;
-
-import java.util.Collections;
-
-import static java.util.Arrays.asList;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(MockitoExtension.class)
-class SplitLoopHardTest {
- @Mock
- EmployeeService employeeService;
- @InjectMocks
- SplitLoopHard splitLoopHard;
-
- Employee consultant = new Employee(1, 24, 2000, true);
- Employee employee = new Employee(2, 30, 4000, false);
-
- @Test
- void consultantIdNull() {
- consultant = consultant.toBuilder().id(null).build();
-
- String actual = splitLoopHard.computeStatsHard(Collections.singletonList(consultant));
-
- assertThat(actual).isEqualTo("Employee(s) not persisted");
- }
-
- @Test
- void throws_consultantSalaryNull_retrieveNull() {
- consultant = consultant.toBuilder().salary(null).build();
- when(employeeService.retrieveSalary(consultant.id())).thenReturn(null);
-
- assertThatExceptionOfType(RuntimeException.class).isThrownBy(() ->
- splitLoopHard.computeStatsHard(Collections.singletonList(consultant)));
- }
-
- @Test
- void consultantSalaryNull_retrieveSalary_avg() {
- consultant = consultant.toBuilder().salary(null).build();
- when(employeeService.retrieveSalary(consultant.id())).thenReturn(3000);
- Employee consultant2 = new Employee(15, 56, 5000, true);
-
- String actual = splitLoopHard.computeStatsHard(asList(consultant, consultant2));
-
- assertThat(actual).isEqualTo("Average employee age = 0; Average consultant salary = 4000.0");
- }
-
- @Test
- void employeeAgeAverage() {
- Employee employee2 = new Employee(15, 56, 2000, false);
-
- String actual = splitLoopHard.computeStatsHard(asList(employee, employee2));
-
- assertThat(actual).isEqualTo("Average employee age = 43; Average consultant salary = 0.0");
- }
-}
diff --git a/src/test/java/victor/training/cleancode/SplitLoopTest.java b/src/test/java/victor/training/cleancode/SplitLoopTest.java
deleted file mode 100644
index 2ae857ce5..000000000
--- a/src/test/java/victor/training/cleancode/SplitLoopTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package victor.training.cleancode;
-
-import org.junit.jupiter.api.Test;
-import victor.training.cleancode.SplitLoop.Employee;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-class SplitLoopTest {
-
- @Test
- void computesCorrectAverageSalaryAndTotalConsultantSalary() {
- List employees = List.of(
- Employee.builder().id(1).age(24).salary(2000).consultant(false).build(),
- Employee.builder().id(2).age(27).salary(2000).consultant(false).build(),
- Employee.builder().id(3).age(28).salary(1500).consultant(true).build(),
- Employee.builder().id(4).age(30).salary(2500).consultant(true).build()
- );
-
- String result = new SplitLoop().computeStats(employees);
-
- assertThat(result).isEqualTo("Total consultant salary: 4000.0; ids: [1, 2, 3, 4]");
- }
-
- @Test
- void returnsZeroForEmptyEmployeeList() {
- List employees = new ArrayList<>();
-
- String result = new SplitLoop().computeStats(employees);
-
- assertThat(result).isEqualTo("Total consultant salary: 0.0; ids: []");
- }
-
- @Test
- void computesCorrectlyWithAllConsultants() {
- List employees = List.of(
- Employee.builder().id(1).age(24).salary(3000).consultant(true).build(),
- Employee.builder().id(2).age(27).salary(4000).consultant(true).build()
- );
-
- String result = new SplitLoop().computeStats(employees);
-
- assertThat(result).isEqualTo("Total consultant salary: 7000.0; ids: [1, 2]");
- }
-
- @Test
- void computesCorrectlyWithNoConsultants() {
- List employees = List.of(
- Employee.builder().id(1).age(24).salary(2000).consultant(false).build(),
- Employee.builder().id(2).age(27).salary(2500).consultant(false).build()
- );
-
- String result = new SplitLoop().computeStats(employees);
-
- assertThat(result).isEqualTo("Total consultant salary: 0.0; ids: [1, 2]");
- }
-
-}
diff --git a/src/test/java/victor/training/cleancode/SwitchTest.java b/src/test/java/victor/training/cleancode/SwitchTest.java
deleted file mode 100644
index 5d64840e6..000000000
--- a/src/test/java/victor/training/cleancode/SwitchTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package victor.training.cleancode;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.CsvSource;
-import victor.training.cleancode.CaptureSystemOutput.OutputCapture;
-import victor.training.cleancode.Switch.Movie;
-import victor.training.cleancode.Switch.Movie.Category;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-class SwitchTest {
-
- private Switch target = new Switch();
-
- @ParameterizedTest
- @CsvSource({
- "REGULAR,4,5",
- "NEW_RELEASE,3,6",
- "CHILDREN,100,5"})
- void computePrice(Movie.Category category, int days, int expectedPrice) {
- assertThat(target.computePrice(new Movie(category, "noop"), days)).isEqualTo(expectedPrice);
- }
-
- @Test
- @CaptureSystemOutput
- void processMovie_regular(OutputCapture outputCapture) {
- target.processMovie(new Movie(Category.REGULAR, "MMM"));
- assertThat(outputCapture.toString()).isEqualToNormalizingNewlines("""
- Some repo calls
- Some shared initial stuff
- Process regular movie: Movie{category=REGULAR, title='MMM'}
- More common code after
- """);
- }
- @Test
- @CaptureSystemOutput
- void processMovie_new_release(OutputCapture outputCapture) {
- target.processMovie(new Movie(Category.NEW_RELEASE, "MMM"));
- assertThat(outputCapture.toString()).isEqualToNormalizingNewlines("""
- Some repo calls
- Some shared initial stuff
- Process new release movie: Movie{category=NEW_RELEASE, title='MMM'}
- More common code after
- """);
- }
- @Test
- @CaptureSystemOutput
- void processMovie_children(OutputCapture outputCapture) {
- target.processMovie(new Movie(Category.CHILDREN, "MMM"));
- assertThat(outputCapture.toString()).isEqualToNormalizingNewlines("""
- Some repo calls
- Some shared initial stuff
- Process children movie: Movie{category=CHILDREN, title='MMM'}
- More common code after
- """);
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/extra/ReplaceTempWithQueryTest.java b/src/test/java/victor/training/cleancode/extra/ReplaceTempWithQueryTest.java
deleted file mode 100644
index 9fc57c09d..000000000
--- a/src/test/java/victor/training/cleancode/extra/ReplaceTempWithQueryTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package victor.training.cleancode.extra;
-
-import org.junit.jupiter.api.Test;
-import victor.training.cleancode.refactoring.ReplaceTempWithQuery;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.within;
-
-class ReplaceTempWithQueryTest {
- @Test
- void basePrice() {
- ReplaceTempWithQuery pc = new ReplaceTempWithQuery(1, 5);
- assertThat(pc.computePrice()).isCloseTo(4.9, within(0.001));
- assertThat(pc.computeFidelityPoints()).isEqualTo(2);
- }
-
- @Test
- void quantityDiscount() {
- ReplaceTempWithQuery pc = new ReplaceTempWithQuery(10, 5);
- assertThat(pc.computePrice()).isCloseTo(49, within(0.001));
- assertThat(pc.computeFidelityPoints()).isEqualTo(25);
- }
-
- @Test
- void amountDiscount() {
- ReplaceTempWithQuery pc = new ReplaceTempWithQuery(1, 1001);
- assertThat(pc.computePrice()).isCloseTo(950.95, within(0.01));
- assertThat(pc.computeFidelityPoints()).isEqualTo(500);
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/extra/SplitVariableTest.java b/src/test/java/victor/training/cleancode/extra/SplitVariableTest.java
deleted file mode 100644
index dc01c263b..000000000
--- a/src/test/java/victor/training/cleancode/extra/SplitVariableTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package victor.training.cleancode.extra;
-
-import org.junit.jupiter.api.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static victor.training.cleancode.refactoring.SplitVariable.discount;
-
-class SplitVariableTest {
- @Test
- void test() {
- assertThat(discount(1, 1)).isEqualTo(1);
- assertThat(discount(50, 1)).isEqualTo(50);
- assertThat(discount(51, 1)).isEqualTo(49);
- assertThat(discount(1, 101)).isEqualTo(0);
- assertThat(discount(50, 101)).isEqualTo(49);
- assertThat(discount(51, 101)).isEqualTo(48);
- }
-}
diff --git a/src/test/java/victor/training/cleancode/fp/FunctionalChainsawTest.java b/src/test/java/victor/training/cleancode/fp/FunctionalChainsawTest.java
deleted file mode 100644
index ef6ea198c..000000000
--- a/src/test/java/victor/training/cleancode/fp/FunctionalChainsawTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package victor.training.cleancode.fp;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.mockito.junit.jupiter.MockitoSettings;
-import org.mockito.quality.Strictness;
-import victor.training.cleancode.fp.support.*;
-
-import java.time.LocalDate;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.when;
-import static victor.training.cleancode.fp.support.ProductCategory.HOME;
-
-@ExtendWith(MockitoExtension.class)
-@MockitoSettings(strictness = Strictness.LENIENT)
-class FunctionalChainsawTest {
-
- @Mock
- private ProductRepo productRepo;
-
- @Mock
- private OrderRepo orderRepo;
-
- @InjectMocks
- private FunctionalChainsaw functionalChainsaw;
-
- private Product product = new Product("Chair", HOME)
- .setId(7L)
- .setDeleted(false);
-
- private Order anOrder() {
- return new Order()
- .setActive(true)
- .setCreationDate(LocalDate.now().minusDays(15))
- .setOrderLines(List.of(new OrderLine(product, 11)));
- }
-
- @Test
- void allInOneOrder() {
- when(orderRepo.findAll()).thenReturn(List.of(anOrder()));
- when(productRepo.getHiddenProductIds()).thenReturn(List.of());
-
- assertThat(functionalChainsaw.getHotProducts()).containsExactly(product);
- }
-
- @Test
- void inTwoOrders() {
- Order order1 = anOrder().setOrderLines(List.of(new OrderLine(product, 5)));
- Order order2 = anOrder().setOrderLines(List.of(new OrderLine(product, 6)));
-
- when(orderRepo.findAll()).thenReturn(List.of(order1, order2));
- when(productRepo.getHiddenProductIds()).thenReturn(List.of());
-
- assertThat(functionalChainsaw.getHotProducts()).containsExactly(product);
- }
-
- @Test
- void excludesDeletedProducts() {
- product.setDeleted(true);
- when(orderRepo.findAll()).thenReturn(List.of(anOrder()));
- when(productRepo.getHiddenProductIds()).thenReturn(List.of());
-
- assertThat(functionalChainsaw.getHotProducts()).isEmpty();
- }
-
- @Test
- void excludesHiddenProducts() {
- when(orderRepo.findAll()).thenReturn(List.of(anOrder()));
- when(productRepo.getHiddenProductIds()).thenReturn(List.of(product.getId()));
-
- assertThat(functionalChainsaw.getHotProducts()).isEmpty();
- }
-
- @Test
- void excludesOldOrders() {
- when(orderRepo.findAll()).thenReturn(List.of(anOrder().setCreationDate(LocalDate.now().minusYears(1))));
- when(productRepo.getHiddenProductIds()).thenReturn(List.of());
-
- assertThat(functionalChainsaw.getHotProducts()).isEmpty();
- }
-
- @Test
- void excludesInactiveOrders() {
- when(orderRepo.findAll()).thenReturn(List.of(anOrder().setActive(false)));
- when(productRepo.getHiddenProductIds()).thenReturn(List.of());
-
- assertThat(functionalChainsaw.getHotProducts()).isEmpty();
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/fp/LoanPatternTest.java b/src/test/java/victor/training/cleancode/fp/LoanPatternTest.java
deleted file mode 100644
index f62269038..000000000
--- a/src/test/java/victor/training/cleancode/fp/LoanPatternTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package victor.training.cleancode.fp;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import victor.training.cleancode.fp.support.Order;
-import victor.training.cleancode.fp.support.OrderRepo;
-
-import java.io.IOException;
-import java.util.stream.Stream;
-
-import static java.time.LocalDate.parse;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(MockitoExtension.class)
-class LoanPatternTest {
- @Mock
- private OrderRepo orderRepo;
- @InjectMocks
- private FileExportService exporter;
-
-
- @Test
- void exportOrders() throws IOException {
- Order order = new Order();
- order.setId(1L);
- order.setCreationDate(parse("2021-01-07"));
- when(orderRepo.findByActiveTrue()).thenReturn(Stream.of(order));
-
- new LoanPattern(exporter).exportOrders();
-
- // NOW read the file from the disk ... Yuck!
-
-// assertEquals("OrderID;Date\n1;2021-01-07", sw.toString());
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/fp/MutantPipelineTest.java b/src/test/java/victor/training/cleancode/fp/MutantPipelineTest.java
deleted file mode 100644
index 9828329a7..000000000
--- a/src/test/java/victor/training/cleancode/fp/MutantPipelineTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package victor.training.cleancode.fp;
-
-import org.junit.jupiter.api.Test;
-import victor.training.cleancode.fp.support.*;
-
-import java.util.List;
-
-import static java.time.LocalDate.now;
-import static java.util.Optional.empty;
-import static java.util.Optional.of;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-class MutantPipelineTest {
-
-
- public static final long SSO_ID = 1L;
- public static final long PAYMENT_CARD_ID = 123L;
- PaymentCardRepository repository = mock(PaymentCardRepository.class);
- MutantPipeline mutantPipeline = new MutantPipeline(repository, new PaymentCardMapper());
-
- @Test
- void totalOrderPrice() {
- var orders = List.of(
- new Order().setPrice(10).setActive(true),
- new Order().setPrice(5).setActive(true),
- new Order().setPrice(3).setActive(false)
- );
- int result = mutantPipeline.totalActiveOrderPrice(orders);
- assertThat(result).isEqualTo(15);
- }
-
- @Test
- void getShipDates() {
- var orders = List.of(
- new Order().setShipDate(now()).setActive(true),
- new Order().setShipDate(null).setActive(true),
- new Order().setShipDate(now()).setActive(false)
- );
- var result = mutantPipeline.getShipDates(orders);
- assertThat(result).containsExactly(now());
- }
-
- @Test
- void updateCardAlias_success() {
- when(repository.findById(PAYMENT_CARD_ID)).thenReturn(of(new PaymentCard().setId(SSO_ID)));
- when(repository.save(any())).thenAnswer(i -> i.getArgument(0));
-
- var result = mutantPipeline.updateCardAlias(PAYMENT_CARD_ID, SSO_ID, "UpdatedAlias");
-
- assertThat(result).isEqualTo(new PaymentCardDto(SSO_ID, "UpdatedAlias"));
- }
-
- @Test
- void updateCardAlias_notFound_throwsException() {
- when(repository.findById(PAYMENT_CARD_ID)).thenReturn(empty());
-
- assertThatThrownBy(() -> mutantPipeline.updateCardAlias(PAYMENT_CARD_ID, SSO_ID, "UpdatedAlias"))
- .isInstanceOf(IllegalArgumentException.class);
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/fp/OptionalAbuseTest.java b/src/test/java/victor/training/cleancode/fp/OptionalAbuseTest.java
deleted file mode 100644
index f23c57df5..000000000
--- a/src/test/java/victor/training/cleancode/fp/OptionalAbuseTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package victor.training.cleancode.fp;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.junit.jupiter.MockitoExtension;
-import victor.training.cleancode.fp.OptionalAbuse.Entity;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static victor.training.cleancode.fp.OptionalAbuse.Dto;
-
-@ExtendWith(MockitoExtension.class)
-class OptionalAbuseTest {
-
- private final OptionalAbuse optionalAbuse = new OptionalAbuse();
-
- @Test
- void setsRecipientEmailWhenDtoHasValidRecipientPerson() {
- Dto dto = new Dto(" JohnDoe ", 30);
-
- Entity result = optionalAbuse.trappedOptional(dto);
-
- assertThat(result.getRecipient()).isEqualTo("johndoe@example.com");
- }
-
- @Test
- void setsAnonymousEmailWhenRecipientPersonIsBlank() {
- Dto dto = new Dto(" ", 30);
-
- Entity result = optionalAbuse.trappedOptional(dto);
-
- assertThat(result.getRecipient()).isEqualTo("anonymous@example.com");
- }
-
- @Test
- void setsAnonymousEmailWhenRecipientPersonIsNull() {
- Dto dto = new Dto(null, 30);
-
- Entity result = optionalAbuse.trappedOptional(dto);
-
- assertThat(result.getRecipient()).isEqualTo("anonymous@example.com");
- }
-
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/fp/PureFunctionsTest.java b/src/test/java/victor/training/cleancode/fp/PureFunctionsTest.java
deleted file mode 100644
index c04cb7a76..000000000
--- a/src/test/java/victor/training/cleancode/fp/PureFunctionsTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package victor.training.cleancode.fp;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import victor.training.cleancode.fp.support.*;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(MockitoExtension.class)
-class PureFunctionsTest {
- @Mock
- CustomerRepo customerRepo;
- @Mock
- ThirdPartyPricesApi thirdPartyPrices;
- @Mock
- CouponRepo couponRepo;
- @Mock
- ProductRepo productRepo;
- @InjectMocks
- PureFunction priceService;
- @Captor
- ArgumentCaptor> couponCaptor;
-
- @Test
- void computePrices() {
- Coupon coupon1 = new Coupon(ProductCategory.HOME, 2);
- Coupon coupon2 = new Coupon(ProductCategory.ELECTRONICS, 4);
- Customer customer = new Customer(List.of(coupon1, coupon2));
- when(customerRepo.findById(13L)).thenReturn(customer);
- Product p1 = new Product().setId(1L).setCategory(ProductCategory.HOME);
- Product p2 = new Product().setId(2L).setCategory(ProductCategory.KIDS);
- when(productRepo.findAllById(List.of(1L, 2L))).thenReturn(List.of(p1, p2));
- when(thirdPartyPrices.fetchPrice(2L)).thenReturn(5d);
-
- Map result = priceService.computePrices(13L, List.of(1L, 2L), Map.of(1L, 10d));
-
- verify(couponRepo).markUsedCoupons(eq(13L), couponCaptor.capture());
- assertThat(couponCaptor.getValue()).containsExactly(coupon1);
-
- assertThat(result)
- .containsEntry(1L, 8d)
- .containsEntry(2L, 5d);
- }
-
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/fp/ReduceAbuseTest.java b/src/test/java/victor/training/cleancode/fp/ReduceAbuseTest.java
deleted file mode 100644
index 71d8e0df0..000000000
--- a/src/test/java/victor/training/cleancode/fp/ReduceAbuseTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package victor.training.cleancode.fp;
-
-import org.junit.jupiter.api.Test;
-import victor.training.cleancode.fp.support.Order;
-import victor.training.cleancode.fp.support.OrderLine;
-import victor.training.cleancode.fp.support.Product;
-
-import java.time.LocalDate;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-class ReduceAbuseTest {
-
- private final ReduceAbuse sut = new ReduceAbuse();
-
- @Test
- void noPremiumOrders() {
- Order normalOrder = new Order().setPrice(100);
- List orderList = List.of(normalOrder);
-
- var result = sut.getLastPremiumOrder(orderList);
-
- assertThat(result).isNull();
- }
-
- @Test
- void onePremiumOrder() {
- Order premiumOrder = new Order()
- .setOrderLines(List.of(new OrderLine(new Product().setPremium(true), 1)))
- .setCreationDate(LocalDate.of(2023, 3, 5));
-
- List orderList = List.of(premiumOrder);
-
- var result = sut.getLastPremiumOrder(orderList);
-
- assertThat(result).isEqualTo(premiumOrder);
- }
-
- @Test
- void multiplePremiumOrders() {
- Order premiumOrder1 = new Order()
- .setOrderLines(List.of(new OrderLine(new Product().setPremium(true), 1)))
- .setCreationDate(LocalDate.of(2023, 3, 4));
-
- Order premiumOrder2 = new Order()
- .setOrderLines(List.of(new OrderLine(new Product().setPremium(true), 1)))
- .setCreationDate(LocalDate.of(2023, 3, 5));
-
- List orderList = List.of(premiumOrder1, premiumOrder2);
-
- var result = sut.getLastPremiumOrder(orderList);
-
- assertThat(result).isEqualTo(premiumOrder2);
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/immutable/PriceServiceTest.java b/src/test/java/victor/training/cleancode/immutable/PriceServiceTest.java
deleted file mode 100644
index 59965985e..000000000
--- a/src/test/java/victor/training/cleancode/immutable/PriceServiceTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package victor.training.cleancode.immutable;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-import static java.math.BigDecimal.valueOf;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.when;
-
-
-@ExtendWith(MockitoExtension.class)
-class PriceServiceTest {
- @Mock
- private SupplierService supplierService;
- @Mock
- private LogisticsService logisticsService;
- @InjectMocks
- private PriceService priceService;
-
- @Test
- void computePrice() {
- when(supplierService.getCost(any(), any())).thenReturn(valueOf(80));
- when(logisticsService.estimateDeliveryCosts(any())).thenReturn(valueOf(20));
-
- Product product = new Product();
- priceService.computePrice(product);
-
- assertThat(product.getPrice()).isEqualByComparingTo(valueOf(78));
-
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/kata/expense/ExpenseReportTest.java b/src/test/java/victor/training/cleancode/kata/expense/ExpenseReportTest.java
deleted file mode 100644
index c5a78b9a3..000000000
--- a/src/test/java/victor/training/cleancode/kata/expense/ExpenseReportTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package victor.training.cleancode.kata.expense;
-
-import org.junit.jupiter.api.Test;
-import victor.training.cleancode.CaptureSystemOutput;
-import victor.training.cleancode.CaptureSystemOutput.OutputCapture;
-
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-class ExpenseReportTest {
-
- private ExpenseReport report = new ExpenseReport();
-
- @Test
- @CaptureSystemOutput
- void decent(OutputCapture outputCapture) {
- report.printReport(List.of(
- new Expense("DINNER", 100),
- new Expense("DINNER", 100),
- new Expense("BREAKFAST", 50),
- new Expense("CAR_RENTAL", 200)
- ));
-
- assertThat(outputCapture.toString()).isEqualToIgnoringWhitespace(
- """
- Expenses Report
- Dinner 100 \s
- Dinner 100 \s
- Breakfast 50 \s
- Car Rental 200 \s
- Meal expenses: 250
- Total expenses: 450
- """);
- }
-
- @Test
- @CaptureSystemOutput
- void bigBreakfast(OutputCapture outputCapture) {
- report.printReport(List.of(
- new Expense("BREAKFAST", 1200)
- ));
-
- assertThat(outputCapture.toString()).isEqualToIgnoringWhitespace(
- """
- Expenses Report
- Breakfast 1200 X
- Meal expenses: 1200
- Total expenses: 1200
- Meal expenses exceed limit
- """);
- }
-
- @Test
- @CaptureSystemOutput
- void bigDinner(OutputCapture outputCapture) {
- report.printReport(List.of(
- new Expense("DINNER", 5200)
- ));
-
- assertThat(outputCapture.toString()).isEqualToIgnoringWhitespace(
- """
- Expenses Report
- Dinner 5200 X
- Meal expenses: 5200
- Total expenses: 5200
- Meal expenses exceed limit
- """);
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/kata/povalidator/POValidatorTest.java b/src/test/java/victor/training/cleancode/kata/povalidator/POValidatorTest.java
deleted file mode 100644
index b8e68b4be..000000000
--- a/src/test/java/victor/training/cleancode/kata/povalidator/POValidatorTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package victor.training.cleancode.kata.povalidator;
-
-import org.junit.jupiter.api.Test;
-
-import java.util.Collections;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
-
-class POValidatorTest {
- POItem item = new POItem();
-
- @Test
- void validatePurchaseOrderItem_ItemValid_ReturnsTrue() {
- var validator = new POValidator();
- validator.setValidators(Collections.emptyList());
-
- var result = validator.validatePurchaseOrderItem(item);
-
- assertThat(result).isTrue();
- assertThat(item.getStatus()).isEqualTo(POItem.Status.NEW);
- assertThat(item.getMessages()).isEmpty();
- }
-
- @Test
- void validatePurchaseOrderItem_ItemInvalid_ReturnsFalseAndSetsStatus() {
- Validator failingValidator = mock(Validator.class);
- when(failingValidator.validate(any())).thenReturn(false);
- when(failingValidator.message(any())).thenReturn("Validation failed");
- var validator = new POValidator();
- validator.setValidators(List.of(failingValidator));
-
- var result = validator.validatePurchaseOrderItem(item);
-
- assertThat(result).isFalse();
- assertThat(item.getStatus()).isEqualTo(POItem.Status.ERROR);
- assertThat(item.getMessages()).hasSize(1);
- assertThat(item.getMessages().get(0).getText()).isEqualTo("Validation failed");
- }
-
- @Test
- void validatePurchaseOrderItem_whenItemFails_midway_through() {
- Validator failingValidator = mock(Validator.class);
- when(failingValidator.validate(item)).thenReturn(Boolean.FALSE);
- Validator uncalledValidator = mock(Validator.class);
- POValidator validator = new POValidator();
- validator.setValidators(List.of(failingValidator, uncalledValidator));
-
- assertThat(validator.validatePurchaseOrderItem(item)).isFalse();
-
- verify(uncalledValidator, never()).validate(any());
- }
-}
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/kata/projectservice/ExerciseTest.java b/src/test/java/victor/training/cleancode/kata/projectservice/ExerciseTest.java
index cb61f3112..a5237d574 100644
--- a/src/test/java/victor/training/cleancode/kata/projectservice/ExerciseTest.java
+++ b/src/test/java/victor/training/cleancode/kata/projectservice/ExerciseTest.java
@@ -13,7 +13,7 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;
-
+// Test commit (Beatriz)
@ExtendWith(MockitoExtension.class)
class ExerciseTest {
@Mock
diff --git a/src/test/java/victor/training/cleancode/kata/streams/ExercisesTest.java b/src/test/java/victor/training/cleancode/kata/streams/ExercisesTest.java
deleted file mode 100644
index 019504826..000000000
--- a/src/test/java/victor/training/cleancode/kata/streams/ExercisesTest.java
+++ /dev/null
@@ -1,254 +0,0 @@
-package victor.training.cleancode.kata.streams;
-
-import org.junit.jupiter.api.MethodOrderer.MethodName;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestMethodOrder;
-import victor.training.cleancode.kata.streams.Order.PaymentMethod;
-import victor.training.cleancode.kata.streams.Order.Status;
-
-import java.io.File;
-import java.io.IOException;
-import java.time.LocalDate;
-import java.time.Month;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static java.time.LocalDate.now;
-import static java.time.LocalDate.parse;
-import static java.time.Month.FEBRUARY;
-import static java.time.Month.JANUARY;
-import static org.assertj.core.api.Assertions.assertThat;
-import static victor.training.cleancode.kata.streams.Order.PaymentMethod.CARD;
-import static victor.training.cleancode.kata.streams.Order.PaymentMethod.CASH_ON_DELIVERY;
-import static victor.training.cleancode.kata.streams.Order.Status.CANCELLED;
-import static victor.training.cleancode.kata.streams.Order.Status.COMPLETED;
-
-@TestMethodOrder(MethodName.class)
-class ExercisesTest {
- public static final LocalDate YESTERDAY = now().minusDays(1);
- private static final LocalDate TODAY = LocalDate.now();
- private final Exercises sut = new Exercises();
-
- @Test
- void p1_activeOrders() {
- Order order1 = new Order(COMPLETED)
- .total(10)
- .createdOn(TODAY)
- .paymentMethod(CARD);
- Order order2 = new Order(Status.PLACED);
-
- List dtos = sut.p1_activeOrders(List.of(order1, order2));
-
- assertThat(dtos).hasSize(1);
- assertThat(dtos.get(0).status()).isEqualTo(COMPLETED);
- assertThat(dtos.get(0).totalPrice()).isEqualTo(10.0);
- assertThat(dtos.get(0).creationDate()).isEqualTo(TODAY);
- assertThat(dtos.get(0).paymentMethod()).isEqualTo(CARD);
- }
-
- @Test
- void p2_findOrderById_found() {
- Order o = new Order(1);
- List orders = List.of(o, new Order(2));
- // Note: AssertJ is preferred over JUnit assertions today
- Order actual = sut.p2_findOrderById(orders, 1);
- assertThat(actual).isEqualTo(o);
- }
-
- @Test
- void p2_findOrderById_notFound() {
- Order actual = sut.p2_findOrderById(List.of(new Order(7)), 9999);
- assertThat(actual).isNull();
- }
-
- @Test
- void p3_hasActiveOrders_returnsTrue() {
- boolean actual = sut.p3_hasActiveOrders(List.of(new Order(CANCELLED), new Order(COMPLETED)));
- assertThat(actual).isTrue();
- }
-
- @Test
- void p3_hasActiveOrders_returnsFalse() {
- boolean actual = sut.p3_hasActiveOrders(List.of(new Order(CANCELLED)));
- assertThat(actual).isFalse();
- }
-
- @Test
- void p4_maxPriceOrder_doesMax() {
- Order one = new Order().total(1);
- Order ten = new Order().total(10);
- Order actual = sut.p4_maxPriceOrder(List.of(one, ten));
- assertThat(actual).isEqualTo(ten);
- }
-
- @Test
- void p4_maxPriceOrder_returnsNullForNoOrders() {
- assertThat(sut.p4_maxPriceOrder(List.of())).isNull();
- }
-
- @Test
- void p4_maxPriceOrder_ignoresSpecialOffers() {
- Order order = new Order().total(1)
- .add(new OrderLine().specialOffer(true));
- assertThat(sut.p4_maxPriceOrder(List.of(order))).isNull();
- }
-
- @Test
- void p5_last3Orders() {
- Order a = new Order().createdOn(parse("2024-01-01")).returnReason("a");
- Order b = new Order().createdOn(parse("2024-01-02")).returnReason("b");
- Order c = new Order().createdOn(parse("2024-01-03")).returnReason("c");
- Order d = new Order().createdOn(parse("2024-01-04")).returnReason("d");
-
- List actual = sut.p5_last3Orders(List.of(a, b, c, d));
-
- assertThat(actual).containsExactly("d", "c", "b");
- }
-
- @Test
- void p5_getLast3Orders_whenOnlyTwoOrders() {
- Order a = new Order().createdOn(parse("2024-01-01")).returnReason("a");
- Order b = new Order().createdOn(parse("2024-01-02")).returnReason("b");
-
- List actual = sut.p5_last3Orders(List.of(a, b));
-
- assertThat(actual).containsExactly("b", "a");
- }
-
- @Test
- void p5_getLast3Orders_skipsMissingReasons() {
- Order a = new Order().createdOn(parse("2024-01-01"));
- Order b = new Order().createdOn(parse("2024-01-02")).returnReason("b");
-
- List actual = sut.p5_last3Orders(List.of(a, b));
-
- assertThat(actual).containsExactly("b");
- }
-
- @Test
- void p5_getLast3Orders_whenNoOrders() {
- assertThat(sut.p5_last3Orders(List.of())).isEmpty();
- }
-
- @Test
- void p6_completedTotalSum() {
- Order a = new Order(COMPLETED).total(10);
- Order b = new Order(COMPLETED).total(1);
- Order c = new Order(CANCELLED).total(1);
-
- long actual = sut.p6_completedTotalSum(List.of(a, b, c));
-
- assertThat(actual).isEqualTo(11);
- }
-
- @Test
- void p6_completedTotalSum_rounding() {
- Order a = new Order(COMPLETED).total(10.5);
- Order b = new Order(COMPLETED).total(10.5);
-
- long actual = sut.p6_completedTotalSum(List.of(a, b));
-
- assertThat(actual).isEqualTo(21);
- }
-
- @Test
- void p7_productsSorted() {
- Product chair = new Product("Chair");
- Product table = new Product("Table");
- Order order1 = new Order()
- .add(new OrderLine(chair, 3));
- Order order2 = new Order()
- .add(new OrderLine(table, 1))
- .add(new OrderLine(chair, 1));
-
- List actual = sut.p7_productsSorted(List.of(order1, order2));
-
- assertThat(actual).containsExactly(chair, table);
- }
-
- @Test
- void p8_ordersGroupedByPaymentMethod() {
- Order a_card = new Order().paymentMethod(CARD);
- Order b_cash = new Order().paymentMethod(CASH_ON_DELIVERY);
- Order c_card = new Order().paymentMethod(CARD);
-
- Map> actual = sut.p8_ordersGroupedByPaymentMethod(List.of(a_card, b_cash, c_card));
-
- assertThat(actual.get(CASH_ON_DELIVERY)).containsExactly(b_cash);
- assertThat(actual.get(CARD)).containsExactly(a_card, c_card);
- }
-
- @Test
- void p9_productCount() {
- Product chair = new Product("Chair");
- Product table = new Product("Table");
- Order order1 = new Order()
- .add(new OrderLine(chair, 3));
- Order order2 = new Order()
- .add(new OrderLine(table, 1))
- .add(new OrderLine(chair, 1));
-
- Map actual = sut.p9_productCount(List.of(order1, order2));
-
- Map expected = Map.of(
- chair, 4,
- table, 1);
- assertThat(actual).isEqualTo(expected);
- }
-
- @Test
- void pA_productNames() {
- Product armchair = new Product("Armchair");
- Product chair = new Product("Chair");
- Product table = new Product("Table");
-
- Order order1 = new Order()
- .add(new OrderLine(chair, 3));
- Order order2 = new Order()
- .add(new OrderLine(armchair, 1))
- .add(new OrderLine(table, 1))
- .add(new OrderLine(chair, 1));
-
- String actual = sut.pA_productNames(List.of(order1, order2));
- assertThat(actual).isEqualTo("Armchair,Chair,Table");
- }
-
-
- @Test
- void pB_ordersByPaymentPerMonth_should_return_correct_grouping() {
- Order a = new Order().paymentMethod(CARD).createdOn(parse("2024-01-15"));
- Order b = new Order().paymentMethod(CASH_ON_DELIVERY).createdOn(parse("2024-01-07"));
- Order c = new Order().paymentMethod(CARD).createdOn(parse("2024-02-17"));
- List orders = List.of(a, b, c);
-
- Map>> result = sut.pB_ordersByPaymentPerMonth(orders);
-
- var expected = Map.of(
- JANUARY, Map.of(
- CARD, List.of(a),
- CASH_ON_DELIVERY, List.of(b)
- ),
- FEBRUARY, Map.of(
- CARD, List.of(c)
- )
- );
- assertThat(result).isEqualTo(expected);
- }
-
- @Test
- void blankLinesInFile() throws IOException {
- File file = new File("src/test/java/victor/training/cleancode/kata/streams/sample.csv");
-
- Set actual = sut.pC_csvLinesInAllFilesInFolder(file);
-
- Set expected = Set.of(1, 2, 3);
- assertThat(actual).isEqualTo(expected);
- }
-
- @Test
- void pDFib() {
- assertThat(sut.pD_fib(0, 6)).containsExactly(1, 1, 2, 3, 5, 8);
- assertThat(sut.pD_fib(5, 9)).containsExactly(8, 13, 21, 34);
- }
-}
diff --git a/src/test/java/victor/training/cleancode/kata/streams/sample.csv b/src/test/java/victor/training/cleancode/kata/streams/sample.csv
deleted file mode 100644
index 7c21815a4..000000000
--- a/src/test/java/victor/training/cleancode/kata/streams/sample.csv
+++ /dev/null
@@ -1,4 +0,0 @@
-1;abc
-2;ads
-
-3;stuff
\ No newline at end of file
diff --git a/src/test/java/victor/training/cleancode/kata/videostore/CustomerTest.java b/src/test/java/victor/training/cleancode/kata/videostore/CustomerTest.java
index c45c22467..9ce913000 100644
--- a/src/test/java/victor/training/cleancode/kata/videostore/CustomerTest.java
+++ b/src/test/java/victor/training/cleancode/kata/videostore/CustomerTest.java
@@ -1,10 +1,11 @@
package victor.training.cleancode.kata.videostore;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Map;
+
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static victor.training.cleancode.kata.videostore.PriceCode.*;
class CustomerTest {
@@ -13,10 +14,10 @@ class CustomerTest {
void characterizationTest() {
Customer customer = new Customer("John Doe");
// customer.addRental(new Movie("Star Wars", Movie.BABACI), 6);
- customer.addRental(new Movie("Star Wars", Movie.NEW_RELEASE), 6);
- customer.addRental(new Movie("Sofia", Movie.CHILDRENS), 7);
- customer.addRental(new Movie("Inception", Movie.REGULAR), 5);
- customer.addRental(new Movie("Wicked", Movie.CHILDRENS), 3);
+ customer.addRental(new Movie("Star Wars", NEW_RELEASE), 6);
+ customer.addRental(new Movie("Sofia", CHILDREN), 7);
+ customer.addRental(new Movie("Inception", REGULAR), 5);
+ customer.addRental(new Movie("Wicked", CHILDREN), 3);
String expected = """
Rental Record for John Doe
@@ -29,7 +30,9 @@ void characterizationTest() {
// assertThat(customer.statement()).isEqualToIgnoringNewLines(expected);
// if above line fails to compile, uncomment the next line:
- assertEquals(normalizeNewLines(expected), normalizeNewLines(customer.statement()));
+ Statement statement = customer.statement();
+
+ assertEquals(normalizeNewLines(expected), normalizeNewLines(statement.format()));
}
private String normalizeNewLines(String expected) {
diff --git a/src/test/java/victor/training/cleancode/openrewrite/AssertJAd.java b/src/test/java/victor/training/cleancode/openrewrite/AssertJAd.java
deleted file mode 100644
index 639002abf..000000000
--- a/src/test/java/victor/training/cleancode/openrewrite/AssertJAd.java
+++ /dev/null
@@ -1,297 +0,0 @@
-package victor.training.cleancode.openrewrite;
-
-
-import org.assertj.core.api.AbstractAssert;
-import org.assertj.core.api.Assertions;
-import org.assertj.core.api.AutoCloseableSoftAssertions;
-import org.assertj.core.api.SoftAssertions;
-import org.assertj.core.api.junit.jupiter.InjectSoftAssertions;
-import org.assertj.core.api.junit.jupiter.SoftlyExtension;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.MethodOrderer.MethodName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestMethodOrder;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mockito;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Set;
-
-import static java.time.LocalDateTime.now;
-import static java.time.temporal.ChronoUnit.SECONDS;
-import static java.util.stream.Collectors.toSet;
-import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
-
-
-@Disabled("enable on demand and compare failures of JUnit❌ and AssertJ💖")
-public class AssertJAd { // from org.assertj:assertj-core, or via spring-boot-starter-test
-
- @Nested
- @TestMethodOrder(MethodName.class)
- public class CollectionsPrimitives {
- List aList = List.of(100, 200, 300, 300);
-
- @Test
- public void size1_JUnit() {
- org.junit.jupiter.api.Assertions.assertEquals(1, aList.size());
- }
-
- @Test
- public void size1_AssertJ() {
- assertThat(aList).hasSize(1);
- }
-
- @Test
- public void onceInAnyOrder_JUnit() {
- org.junit.jupiter.api.Assertions.assertTrue(aList.containsAll(List.of(100, 200, 700)));
- assertEquals(3, aList.size());
- }
-
- @Test
- public void onceInAnyOrder_AssertJ() {
- assertThat(aList).containsExactlyInAnyOrder(100, 200, 300);
- }
-
- @Test
- public void contains_JUnit() {
- assertTrue(aList.containsAll(List.of(100, 200, 400)));
- assertFalse(aList.contains(500));
- }
-
- @Test
- public void contains_AssertJ() {
- assertThat(aList)
- .contains(100, 200, 400)
- .doesNotContain(500);
- }
-
- }
-
- @Nested
- @TestMethodOrder(MethodName.class)
- public class CollectionsElements {
- record Character(String name, int age, Race race) {
- }
-
- record Race(String name) {
- }
-
- private final List fellowship = List.of(
- new Character("Frodo", 20, new Race("Hobbit")),
- new Character("Sam", 18, new Race("Hobbit")),
- new Character("Legolas", 1000, new Race("Elf")),
- new Character("Boromir", 37, new Race("Man")),
- new Character("Gandalf the Gray", 120, new Race("Man")),
- new Character("Aragorn", 39, new Race("Man")),
- new Character("Gimli", 40, new Race("Dwarf"))
- );
-
- @Test
- public void oneAttribute_JUnit() {
- // preprocess the collection before the assertion:
- Set races = fellowship.stream()
- .map(Character::race)
- .map(Race::name)
- .collect(toSet());
-
- assertEquals(Set.of("Man", "Dwarf", "Elf", "Hobbit", "Orc"), races);
- }
-
- @Test
- public void oneAttribute_AssertJ() {
- assertThat(fellowship)
- .map(Character::race)
- .map(Race::name)
- .containsOnly("Man", "Dwarf", "Elf", "Hobbit", "Orc");
- }
-
- @Test
- public void multipleAttributes_JUnit() {
- assertTrue(fellowship.stream().anyMatch(c ->
- c.name().equals("Frodo") &&
- c.age() == 20 &&
- c.race().name().equals("Hobbit")));
- assertTrue(fellowship.stream().anyMatch(c ->
- c.name().equals("Aragorn") &&
- c.age() == 39 &&
- c.race().name().equals("Man")));
- assertTrue(fellowship.stream().anyMatch(c ->
- c.name().equals("Legolas") &&
- c.age() == 100 && // ❌
-// c.age() == 1000 && // ✅
- c.race().name().equals("Elf")));
- }
-
- @Test
- public void multipleAttributes_AssertJ() {
- assertThat(fellowship)
- // .extracting("name", "age", "race.name") // alternative
- .extracting(Character::name, Character::age, c -> c.race().name())
- .contains(
- tuple("Frodo", 20, "Hobbit"),
- tuple("Legolas", 100, "Elf"), // ❌
-// tuple("Legolas", 1000, "Elf"), // ✅
- tuple("Aragorn", 39, "Man")
- );
- }
- }
-
- @Nested
- @TestMethodOrder(MethodName.class)
- public class Strings {
- private final String string = "abcdef";
-
- @Test
- public void startsWith_JUnit() {
- assertTrue(string.startsWith("bcd")); // see the failure message
- }
-
- @Test
- public void startsWith_AssertJ() {
- assertThat(string).startsWith("bcd"); // see the failure message
- }
-
- @Test
- public void ignoreCase_JUnit() {
- assertEquals("ABCDE", string.toUpperCase()); // looses the original case
- }
-
- @Test
- public void ignoreCase_AssertJ() {
- assertThat(string).isEqualToIgnoringCase("AbCdE");
- }
-
- @Test
- public void regex_JUnit() {
- assertTrue(string.matches(".*bd.*"));
- }
-
- @Test
- public void regex_AssertJ() {
- assertThat(string).matches(".*bd.*");
- }
- }
-
- @Nested
- @TestMethodOrder(MethodName.class)
- public class Time {
- private final LocalDateTime oneMinAgo = now().minusMinutes(1);
-
- @Test
- public void deltaTime_JUnit() {
- assertTrue(oneMinAgo.isAfter(now().minusSeconds(1)));
- }
-
- @Test
- public void deltaTime_AssertJ() {
- assertThat(oneMinAgo).isCloseTo(now(), byLessThan(1, SECONDS));
- }
- }
-
-
- record Villa(int guests, String kitchen, String library) {
- }
-
- static Villa testedCode() {
- return new Villa(6, "dirty", "clean");
- }
-
- @Nested
- @TestMethodOrder(MethodName.class)
- public class CustomAssertions {
- @Test
- void extendingAssertJ() {
- Villa villa = testedCode();
-
- assertThat(villa)
- .hasGuests(7) // "extension methods" (java style👴🏻)
- .hasKitchen("clean")
- .hasLibrary("clean");
- }
-
- public static VillaAssert assertThat(Villa actual) {
- return new VillaAssert(actual);
- }
-
- static class VillaAssert extends AbstractAssert {
- protected VillaAssert(Villa actual) {
- super(actual, VillaAssert.class);
- }
-
- public VillaAssert hasGuests(int guests) {
- Assertions.assertThat(actual.guests()).as("Living Guests")
- .isEqualTo(guests);
- return this;
- }
-
- public VillaAssert hasKitchen(String kitchen) {
- Assertions.assertThat(actual.kitchen()).as("Kitchen")
- .isEqualTo(kitchen);
- return this;
- }
-
- public VillaAssert hasLibrary(String library) {
- Assertions.assertThat(actual.library()).as("Library")
- .isEqualTo(library);
- return this;
- }
- }
-
- }
-
- @Nested
- class SoftAssert {
-
- interface EventSender {
- void send(String event);
-
- }
-
- EventSender eventSender = Mockito.mock(EventSender.class);
-
- @Test
- void failsOnFirst_BAD() {
- Villa villa = testedCode();
-
- assertThat(villa.guests()).as("Living Guests").isEqualTo(7);
- assertThat(villa.kitchen()).as("Kitchen").isEqualTo("clean");
- assertThat(villa.library()).as("Library").isEqualTo("clean");
- Mockito.verify(eventSender).send("mansion-cleaned");
- }
-
- @Test
- void trySoftly() {
- Villa villa = testedCode();
-
- try (var softly = new AutoCloseableSoftAssertions()) {
- softly.assertThat(villa.guests()).as("Living Guests").isEqualTo(7);
- softly.assertThat(villa.kitchen()).as("Kitchen").isEqualTo("clean");
- softly.assertThat(villa.library()).as("Library").isEqualTo("clean");
- softly.assertThatCode(() -> Mockito.verify(eventSender).send("mansion-cleaned"))
- .as("event published").doesNotThrowAnyException();
- }
- }
-
- @Nested
- @ExtendWith(SoftlyExtension.class)
- class WithExtension {
- @InjectSoftAssertions
- SoftAssertions soft;
-
- @Test
- void usingExtension() {
- Villa villa = testedCode();
-
- soft.assertThat(villa.guests()).as("Living Guests").isEqualTo(7);
- soft.assertThat(villa.kitchen()).as("Kitchen").isEqualTo("clean");
- soft.assertThat(villa.library()).as("Library").isEqualTo("clean");
- soft.assertThatCode(() -> Mockito.verify(eventSender).send("mansion-cleaned"))
- .as("event published").doesNotThrowAnyException();
- }
- }
- }
-}
-
diff --git a/src/test/java/victor/training/cleancode/openrewrite/JUnitToAssertJTestDemo.java b/src/test/java/victor/training/cleancode/openrewrite/JUnitToAssertJTestDemo.java
deleted file mode 100644
index d7dbb40c5..000000000
--- a/src/test/java/victor/training/cleancode/openrewrite/JUnitToAssertJTestDemo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package victor.training.cleancode.openrewrite;
-
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-class JUnitToAssertJTestDemo {
- @Test
- void test() {
- assertTrue(testedCode().contains("eS"));
- assertTrue(testedCode().startsWith("re"));
- }
-
- private String testedCode() {
- return notification(false);
- }
-
-
- @Test
- void testExceptions() {
- assertThrows(IllegalArgumentException.class, () -> notification(true));
- }
-
- private String notification(boolean shouldThrow) {
- if (shouldThrow) throw new IllegalArgumentException("Boom");
- return "result";
- }
- // 1) run openrewrite-assertj.yaml in IntelliJ, or
- // 2) mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-testing-frameworks:RELEASE -Drewrite.activeRecipes=org.openrewrite.java.testing.assertj.JUnitAssertEqualsToAssertThat -Drewrite.exportDatatables=true
-
-}
-
diff --git a/todo b/todo
index 941462b2b..c908024ca 100644
--- a/todo
+++ b/todo
@@ -1,2 +1,4 @@
Function Frenzy example
-Redo Videostore another real world example
\ No newline at end of file
+Redo Videostore another real world example
+
+Nico
\ No newline at end of file