mirror of
https://github.com/status-im/PyGithub.git
synced 2026-08-31 19:01:15 +00:00
Complete Legacy.convertXxx (issue #81)
This commit is contained in:
+41
-14
@@ -46,29 +46,56 @@ class PaginatedList( PaginatedListBase ):
|
||||
]
|
||||
|
||||
def convertUser( attributes ):
|
||||
login = attributes[ "login" ]
|
||||
return {
|
||||
"login": login,
|
||||
"url": "/users/" + login,
|
||||
convertedAttributes = {
|
||||
"name": attributes[ "name" ],
|
||||
"created_at": attributes[ "created_at" ],
|
||||
"location": attributes[ "location" ],
|
||||
|
||||
"login": attributes[ "login" ],
|
||||
"url": "/users/" + attributes[ "login" ],
|
||||
}
|
||||
if "gravatar_id" in attributes: convertedAttributes[ "gravatar_id" ] = attributes[ "gravatar_id" ]
|
||||
if "followers" in attributes: convertedAttributes[ "followers" ] = attributes[ "followers" ]
|
||||
if "repos" in attributes: convertedAttributes[ "public_repos" ] = attributes[ "repos" ]
|
||||
return convertedAttributes
|
||||
|
||||
def convertRepo( attributes ):
|
||||
owner = attributes[ "owner" ]
|
||||
name = attributes[ "name" ]
|
||||
return {
|
||||
"owner": { "login": owner },
|
||||
"name": name,
|
||||
"url": "/repos/" + owner + "/" + name,
|
||||
convertedAttributes = {
|
||||
"created_at": attributes[ "created_at" ],
|
||||
"watchers": attributes[ "watchers" ],
|
||||
"has_downloads": attributes[ "has_downloads" ],
|
||||
"fork": attributes[ "fork" ],
|
||||
"has_issues": attributes[ "has_issues" ],
|
||||
"has_wiki": attributes[ "has_wiki" ],
|
||||
"forks": attributes[ "forks" ],
|
||||
"size": attributes[ "size" ],
|
||||
"private": attributes[ "private" ],
|
||||
"open_issues": attributes[ "open_issues" ],
|
||||
"description": attributes[ "description" ],
|
||||
"language": attributes[ "language" ],
|
||||
"name": attributes[ "name" ],
|
||||
|
||||
"owner": { "login": attributes[ "owner" ], "url": "/users/" + attributes[ "owner" ] },
|
||||
"url": "/repos/" + attributes[ "owner" ] + "/" + attributes[ "name" ],
|
||||
}
|
||||
if "pushed_at" in attributes: convertedAttributes[ "pushed_at" ] = attributes[ "pushed_at" ]
|
||||
if "homepage" in attributes: convertedAttributes[ "homepage" ] = attributes[ "homepage" ]
|
||||
return convertedAttributes
|
||||
|
||||
def convertIssue( attributes ):
|
||||
number = attributes[ "number" ]
|
||||
title = attributes[ "title" ]
|
||||
html_url = attributes[ "html_url" ]
|
||||
assert html_url.startswith( "https://github.com/" )
|
||||
url = html_url.replace( "https://github.com/", "/repos/" )
|
||||
return {
|
||||
"title": title,
|
||||
"number": number,
|
||||
"title": attributes[ "title" ],
|
||||
"number": attributes[ "number" ],
|
||||
"created_at": attributes[ "created_at" ],
|
||||
"comments": attributes[ "comments" ],
|
||||
"body": attributes[ "body" ],
|
||||
"updated_at": attributes[ "updated_at" ],
|
||||
"state": attributes[ "state" ],
|
||||
|
||||
"url": url,
|
||||
"user": { "login": attributes[ "user" ], "url": "/users/" + attributes[ "user" ] },
|
||||
"labels": [ { "name": label } for label in attributes[ "labels" ] ],
|
||||
}
|
||||
|
||||
+33
-1
@@ -11,6 +11,8 @@
|
||||
|
||||
# You should have received a copy of the GNU Lesser General Public License along with PyGithub. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import datetime
|
||||
|
||||
import Framework
|
||||
|
||||
class Github( Framework.TestCase ):
|
||||
@@ -22,6 +24,26 @@ class Github( Framework.TestCase ):
|
||||
self.assertListKeyBegin( repos, lambda r: r.name, [ "octokit", "github-v3-api", "github_v3_api" ] )
|
||||
self.assertEqual( repos[ 0 ].full_name, "pengwynn/octokit" )
|
||||
|
||||
# Attributes retrieved from legacy API without lazy completion call
|
||||
self.assertEqual( repos[ 1 ].created_at, datetime.datetime( 2011, 6, 23, 22, 52, 33 ) )
|
||||
self.assertEqual( repos[ 1 ].name, "github-v3-api" )
|
||||
self.assertEqual( repos[ 1 ].watchers, 35 )
|
||||
self.assertEqual( repos[ 1 ].has_downloads, True )
|
||||
self.assertEqual( repos[ 3 ].homepage, "http://peter-murach.github.com/github" )
|
||||
self.assertEqual( repos[ 1 ].url, "/repos/jwilger/github-v3-api" )
|
||||
self.assertEqual( repos[ 1 ].fork, False )
|
||||
self.assertEqual( repos[ 1 ].has_issues, True )
|
||||
self.assertEqual( repos[ 1 ].has_wiki, False )
|
||||
self.assertEqual( repos[ 1 ].forks, 13 )
|
||||
self.assertEqual( repos[ 1 ].size, 212 )
|
||||
self.assertEqual( repos[ 1 ].private, False )
|
||||
self.assertEqual( repos[ 1 ].open_issues, 2 )
|
||||
self.assertEqual( repos[ 3 ].pushed_at, datetime.datetime( 2012, 6, 28, 21, 26, 31 ) )
|
||||
self.assertEqual( repos[ 1 ].description, "Ruby Client for the GitHub v3 API" )
|
||||
self.assertEqual( repos[ 1 ].language, "Ruby" )
|
||||
self.assertEqual( repos[ 1 ].owner.login, "jwilger" )
|
||||
self.assertEqual( repos[ 1 ].owner.url, "/users/jwilger" )
|
||||
|
||||
def testLegacySearchReposPagination( self ):
|
||||
repos = self.g.legacy_search_repos( "document" )
|
||||
self.assertListKeyBegin( repos, lambda r: r.name, [ "git", "nimbus", "kss", "sstoolkit", "lawnchair", "appledoc", "jQ.Mobi", "ipython", "mongoengine", "ravendb", "substance", "symfony-docs", "JavaScript-Garden", "DocSets-for-iOS", "yard", "phpDocumentor2", "phpsh", "Tangle", "Ingredients", "documentjs", "xhp", "couchdb-lucene", "dox", "magento2", "javascriptmvc", "FastPdfKit", "roar", "DocumentUp", "NoRM", "jsdoc", "tagger", "mongodb-csharp", "php-github-api", "beautiful-docs", "mongodb-odm", "iodocs", "seesaw", "bcx-api", "developer.github.com", "amqp", "docsplit", "pycco", "standards-and-practices", "tidy-html5", "redis-doc", "tomdoc", "docs", "flourish", "userguide", "swagger-ui", "rfc", "Weasel-Diesel", "yuidoc", "apigen", "document-viewer", "develop.github.com", "Shanty-Mongo", "PTShowcaseViewController", "gravatar_image_tag", "api-wow-docs", "mongoid-tree", "safari-json-formatter", "mayan", "orm-documentation", "jsfiddle-docs-alpha", "core", "documentcloud", "flexible-nav", "writeCapture", "readium", "xmldocument", "Documentation-Examples", "grails-doc", "stdeb", "aws-autoscaling", "voteable_mongo", "review", "spreadsheet_on_rails", "UKSyntaxColoredTextDocument", "mandango", "bdoc", "Documentation", "documents.com", "rghost", "ticket_mule", "vendo", "khan-api", "spring-data-document-examples", "rspec_api_documentation", "axlsx", "phpdox", "documentation", "Sami", "innershiv", "doxyclean", "documents", "rvm-site", "jqapi", "documentation", "hadoopy", "VichUploaderBundle", "pdoc", "documentation", "wii-js", "oss-docs", "scala-maven-plugin", "Documents", "documenter", "behemoth", "documentation", "documentation", "propelorm.github.com", "Kobold2D", "AutoObjectDocumentation", "php-mongodb-admin", "django-mongokit", "puppet-docs", "docs", "Document", "vendorer", "symfony1-docs", "shocco", "documentation", "jog", "docs", "documentation", "documentation", "documentation", "documentation", "Documentation", "documentation", "documentation", "phpunit-documentation", "ADCtheme", "NelmioApiDocBundle", "iCloud-Singleton-CloudMe", "Documentation", "document", "document_mapper", "heroku-docs", "couchdb-odm", "documentation", "documentation", "document", "documentation", "NanoStore", "documentation", "Documentation", "documentation", "Documentation", "documentation", "document", "documentation", "documentation", "Documentation", "Documentation", "grendel", "ceylon-compiler", "mbtiles-spec", "documentation", "documents", "documents", "Documents", "Documentation", "documentation", "Documentation", "documentation", "documents", "Documentation", "documentation", "documentation", "documents", "Documentation", "documentation", "documenter", "documentation", "documents", "Documents", "documents", "documents", "documentation", "Document", "document", "rdoc", "mongoid_token", "travis-ci.github.com", "Documents", "Documents", "documents", "Document", "Documentation", "documents", "Documents", "Documentation", "documents", "documents", "documents", "documentation", "Documents", "Document", "documents", "documents", "Documentation", "Documentation", "Document", "documents", "Documents", "Documents", "Documentation", "Documents", "documents", "Documents", "document", "documents", "Documentation", "Documents", "documents", "documents", "Documents", "documents", "Documentation", "documentation", "Document", "Documents", "documents", "documents", "documents", "Documentation", "Documentation", "Documents", "Documents", "Documents", "Documenter", "document", "Documentation", "Documents", "Documents", "documentation", "documentation", "Document", "Documents", "Documentation", "Documentation", "Documents", "documents", "Documents", "document", "documentation", "Documents", "documentation", "documentation", "documentation", "Documentation", "Documents", "Documents", "documentation", "Documents", "Documents", "documentation", "documentation", "documents", "Documentation", "documents", "documentation", "Documentation", "Documents", "documentation", "documentation", "documents", "documentation", "Umbraco5Docs", "documents", "Documents", "Documentation", "documents", "document", "documents", "document", "documents", "documentation", "Documents", "documents", "document", "Documents", "Documentation", "Documentation", "documentation", "Documentation", "document", "documentation", "documents", "documents", "Documentations", "document", "documentation", "Documentation", "Document", "Documents", "Documents", "Document" ] )
|
||||
@@ -32,7 +54,17 @@ class Github( Framework.TestCase ):
|
||||
self.assertEqual( repos[ 0 ].full_name, "ipython/ipython" )
|
||||
|
||||
def testLegacySearchUsers( self ):
|
||||
self.assertListKeyBegin( self.g.legacy_search_users( "vincent" ), lambda u: u.login, [ "nvie", "obra", "lusis" ] )
|
||||
users = self.g.legacy_search_users( "vincent" )
|
||||
self.assertListKeyBegin( users, lambda u: u.login, [ "nvie", "obra", "lusis" ] )
|
||||
|
||||
# Attributes retrieved from legacy API without lazy completion call
|
||||
self.assertEqual( users[ 0 ].gravatar_id, "c5a7f21b46df698f3db31c37ed0cf55a" )
|
||||
self.assertEqual( users[ 0 ].name, "Vincent Driessen" )
|
||||
self.assertEqual( users[ 0 ].created_at, datetime.datetime( 2009, 5, 12, 21, 19, 38 ) )
|
||||
self.assertEqual( users[ 0 ].location, "Netherlands" )
|
||||
self.assertEqual( users[ 0 ].followers, 310 )
|
||||
self.assertEqual( users[ 0 ].public_repos, 63 )
|
||||
self.assertEqual( users[ 0 ].login, "nvie" )
|
||||
|
||||
def testLegacySearchUsersPagination( self ):
|
||||
self.assertEqual( len( list( self.g.legacy_search_users( "Lucy" ) ) ), 146 )
|
||||
|
||||
+14
-1
@@ -344,7 +344,20 @@ class Repository( Framework.TestCase ):
|
||||
self.assertListKeyEqual( self.repo.get_pulls( "closed" ), lambda p: p.id, [ 1448168, 1436310, 1436215 ] )
|
||||
|
||||
def testLegacySearchIssues( self ):
|
||||
self.assertListKeyEqual( self.repo.legacy_search_issues( "open", "search" ), lambda i: i.title, [ "Support new Search API" ] )
|
||||
issues = self.repo.legacy_search_issues( "open", "search" )
|
||||
self.assertListKeyEqual( issues, lambda i: i.title, [ "Support new Search API" ] )
|
||||
|
||||
# Attributes retrieved from legacy API without lazy completion call
|
||||
self.assertEqual( issues[ 0 ].number, 49 )
|
||||
self.assertEqual( issues[ 0 ].created_at, datetime.datetime( 2012, 6, 21, 12, 27, 38 ) )
|
||||
self.assertEqual( issues[ 0 ].comments, 4 )
|
||||
self.assertEqual( issues[ 0 ].body[ : 20 ], "New API ported from " )
|
||||
self.assertEqual( issues[ 0 ].title, "Support new Search API" )
|
||||
self.assertEqual( issues[ 0 ].updated_at, datetime.datetime( 2012, 6, 28, 21, 13, 25 ) )
|
||||
self.assertEqual( issues[ 0 ].user.login, "kukuts" )
|
||||
self.assertEqual( issues[ 0 ].user.url, "/users/kukuts" )
|
||||
self.assertListKeyEqual( issues[ 0 ].labels, lambda l: l.name, [ "Functionalities", "RequestedByUser" ] )
|
||||
self.assertEqual( issues[ 0 ].state, "open" )
|
||||
|
||||
def testAssignees( self ):
|
||||
lyloa = self.g.get_user( "Lyloa" )
|
||||
|
||||
Reference in New Issue
Block a user