package com.blogspot.toomuchcoding.book.chapter8._5_OverMocking; import static com.blogspot.toomuchcoding.book.chapter8._5_OverMocking.model.PersonBuilder.*; import static java.util.Arrays.*; import static org.assertj.core.api.BDDAssertions.*; import java.util.List; import org.junit.Test; import com.blogspot.toomuchcoding.book.chapter8._5_OverMocking.model.Person; public class NewIdentityCreatorTest { NewIdentityCreator systemUnderTest = new NewIdentityCreator(); @Test public void should_generate_new_siblings() { // given List<Person> oldSiblings = createSiblings(); Person person = createPersonWithStreetNumberAndSiblingsAndName(oldSiblings); // when List<Person> siblings = systemUnderTest.createNewSiblings(person); // then then(siblings).doesNotContainAnyElementsOf(oldSiblings); } private Person createPersonWithStreetNumberAndSiblingsAndName(List<Person> siblings) { return person().streetNumber(10) .siblings(siblings) .name("Robert") .build(); } private List<Person> createSiblings() { return asList( person().name("Amy").build(), person().name("John").build(), person().name("Andrew").build() ); } @Test public void should_generate_new_name() { // given Person person = createPersonWithName(); // when String newName = systemUnderTest.createNewName(person); // then then(newName).isNotEqualTo(person.getName()); } private Person createPersonWithName() { return person().name("Robert").build(); } @Test public void should_generate_new_street_number() { // given Person person = createPersonWithStreetNumber(10); // when int newStreetNumber = systemUnderTest.createNewStreetNumber(person); // then then(newStreetNumber).isNotEqualTo(person.getAddress().getStreetNumber()); } private Person createPersonWithStreetNumber(int oldStreetNumber) { return person().streetNumber(oldStreetNumber).build(); } }