package com.flipper83.katapotter;

import java.util.ArrayList;
import java.util.List;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class BasketCalculatorTest {
  private static final List<String> EMPTY_BASKET = new ArrayList<>();
  private static final String FIRST_BOOK = "Philosopher stone";
  private static final String SECOND_BOOK = "The chamber of secrets";
  public static final int DELTA_ZERO = 0;

  @Test
  public void shouldReturnZeroPriceForAnEmptyBasket() {
    BasketCalculator basketCalculator = new BasketCalculator();

    float amount = basketCalculator.calculatePrice(EMPTY_BASKET);

    assertEquals(0, amount, DELTA_ZERO);
  }

  @Test
  public void shouldReturnPriceWithoutDiscountWithABasketWithOneBook() {
    BasketCalculator basketCalculator = new BasketCalculator();
    List<String> basket = givenBasketWithOneBook();

    float amount = basketCalculator.calculatePrice(basket);

    assertEquals(8, amount, DELTA_ZERO);
  }

  @Test
  public void shouldReturnPriceWithoutDiscountWithABasketWithTwoSameBooks() {
    BasketCalculator basketCalculator = new BasketCalculator();
    List<String> basket = givenBasketWithTwoSameBooks();

    float amount = basketCalculator.calculatePrice(basket);

    assertEquals(8 * 2, amount, DELTA_ZERO);
  }

  @Test
  public void shouldReturnPriceWithDiscountWithABasketWithTwoDifferentBooks() {
    BasketCalculator basketCalculator = new BasketCalculator();
    List<String> basket = givenBasketWithTwoDifferentBooks();

    float amount = basketCalculator.calculatePrice(basket);

    assertEquals(8 * 2 * 0.95f, amount, DELTA_ZERO);
  }

  private List<String> givenBasketWithTwoDifferentBooks() {
    return givenBasketWithBooks(FIRST_BOOK, SECOND_BOOK);
  }

  private List<String> givenBasketWithTwoSameBooks() {
    return givenBasketWithBooks(FIRST_BOOK, FIRST_BOOK);
  }

  private List<String> givenBasketWithOneBook() {
    return givenBasketWithBooks(FIRST_BOOK);
  }

  private List<String> givenBasketWithBooks(String... books) {
    List<String> basket = new ArrayList<>();
    if (books != null) {
      for (String book : books) {
        basket.add(book);
      }
    }
    return basket;
  }
}
@@ -860,24 +860,32 @@
 sketWith
-One
 Book
-(
+s(FIRST_BOOK
 );%0A%0A    
@@ -1178,29 +1178,44 @@
 sketWith
-TwoSameBooks(
+Books(FIRST_BOOK, FIRST_BOOK
 );%0A%0A    
@@ -1514,34 +1514,45 @@
 sketWith
-TwoDifferentBooks(
+Books(FIRST_BOOK, SECOND_BOOK
 );%0A%0A    
@@ -1670,348 +1670,8 @@
  %7D%0A%0A
-  private List%3CString%3E givenBasketWithTwoDifferentBooks() %7B%0A    return givenBasketWithBooks(FIRST_BOOK, SECOND_BOOK);%0A  %7D%0A%0A  private List%3CString%3E givenBasketWithTwoSameBooks() %7B%0A    return givenBasketWithBooks(FIRST_BOOK, FIRST_BOOK);%0A  %7D%0A%0A  private List%3CString%3E givenBasketWithOneBook() %7B%0A    return givenBasketWithBooks(FIRST_BOOK);%0A  %7D%0A%0A
   pr

Remove unnecessary given methods.