@Test
  public void shouldNotUpdatePairingIfOneExists() {
    FlavorPair flavorPair = new FlavorPair();
    flavorPair.setIngredient1("Chicken");
    flavorPair.setIngredient2("Carrot");
    flavorPair.setCategory1("Meat");
    flavorPair.setCategory2("Vegetable");
    flavorPair.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair);

    FlavorPair flavorPair2 = new FlavorPair();
    flavorPair2.setIngredient1("Chicken");
    flavorPair2.setIngredient2("Carrot");
    flavorPair2.setCategory1("Meat");
    flavorPair2.setCategory2("Vegetable");
    flavorPair2.setAffinity(Affinity.GOOD.name());
    flavorController.addPair(flavorPair2);

    Ingredient chicken = ingredientRepository.findByName("Chicken").iterator().next();
    assertEquals(1, chicken.getPairings().size());
    Pairing pairing = chicken.getPairings().iterator().next();
    assertEquals(Affinity.EXCELLENT, pairing.getAffinity());
    assertEquals("Chicken", pairing.getFirst().getName());
    assertEquals("Carrot", pairing.getSecond().getName());

    Ingredient carrot = ingredientRepository.findByName("Carrot").iterator().next();
    assertEquals(1, carrot.getPairings().size());
    assertEquals(Affinity.EXCELLENT, pairing.getAffinity());
    assertEquals("Chicken", pairing.getFirst().getName());
    assertEquals("Carrot", pairing.getSecond().getName());
  }
  @Test
  public void shouldReturnLatestPairings() {
    FlavorPair flavorPair = new FlavorPair();
    flavorPair.setIngredient1("Chicken");
    flavorPair.setIngredient2("Carrot");
    flavorPair.setCategory1("Meat");
    flavorPair.setCategory2("Vegetable");
    flavorPair.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair);

    FlavorPair flavorPair2 = new FlavorPair();
    flavorPair2.setIngredient1("Chicken");
    flavorPair2.setIngredient2("Butter");
    flavorPair2.setCategory1("Meat");
    flavorPair2.setCategory2("Dairy");
    flavorPair2.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair2);

    FlavorPair flavorPair3 = new FlavorPair();
    flavorPair3.setIngredient1("Carrot");
    flavorPair3.setIngredient2("Butter");
    flavorPair3.setCategory1("Vegetable");
    flavorPair3.setCategory2("Dairy");
    flavorPair3.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair3);

    Iterable<LatestPairing> latest = flavorController.getLatestPairings();
    List<LatestPairing> pairings = new ArrayList<>();
    for (LatestPairing latestPairing : latest) {
      pairings.add(latestPairing);
    }
    assertEquals(3, pairings.size());
    assertEquals("Carrot", pairings.get(0).getIngredient1());
    assertEquals("Butter", pairings.get(0).getIngredient2());
    assertEquals("Chicken", pairings.get(1).getIngredient1());
    assertEquals("Butter", pairings.get(1).getIngredient2());
    assertEquals("Chicken", pairings.get(2).getIngredient1());
    assertEquals("Carrot", pairings.get(2).getIngredient2());
  }
  @Test
  public void shouldDropEarliestPairingWhenLatestPairingsExceeds5() {
    FlavorPair flavorPair = new FlavorPair();
    flavorPair.setIngredient1("Chicken");
    flavorPair.setIngredient2("Carrot");
    flavorPair.setCategory1("Meat");
    flavorPair.setCategory2("Vegetable");
    flavorPair.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair);

    FlavorPair flavorPair2 = new FlavorPair();
    flavorPair2.setIngredient1("Chicken");
    flavorPair2.setIngredient2("Butter");
    flavorPair2.setCategory1("Meat");
    flavorPair2.setCategory2("Dairy");
    flavorPair2.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair2);

    FlavorPair flavorPair3 = new FlavorPair();
    flavorPair3.setIngredient1("Carrot");
    flavorPair3.setIngredient2("Butter");
    flavorPair3.setCategory1("Vegetable");
    flavorPair3.setCategory2("Dairy");
    flavorPair3.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair3);

    FlavorPair flavorPair4 = new FlavorPair();
    flavorPair4.setIngredient1("Coriander");
    flavorPair4.setIngredient2("Yoghurt");
    flavorPair4.setCategory1("Vegetable");
    flavorPair4.setCategory2("Dairy");
    flavorPair4.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair4);

    FlavorPair flavorPair5 = new FlavorPair();
    flavorPair5.setIngredient1("Coriander");
    flavorPair5.setIngredient2("Chicken");
    flavorPair5.setCategory1("Vegetable");
    flavorPair5.setCategory2("Meat");
    flavorPair5.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair5);

    FlavorPair flavorPair6 = new FlavorPair();
    flavorPair6.setIngredient1("Yoghurt");
    flavorPair6.setIngredient2("Chicken");
    flavorPair6.setCategory1("Dairy");
    flavorPair6.setCategory2("Meat");
    flavorPair6.setAffinity(Affinity.EXCELLENT.name());
    flavorController.addPair(flavorPair6);

    Iterable<LatestPairing> latest = flavorController.getLatestPairings();
    List<LatestPairing> pairings = new ArrayList<>();
    for (LatestPairing latestPairing : latest) {
      pairings.add(latestPairing);
    }
    assertEquals(5, pairings.size());
    assertEquals("Yoghurt", pairings.get(0).getIngredient1());
    assertEquals("Chicken", pairings.get(0).getIngredient2());
    assertEquals("Coriander", pairings.get(1).getIngredient1());
    assertEquals("Chicken", pairings.get(1).getIngredient2());
    assertEquals("Coriander", pairings.get(2).getIngredient1());
    assertEquals("Yoghurt", pairings.get(2).getIngredient2());
    assertEquals("Carrot", pairings.get(3).getIngredient1());
    assertEquals("Butter", pairings.get(3).getIngredient2());
    assertEquals("Chicken", pairings.get(4).getIngredient1());
    assertEquals("Butter", pairings.get(4).getIngredient2());
  }