Skip to content

Commit 832202b

Browse files
authored
redminelib/resources: add eq methods (#336)
* redminelib/resources: add eq metamethod To test whether, for example, a project looked up earlier is equal to the project associated with an issue or tracker. Signed-off-by: Patrick Donnelly <[email protected]> * tests: add tests for eq method Signed-off-by: Patrick Donnelly <[email protected]> --------- Signed-off-by: Patrick Donnelly <[email protected]>
1 parent b2dc295 commit 832202b

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

redminelib/resources/base.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,12 @@ def __init__(self, manager, attributes):
172172
if self._relations_name is None:
173173
self._relations_name = self.__class__.__name__.lower()
174174

175+
def __eq__(self, other):
176+
if isinstance(other, self.__class__):
177+
return self.internal_id == other.internal_id
178+
else:
179+
return False
180+
175181
def __getitem__(self, item):
176182
"""
177183
Provides dictionary-like access to Resource attributes.

tests/test_resources_standard.py

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55

66

77
class StandardResourcesTestCase(BaseRedmineTestCase):
8+
def _test_eq_helper(self, f):
9+
r1 = f()
10+
r2 = f()
11+
self.assertNotEqual(id(r1), id(r2))
12+
self.assertEqual(r1, r2)
13+
814
def test_supports_dictionary_like_attribute_retrieval(self):
915
self.response.json.return_value = responses['project']['get']
1016
project = self.redmine.project.get(1)
@@ -271,6 +277,10 @@ def test_project_get(self):
271277
self.assertEqual(project.id, 1)
272278
self.assertEqual(project.name, 'Foo')
273279

280+
def test_project_eq(self):
281+
self.response.json.return_value = responses['project']['get']
282+
return self._test_eq_helper(lambda: self.redmine.project.get(1))
283+
274284
def test_project_all(self):
275285
self.response.json.return_value = responses['project']['all']
276286
projects = self.redmine.project.all()
@@ -409,6 +419,10 @@ def test_issue_get(self):
409419
self.assertEqual(issue.id, 1)
410420
self.assertEqual(issue.subject, 'Foo')
411421

422+
def test_issue_eq(self):
423+
self.response.json.return_value = responses['issue']['get']
424+
return self._test_eq_helper(lambda: self.redmine.issue.get(1))
425+
412426
def test_issue_all(self):
413427
self.response.json.return_value = responses['issue']['all']
414428
issues = self.redmine.issue.all()
@@ -681,6 +695,10 @@ def test_time_entry_get(self):
681695
self.assertEqual(time_entry.id, 1)
682696
self.assertEqual(time_entry.hours, 2)
683697

698+
def test_time_entry_eq(self):
699+
self.response.json.return_value = responses['time_entry']['get']
700+
return self._test_eq_helper(lambda: self.redmine.time_entry.get(1))
701+
684702
def test_time_entry_all(self):
685703
self.response.json.return_value = responses['time_entry']['all']
686704
time_entries = self.redmine.time_entry.all()
@@ -785,6 +803,10 @@ def test_enumeration_get(self):
785803
self.assertEqual(enumeration.id, 1)
786804
self.assertEqual(enumeration.name, 'Foo')
787805

806+
def test_enumeration_eq(self):
807+
self.response.json.return_value = responses['enumeration']['filter']
808+
return self._test_eq_helper(lambda: self.redmine.enumeration.get(1, resource='time_entry_activities'))
809+
788810
def test_enumeration_filter(self):
789811
self.response.json.return_value = responses['enumeration']['filter']
790812
enumerations = self.redmine.enumeration.filter(resource='time_entry_activities')
@@ -809,6 +831,10 @@ def test_attachment_get(self):
809831
self.assertEqual(attachment.id, 1)
810832
self.assertEqual(attachment.filename, 'foo.jpg')
811833

834+
def test_attachment_entry_eq(self):
835+
self.response.json.return_value = responses['attachment']['get']
836+
return self._test_eq_helper(lambda: self.redmine.attachment.get(1))
837+
812838
def test_attachment_update(self):
813839
self.response.json.return_value = responses['attachment']['get']
814840
attachment = self.redmine.attachment.get(1)
@@ -870,6 +896,10 @@ def test_file_get(self):
870896
self.assertEqual(f.id, 1)
871897
self.assertEqual(f.filename, 'foo.jpg')
872898

899+
def test_file_eq(self):
900+
self.response.json.return_value = responses['attachment']['get']
901+
return self._test_eq_helper(lambda: self.redmine.file.get(1))
902+
873903
def test_file_filter(self):
874904
self.response.json.return_value = responses['file']['filter']
875905
files = self.redmine.file.filter(project_id=1)
@@ -953,6 +983,10 @@ def test_wiki_page_get(self):
953983
wiki_page = self.redmine.wiki_page.get('Foo', project_id=1)
954984
self.assertEqual(wiki_page.title, 'Foo')
955985

986+
def test_wiki_eq(self):
987+
self.response.json.return_value = responses['wiki_page']['get']
988+
return self._test_eq_helper(lambda: self.redmine.wiki_page.get('Foo', project_id=1))
989+
956990
def test_wiki_page_get_special(self):
957991
"""Test getting a wiki page with special char in title."""
958992
self.response.json.return_value = responses['wiki_page']['get_special']
@@ -1077,6 +1111,10 @@ def test_project_membership_get(self):
10771111
membership = self.redmine.project_membership.get(1)
10781112
self.assertEqual(membership.id, 1)
10791113

1114+
def test_project_membership_eq(self):
1115+
self.response.json.return_value = responses['project_membership']['get']
1116+
return self._test_eq_helper(lambda: self.redmine.project_membership.get(1))
1117+
10801118
def test_project_membership_filter(self):
10811119
self.response.json.return_value = responses['project_membership']['filter']
10821120
memberships = self.redmine.project_membership.filter(project_id=1)
@@ -1158,6 +1196,10 @@ def test_issue_category_get(self):
11581196
self.assertEqual(issue_category.id, 1)
11591197
self.assertEqual(issue_category.name, 'Foo')
11601198

1199+
def test_issue_category_eq(self):
1200+
self.response.json.return_value = responses['issue_category']['get']
1201+
return self._test_eq_helper(lambda: self.redmine.issue_category.get(1))
1202+
11611203
def test_issue_category_filter(self):
11621204
self.response.json.return_value = responses['issue_category']['filter']
11631205
categories = self.redmine.issue_category.filter(project_id=1)
@@ -1221,6 +1263,10 @@ def test_issue_relation_get(self):
12211263
relation = self.redmine.issue_relation.get(1)
12221264
self.assertEqual(relation.id, 1)
12231265

1266+
def test_issue_relation_eq(self):
1267+
self.response.json.return_value = responses['issue_relation']['get']
1268+
return self._test_eq_helper(lambda: self.redmine.issue_relation.get(1))
1269+
12241270
def test_issue_relation_filter(self):
12251271
self.response.json.return_value = responses['issue_relation']['filter']
12261272
relations = self.redmine.issue_relation.filter(issue_id=1)
@@ -1273,6 +1319,10 @@ def test_version_get(self):
12731319
self.assertEqual(version.id, 1)
12741320
self.assertEqual(version.name, 'Foo')
12751321

1322+
def test_version_eq(self):
1323+
self.response.json.return_value = responses['version']['get']
1324+
return self._test_eq_helper(lambda: self.redmine.version.get(1))
1325+
12761326
def test_version_filter(self):
12771327
self.response.json.return_value = responses['version']['filter']
12781328
versions = self.redmine.version.filter(project_id=1)
@@ -1337,6 +1387,10 @@ def test_user_get(self):
13371387
self.assertEqual(user.id, 1)
13381388
self.assertEqual(user.firstname, 'John')
13391389

1390+
def test_user_eq(self):
1391+
self.response.json.return_value = responses['user']['get']
1392+
return self._test_eq_helper(lambda: self.redmine.user.get(1))
1393+
13401394
def test_user_get_account(self):
13411395
self.response.json.return_value = responses['user']['get']
13421396
user = self.redmine.user.get('me')
@@ -1463,6 +1517,10 @@ def test_group_get(self):
14631517
self.assertEqual(group.id, 1)
14641518
self.assertEqual(group.name, 'Foo')
14651519

1520+
def test_group_eq(self):
1521+
self.response.json.return_value = responses['group']['get']
1522+
return self._test_eq_helper(lambda: self.redmine.group.get(1))
1523+
14661524
def test_group_all(self):
14671525
self.response.json.return_value = responses['group']['all']
14681526
groups = self.redmine.group.all()
@@ -1538,6 +1596,10 @@ def test_role_get(self):
15381596
self.assertEqual(role.id, 1)
15391597
self.assertEqual(role.name, 'Foo')
15401598

1599+
def test_role_eq(self):
1600+
self.response.json.return_value = responses['role']['get']
1601+
return self._test_eq_helper(lambda: self.redmine.role.get(1))
1602+
15411603
def test_role_all(self):
15421604
self.response.json.return_value = responses['role']['all']
15431605
roles = self.redmine.role.all()
@@ -1559,6 +1621,10 @@ def test_news_get(self):
15591621
self.assertEqual(news.id, 1)
15601622
self.assertEqual(news.title, 'Foo')
15611623

1624+
def test_news_eq(self):
1625+
self.response.json.return_value = responses['news']['get']
1626+
return self._test_eq_helper(lambda: self.redmine.news.get(1))
1627+
15621628
def test_news_all(self):
15631629
self.response.json.return_value = responses['news']['all']
15641630
news = self.redmine.news.all()
@@ -1656,6 +1722,10 @@ def test_issue_status_get(self):
16561722
self.assertEqual(status.id, 1)
16571723
self.assertEqual(status.name, 'Foo')
16581724

1725+
def test_issue_status_eq(self):
1726+
self.response.json.return_value = responses['issue_status']['all']
1727+
return self._test_eq_helper(lambda: self.redmine.issue_status.get(1))
1728+
16591729
def test_issue_status_all(self):
16601730
self.response.json.return_value = responses['issue_status']['all']
16611731
statuses = self.redmine.issue_status.all()
@@ -1677,6 +1747,10 @@ def test_tracker_get(self):
16771747
self.assertEqual(tracker.id, 1)
16781748
self.assertEqual(tracker.name, 'Foo')
16791749

1750+
def test_tracker_eq(self):
1751+
self.response.json.return_value = responses['tracker']['all']
1752+
return self._test_eq_helper(lambda: self.redmine.tracker.get(1))
1753+
16801754
def test_tracker_all(self):
16811755
self.response.json.return_value = responses['tracker']['all']
16821756
trackers = self.redmine.tracker.all()
@@ -1698,6 +1772,10 @@ def test_query_get(self):
16981772
self.assertEqual(query.id, 1)
16991773
self.assertEqual(query.name, 'Foo')
17001774

1775+
def test_query_eq(self):
1776+
self.response.json.return_value = responses['query']['all']
1777+
return self._test_eq_helper(lambda: self.redmine.query.get(1))
1778+
17011779
def test_query_all(self):
17021780
self.response.json.return_value = responses['query']['all']
17031781
queries = self.redmine.query.all()
@@ -1719,6 +1797,10 @@ def test_custom_field_get(self):
17191797
self.assertEqual(field.id, 1)
17201798
self.assertEqual(field.name, 'Foo')
17211799

1800+
def test_custom_field_eq(self):
1801+
self.response.json.return_value = responses['custom_field']['all']
1802+
return self._test_eq_helper(lambda: self.redmine.custom_field.get(1))
1803+
17221804
def test_custom_field_all(self):
17231805
self.response.json.return_value = responses['custom_field']['all']
17241806
fields = self.redmine.custom_field.all()

0 commit comments

Comments
 (0)