@Test
  public void quest() {

    final Player player = PlayerTestHelper.createPlayer("player");

    final Engine en = hayunn.getEngine();
    en.step(player, "hi");
    // we assume the player has already completed the meet hayunn quest
    // so that we know which of the greetings he will use
    player.setQuest("meet_hayunn", "done");
    assertTrue(player.isQuestCompleted("meet_hayunn"));
    assertTrue(hayunn.isTalking());
    assertEquals(
        "Hi. I bet you've been sent here to learn about adventuring from me. First, lets see what you're made of. Go and kill a rat outside, you should be able to find one easily. Do you want to learn how to attack it, before you go?",
        getReply(hayunn));
    en.step(player, "quest");
    assertEquals(
        "My mouth is dry, but I can't be seen to abandon this teaching room! Could you bring me some #beer from the #tavern?",
        getReply(hayunn));
    en.step(player, "yes");
    assertTrue(player.hasQuest("beer_hayunn"));
    en.step(player, "bye");
    assertFalse(hayunn.isTalking());
    assertEquals("start", player.getQuest("beer_hayunn"));
    final StackableItem beer = new StackableItem("beer", "", "", null);
    beer.setQuantity(1);
    beer.setID(new ID(2, "testzone"));
    player.getSlot("bag").add(beer);
    assertEquals(1, player.getNumberOfEquipped("beer"));
    en.step(player, "hi");
    en.step(player, "yes");
    assertEquals("done", player.getQuest("beer_hayunn"));
    en.step(player, "bye");
    // reject
    final Player player2 = PlayerTestHelper.createPlayer("player");

    en.step(player2, "hi");
    player2.setQuest("meet_hayunn", "done");
    assertTrue(player2.isQuestCompleted("meet_hayunn"));
    assertTrue(hayunn.isTalking());
    assertEquals(
        "Hi. I bet you've been sent here to learn about adventuring from me. First, lets see what you're made of. Go and kill a rat outside, you should be able to find one easily. Do you want to learn how to attack it, before you go?",
        getReply(hayunn));
    en.step(player2, "quest");
    assertEquals(
        "My mouth is dry, but I can't be seen to abandon this teaching room! Could you bring me some #beer from the #tavern?",
        getReply(hayunn));
    en.step(player2, "no");
    assertTrue(player2.hasQuest("beer_hayunn"));
    assertEquals("rejected", player2.getQuest("beer_hayunn"));
    en.step(player2, "bye");
  }