def METHOD_NAME(self):
    value_hexbytes = Web3.keccak(text=faker.name())
    value_hex_with_0x: str = value_hexbytes.hex()
    value_hex_without_0x: str = value_hex_with_0x[2:]
    value: bytes = bytes(value_hexbytes)
    values = [value, value_hex_without_0x, value_hex_with_0x, value_hexbytes]
    for v in values:
        with self.subTest(v=v):
            keccak256_hash = Keccak256Hash(value=v)
            self.assertIsNone(keccak256_hash.full_clean())
            keccak256_hash.save()
            keccak256_hash.refresh_from_db()
            self.assertEqual(keccak256_hash.value, value_hex_with_0x)
    for v in values:
        with self.subTest(v=v):
            self.assertEqual(
                Keccak256Hash.objects.filter(value=v).count(), len(values)
            )
    # Hash null
    keccak256_hash = Keccak256Hash.objects.create(value=None)
    keccak256_hash.refresh_from_db()
    self.assertIsNone(keccak256_hash.value)
    # Hash too big
    value_hex_invalid: str = "0x" + value_hex_without_0x + "a"
    with self.assertRaisesMessage(
        ValidationError, f'"{value_hex_invalid}" hash must have exactly 32 bytes.'
    ):
        with transaction.atomic():
            Keccak256Hash.objects.create(value=value_hex_invalid)
    # Hash too small
    value_hex_invalid: str = "0x" + "a1"
    with self.assertRaisesMessage(
        ValidationError, f'"{value_hex_invalid}" hash must have exactly 32 bytes.'
    ):
        with transaction.atomic():
            Keccak256Hash.objects.create(value=value_hex_invalid)
    # Invalid hash
    value_hex_invalid: str = "UX/IO"
    with self.assertRaisesMessage(
        ValidationError,
        f'"{value_hex_invalid}" hash must be a 32 bytes hexadecimal.',
    ):
        with transaction.atomic():
            Keccak256Hash.objects.create(value=value_hex_invalid)