box / box/box-python-sdk

Implement `__eq__` for CreateFolderParent class

Open
#1,157 1 comment 0 reactions 6 assignees Claimed by @mwwoda View on GitHub
enhancement
Dominant language
Python
Stars
459
Forks
223
Avg merge
8h 57m
Merged PRs (30d)
13

Description

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

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

```python
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__`:

```ipython
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:

```python
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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.