added tests to ensure order of tags makes no difference

in the process, refactored tests to reduce noise - even though this adds
a somewhat uncomfortable layer of abstraction, it's ultimately worth it