def test_update_throw_key_error(self):
        # Create item and persist
        db_model = self.create_db_model_mixin(3, "Char Siew Mocha")
        self.table.put_item(Item=db_model.__dict__)

        new_name = 'Spicy Mocha'

        # Create DynamoDB Object and update data with invalid key value pair
        dynamodb = DynamoDB(self.table_name, DBModelMixin)

        with self.assertRaises(KeyError):
            dynamodb.update(key="id", value=234, update_key="display_name", update_value=new_name)

        # Clear data for test function
        self.table.delete_item(Key={"id": db_model.id})
    def test_update_success(self):
        # Create item and persist
        db_model = self.create_db_model_mixin(1, "Char Siew Mocha")
        self.table.put_item(Item=db_model.__dict__)

        # Initialize new name
        new_name = "Chicken Name"

        # Ensure that database record does not match the new name
        response = self.table.get_item(Key={"id": db_model.id}).get("Item")
        self.assertNotEqual(new_name, response.get("display_name"))

        # Create DynamoDB Object and get data
        dynamodb = DynamoDB(self.table_name, DBModelMixin)
        response = dynamodb.update(key="id", value=db_model.id, update_key="display_name", update_value=new_name)

        # Ensure that database record does not match the new name
        response = self.table.get_item(Key={"id": db_model.id}).get("Item")
        self.assertEqual(new_name, response.get("display_name"))

        # Clear data for test function
        self.table.delete_item(Key={"id": db_model.id})