def test_hash__model_unsaved(self):
        obj = Book()
        cached_obj = CachedObject(obj)

        self.assertEqual(obj, cached_obj.obj)

        with self.assertRaises(TypeError):
            obj.__hash__()

        # Returns with no exception
        cached_obj.__hash__()
    def test_hash__plain_object(self):
        obj = MyClass(1, 2)
        cached_obj = CachedObject(obj)

        self.assertEqual(obj.__hash__(), cached_obj.__hash__())
        self.assertEqual(obj, cached_obj.obj)