diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/fluentapi/Pizza.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/fluentapi/Pizza.java index 05a441a4f4..28cbfacdc4 100644 --- a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/fluentapi/Pizza.java +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/fluentapi/Pizza.java @@ -1,5 +1,6 @@ package com.baeldung.mockito.fluentapi; +import java.util.ArrayList; import java.util.List; public class Pizza { @@ -11,23 +12,51 @@ public class Pizza { private String name; private PizzaSize size; private List<String> toppings; - - private String email; private boolean stuffedCrust; + private boolean collect; + private Integer discount; private Pizza(PizzaBuilder builder) { this.name = builder.name; this.size = builder.size; this.toppings = builder.toppings; this.stuffedCrust = builder.stuffedCrust; + this.collect = builder.collect; + this.discount = builder.discount; + } + + public String getName() { + return name; + } + + public PizzaSize getSize() { + return size; + } + + public List<String> getToppings() { + return toppings; + } + + public boolean isStuffedCrust() { + return stuffedCrust; + } + + public boolean isCollecting() { + return collect; + } + + public Integer getDiscount() { + return discount; } public static class PizzaBuilder { private String name; private PizzaSize size; - private String email; + + private List<String> toppings = new ArrayList<>(); private boolean stuffedCrust; - private List<String> toppings; + private boolean collect; + private Integer discount = null; public PizzaBuilder(String name) { this.name = name; @@ -48,13 +77,13 @@ public class Pizza { return this; } - public BankAccountBuilder willCollect(boolean collect) { - this.newsletter = newsletter; + public PizzaBuilder willCollect(boolean collect) { + this.collect = collect; return this; } - public BankAccountBuilder applyDiscount(boolean collect) { - this.newsletter = newsletter; + public PizzaBuilder applyDiscount(Integer discount) { + this.discount = discount; return this; } @@ -63,20 +92,4 @@ public class Pizza { } } - public String getName() { - return name; - } - - public PizzaSize getSize() { - return size; - } - - public String getEmail() { - return email; - } - - public boolean isNewsletter() { - return newsletter; - } - } diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/fluentapi/PizzaService.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/fluentapi/PizzaService.java index cf3004c8a5..6359ad8222 100644 --- a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/fluentapi/PizzaService.java +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/fluentapi/PizzaService.java @@ -1,5 +1,29 @@ package com.baeldung.mockito.fluentapi; +import java.util.List; +import java.util.Optional; + +import com.baeldung.mockito.fluentapi.Pizza.PizzaSize; + public class PizzaService { + private Pizza pizza; + + public PizzaService(Pizza.PizzaBuilder builder) { + this.pizza = builder.build(); + } + + public List<String> listToppings(Pizza.PizzaBuilder builder) { + Pizza build = builder.size(PizzaSize.LARGE) + .withExtaTopping("Mushroom") + .withStuffedCrust(false) + .willCollect(true) + .applyDiscount(20) + .build(); + } + + public boolean isLarge() { + return PizzaSize.LARGE.equals(pizza.getSize()); + } + } diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaServiceUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaServiceUnitTest.java index 3e47e4a1d4..000c3b83ed 100644 --- a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaServiceUnitTest.java +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaServiceUnitTest.java @@ -1,23 +1,86 @@ package com.baeldung.mockito.fluentapi; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.junit.Assert; +import org.junit.Before; import org.junit.Test; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; + +import static org.mockito.Mockito.when; + +import com.baeldung.mockito.fluentapi.Pizza.PizzaSize; public class PizzaServiceUnitTest { + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private ArrayList<String> mockList; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + } + + @Test - public void test() { + public void givenPizzaWithToppings_whenServiceInvoked_thenReturnsList() { + + //Foo mock = mock(Foo.class, RETURNS_DEEP_STUBS); + + List<String> bob = Arrays.asList("a1", "a2", "b1", "c2", "c1"); + + + when(mockList.stream() + .filter(s -> s.startsWith("c")) + .map(String::toUpperCase) + .sorted() + .collect(Collectors.toList())) + .thenReturn(bob); + + Assert.assertEquals(bob, mockList.stream() + .filter(s -> s.startsWith("c")) + .map(String::toUpperCase) + .sorted() + .collect(Collectors.toList())); + + +// List<String> filtered = Arrays.asList("a1", "a2", "b1", "c2", "c1") +// .stream() +// .filter(s -> s.startsWith("c")) +// .map(String::toUpperCase) +// .sorted() +// .collect(Collectors.toList()); +// +// +// +// +// Pizza.PizzaBuilder builder = Mockito.mock(Pizza.PizzaBuilder.class, Mockito.RETURNS_DEEP_STUBS); +// +// Pizza pizza = Mockito.mock(Pizza.class); +// +// Mockito.when(builder +// .size(PizzaSize.LARGE) +// .withExtaTopping("Mushroom") +// .withStuffedCrust(false) +// .willCollect(true) +// .applyDiscount(20) +// .build()).thenReturn(pizza); +// +// PizzaService service = new PizzaService(builder); +// +// List<String> listToppings = service.listToppings(); + } - public List<String> convertAllToUpperCase(List<String> words) { - - return words.stream() - .map(String::toUpperCase) - .collect(Collectors.toList()); - - } - } diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaUnitTest.java new file mode 100644 index 0000000000..fb909c34d3 --- /dev/null +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/fluentapi/PizzaUnitTest.java @@ -0,0 +1,43 @@ +package com.baeldung.mockito.fluentapi; + + + +import org.junit.Test; + +import com.baeldung.mockito.fluentapi.Pizza.PizzaSize; + +public class PizzaUnitTest { + + @Test + public void givenPizza_whenBuilt_thenShouldReturnPizzaWithCorrectAttributes() { + Pizza pizza = new Pizza + .PizzaBuilder("Margherita") + .size(PizzaSize.LARGE) + .withExtaTopping("Mushroom") + .withStuffedCrust(false) + .willCollect(true) + .applyDiscount(20) + .build(); + + //assert + } + + @Test + public void givenPizza_whenBuiltWithTraditonalMock_thenShouldReturnPizza() { + + Mock + + + Pizza pizza = new Pizza + .PizzaBuilder("Margherita") + .size(PizzaSize.LARGE) + .withExtaTopping("Mushroom") + .withStuffedCrust(false) + .willCollect(true) + .applyDiscount(20) + .build(); + + //assert + } + +}