As @hoangdv mentioned, the simple fix for this was to change the mock return data:
global.fetch = jest.fn(() =>
Promise.resolve({
json: () => Promise.resolve(mockProgramData[0]),
}),
) as jest.Mock;
Instead, I was returning mockProgramData, and I hadn't realized the logs I wrote from the hook's fetch call was returning an array:
This was the issue, as the page component wouldn't destructure the Asset element properly, giving the appearance of receiving the undefined data as first returned by the fetch call on initial render.