Skip to content

Implement __eq__ for CreateFolderParent class #1157

Description

@supermitch

Is your feature request related to a problem? Please describe.

I'm trying to use unittest to check call args:

def test_create_folder_exists(box: BoxClient):
    with patch.object(box.folders, 'create_folder') as mock_create:
        mock_create.side_effect = [
            BoxAPIError(RequestInfo('POST', 'url', {}, {}), ResponseInfo(409, {}), '409'),
            'FolderFull',
        ]
        new_box.create_folder(
            box,
            PARENT_FOLDER_ID,
            'test_folder_829',
            increment=True,
        )
        assert mock_create.call_count == 2
        mock_create.assert_any_call(
                'test_folder_829 (1)',
                CreateFolderParent(PARENT_FOLDER_ID),  # THIS PART IS FAILING
        )

(I'm trying to check that my code increments folder names on collisions, like name (1), name (2), etc.)

Unfortunately, the assertion does NOT pass, because CreateFolderParent doesn't implement __eq__:

In [9]: from box_sdk_gen import CreateFolderParent
In [10]: a = CreateFolderParent('12')
In [11]: b = CreateFolderParent('12')
In [12]: a == b
Out[12]: False

Describe the solution you'd like

Adding basic equality check makes my tests pass:

    def __eq__(self, other):
        if isinstance(other, CreateFolderParent):
            return self.id == other.id
        return False

I guess it would be nice to implement this for all these "arg" classes in the library, as there are lots of them.

Describe alternatives you've considered

I can fix my current issues with deep assert equal of the create_folder_parent.id values.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions