Adding a new feature

Once we have the necessary test environment in place, we can add the new feature.

As a library manager, I want to know all the history for a given book so that I can measure which books are more in demand than others.

We will start with a red specification:

public class BooksSpec { 
 
    @Test 
    public void should_search_for_any_past_state() { 
        Book book1 = new Book("title", "author",            States.AVAILABLE); 
        book1.censor(); 
 
        Books books = new Books(); 
        books.add(book1); 
 
        String available = 
          String.valueOf(States.AVAILABLE); 
        assertThat( 
          books.filterByState(available).isEmpty(),            is(false)); 
    } 
} 

Run all the tests and see the last one fail.

Implement the search on all states (fragment):

public class Book { private ArrayList<Integer> status; ...

Get Test-Driven Java Development - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.