refactored tests even further, they are even more readable now, using context blocks for each method and let/before blocks to reduce code duplication