def test_IntersectDictDeep_ReturnIntersectData(self):
        # Arrange
        dict1 = {'deep': {'foo': 1, 'bar': 2}}
        dict2 = {'deep': {'foo': 1}}

        # Act
        result = dict_utils.dict_intersect(dict1, dict2)

        # Assert
        assert result == {'deep': {'foo': 1}}
    def test_IntersectDictWithList_ReturnDeepIntersect(self):
        # Arrange
        dict1 = {'deep': [{'foo': 1}, {'bar': 2}]}
        dict2 = {'deep': [{'foo': 1}]}

        # Act
        result = dict_utils.dict_intersect(dict1, dict2)

        # Assert
        assert result == {'deep': [{'foo': 1}]}
    def test_IntersectDictDifferentPrimitiveValue_ReturnDict2Value(self):
        # Arrange
        dict1 = {'foo': 1}
        dict2 = {'foo': 2}

        # Act
        result = dict_utils.dict_intersect(dict1, dict2)

        # Assert
        assert result == {'foo': 2}
    def test_IntersectDictToEmpty_ReturnEmptyData(self):
        # Arrange
        dict1 = {'foo': 1, 'bar': 2}
        dict2 = {}

        # Act
        result = dict_utils.dict_intersect(dict1, dict2)

        # Assert
        assert result == {}
    def test_IntersectDictImmutable_ExpectOriginData(self):
        # Arrange
        dict1 = {'foo': 1, 'bar': 2}
        dict2 = {'foo': 1}

        # Act
        result = dict_utils.dict_intersect(dict1, dict2)

        # Assert
        assert dict1 == {'foo': 1, 'bar': 2}
        assert dict2 == {'foo': 1}