projection can optionally take a list of fields to return
Update tests