Bring a large pot of salted water to a boil. Add the elbow macaroni and cook until al dente. Drain and set aside.
Heat the olive oil in a skillet over medium heat. Add the diced onion and cook until soft, about 5 to 7 minutes. Set aside.
In a medium saucepan, melt the butter over medium heat. Stir in the flour and whisk for 1 to 2 minutes to form a roux. Slowly add the milk while whisking constantly to prevent lumps. Bring the mixture to a simmer and cook until it thickens, about 4 to 5 minutes.
Season with salt and pepper, then remove from heat and stir in both the Parmesan and cheddar cheeses until melted and smooth.
In a large bowl, gently fold together the cooked pasta, flaked tuna, sweet corn, creamed corn, and sautéed onion. Pour the cheese sauce over the mixture and stir until evenly combined.
Transfer the mixture to a greased 9x13-inch baking dish. If desired, top with a little extra cheese. Bake in a preheated oven at 350°F for 20 to 25 minutes, until bubbly and the top is lightly golden. Cover with foil during the last 5 minutes of baking if the surface is brown but the center is not heated through yet.