Add support to create Repository objects lazily in MainClass.

This lets users do the following without issuing an unnecessary request:

issues_of_my_repository = g.get_repo('PyGithub/PyGithub').get_issues()

Since the GithubObject layer handles laziness transparently, lazy
loading is enabled by default, and can be disabled via the `lazy`
kwarg. This does not affect any test except tests that pertain to
caching or laziness itself.
This commit is contained in:
Uriel Corfa
2015-03-26 20:56:27 -07:00
parent ca13204dd5
commit 626d29c938
8 changed files with 111 additions and 15 deletions
+27
View File
@@ -492,3 +492,30 @@ class Repository(Framework.TestCase):
stats = self.repo.get_stats_punch_card()
self.assertEqual(stats.get(4, 12), 7)
self.assertEqual(stats.get(6, 18), 2)
class LazyRepository(Framework.TestCase):
def setUp(self):
Framework.TestCase.setUp(self)
self.user = self.g.get_user()
self.repository_name = '%s/%s' % (self.user.login, "PyGithub")
def getLazyRepository(self):
return self.g.get_repo(self.repository_name, lazy=True)
def getEagerRepository(self):
return self.g.get_repo(self.repository_name, lazy=False)
def testGetIssues(self):
lazy_repo = self.getLazyRepository()
issues = lazy_repo.get_issues()
eager_repo = self.getEagerRepository()
issues2 = eager_repo.get_issues()
self.assertListKeyEqual(issues2, id, [x for x in issues])
def testOwner(self):
lazy_repo = self.getLazyRepository()
owner = lazy_repo.owner
eager_repo = self.getEagerRepository()
self.assertEqual(owner, eager_repo.owner)