Refactor specs, use shared contexts

@rimian would appreciate any feedback you have on the test structure. 
I would probably put all these stubs in a helper somewhere. Just to make the specs easier to read. Maybe I would think that was a bad idea later.