Ok, let's talk unit test philosophy.  :-)

Each individual unit test should be understandable on its own.  Tests don't have to be exhaustive across data, but they should be across code paths.  So if you just look at this individual test function, it's hard to tell what it's doing because you can't see the data that it's using as inputs.  You can get the same value out of the 3 foreach loops with only 3 assertions, 1 each for photo, movie and illegal.