changes from code review:

  * splitting up tests that were testing more than one thing
  * making tests more concise by deleting any asserts that tested setup
    or were otherwise irrelevant to what was being tested
  * cleaning up tests setup that suffered from copy-paste syndrome
  * reorganization/grouping of tests and their descriptions