ObjectGetter

This commit is contained in:
Vincent Jacques
2012-02-20 08:07:00 +01:00
parent 2c53d9a129
commit 18a2ef50b3
2 changed files with 27 additions and 0 deletions
+18
View File
@@ -286,6 +286,24 @@ class GithubObjectWithModifiableListOfObjects( TestCaseWithGithubTestObject ):
self.expectDataPost( "/test/a3s", { "name": "nameCreate" } ).andReturn( { "id": "idCreate" } )
self.assertEqual( self.o.create_a3s( name = "nameCreate" ).id, "idCreate" )
class GithubObjectWithObjectGetter( TestCaseWithGithubTestObject ):
ContainedObject = GithubObject(
"ContainedObject",
BaseUrl( lambda obj: "/test/a3s/" + obj.id ),
BasicAttributes( "id", "name" )
)
GithubTestObject = GithubObject(
"GithubTestObject",
BaseUrl( lambda obj: "/test" ),
BasicAttributes( "a1", "a2" ),
ObjectGetter( "a3", ContainedObject, lambda id : { "id": id } )
)
def testGetList( self ):
self.expectDataGet( "/test/a3s/idGet" ).andReturn( { "id": "idGet" } )
self.assertEqual( self.o.get_a3( "idGet" ).id, "idGet" )
def myCallable( obj, mock, arg ):
return mock.call( arg )
+9
View File
@@ -185,6 +185,15 @@ class Deletable( MethodFromCallable ):
def __execute( self, obj, *args, **kwds ):
obj._github._statusRequest( "DELETE", obj._baseUrl, None, None )
class ObjectGetter( MethodFromCallable ):
def __init__( self, singularName, type, attributes ):
MethodFromCallable.__init__( self, "get_" + singularName, self.__execute )
self.__attributes = attributes
self.__type = type
def __execute( self, obj, *args, **kwds ):
return self.__type( obj._github, self.__attributes( *args, **kwds ), lazy = False )
def GithubObject( className, *attributePolicies ):
class GithubObject:
__attributeDefinitions = dict()