Refactoring condition asserts for #126

I hope I haven't misunderstood the point of #126, this change DRYs out the condition asserts quite a lot.

I did notice that for each assertAreXXXXX there is an assertHaveXXXXX method that is identical except for the error message. These methods could be DRYd out too if they are conceptually meant to do the same thing.