     assert Flash.get(conn, :notice) == "hi"
   end
 
+  test "get/2 returns the only the last message put" do
+    conn = conn_with_session
+    |> Flash.put(:notice, "hi")
+    |> Flash.put(:notice, "bye")
+    assert Flash.get(conn, :notice) == "bye"
+  end
+
   test "get/2 returns nil for missing key" do
     conn = conn_with_session
     assert Flash.get(conn, :notice) == nil
+  end
+
+  test "get_all/2 returns a list of messages by key" do
+    conn = conn_with_session
+    |> Flash.put(:notices, "hello")
+    |> Flash.put(:notices, "world")
+
+    assert Flash.get_all(conn, :notices) == ["hello", "world"]
+  end
+
+  test "get_all/2 returns [] for missing key" do
+    conn = conn_with_session
+    assert Flash.get_all(conn, :notices) == []
   end
 
   test "put/3 adds the key/message pair to the flash" do


    {message, conn} = Flash.pop(conn, :error)
    assert message == "oh noes!"
    assert Flash.get(conn) == %{notice: "false alarm!"}

    {message, conn} = Flash.pop(conn, :notice)
    assert message == "false alarm!"
    assert Flash.get(conn) == %{}
  end
end



  test "get/1 returns the map of messages" do
    conn = conn_with_session |> Flash.put(:notice, "hi")
    assert Flash.get(conn) == %{notice: ["hi"]}
  end

  test "get/2 returns the message by key" do
