def ensure_user_has_email(user, watch): """Make sure the user in the user-watch pair has an email address. The caller guarantees us an email from either the user or the watch. If the passed-in user has no email, we return an EmailUser instead having the email address from the watch. """ # Some of these cases shouldn't happen, but we're tolerant. if not getattr(user, 'email', ''): user = EmailUser(watch.email) return user, watch
def test_anonymous_user_compares(): """Make sure anonymous users with different emails compare different.""" # Test __ne__: assert EmailUser('frank') != EmailUser('george') assert not EmailUser('frank') != EmailUser('frank') # Test __eq__: assert not EmailUser('frank') == EmailUser('george') assert EmailUser('frank') == EmailUser('frank') # Test __hash__: assert hash(EmailUser('frank')) == hash(EmailUser('frank')) assert hash(EmailUser('frank')) != hash(EmailUser('george'))