From f56b22fdbf9630d0277195d533475294d8a82dbf Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Sun, 12 Feb 2012 15:53:56 +0100 Subject: [PATCH] Delete objects --- github/GithubObject.UnitTest.py | 16 +++++++++++++++- github/GithubObject.py | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/github/GithubObject.UnitTest.py b/github/GithubObject.UnitTest.py index f039cd84..a79a147a 100644 --- a/github/GithubObject.UnitTest.py +++ b/github/GithubObject.UnitTest.py @@ -1,7 +1,7 @@ import unittest import MockMockMock -from GithubObject import BadGithubObjectException, GithubObject, SimpleScalarAttributes, Editable +from GithubObject import BadGithubObjectException, GithubObject, SimpleScalarAttributes, Editable, Deletable class GithubObjectTestCase( unittest.TestCase ): def testDuplicatedAttributeInOnePolicy( self ): @@ -28,6 +28,9 @@ class TestCaseWithGithubTestObject( unittest.TestCase ): def expectPatch( self, url, data ): return self.g.expect.rawRequest( "PATCH", url, data ) + def expectDelete( self, url ): + return self.g.expect.rawRequest( "DELETE", url ) + class GithubObjectWithOnlySimpleScalarAttributes( TestCaseWithGithubTestObject ): GithubTestObject = GithubObject( "GithubTestObject", @@ -128,4 +131,15 @@ class EditableGithubObject( TestCaseWithGithubTestObject ): self.expectGet( "/test" ).andReturn( {} ) self.assertEqual( self.o.a4, None ) +class DeletableGithubObject( TestCaseWithGithubTestObject ): + GithubTestObject = GithubObject( + "GithubTestObject", + SimpleScalarAttributes( "a1", "a2", "a3", "a4" ), + Deletable(), + ) + + def testDelete( self ): + self.expectDelete( "/test" ) + self.o.delete() + unittest.main() diff --git a/github/GithubObject.py b/github/GithubObject.py index 26b10749..a6fe2869 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -64,6 +64,24 @@ class Editable: def getAttributeDefinitions( self ): yield "edit", Editable.AttributeDefinition( self.__mandatoryParameters, self.__optionalParameters ) +class Deletable: + class Deletor: + def __init__( self, obj ): + self.__obj = obj + + def __call__( self ): + self.__obj._github.rawRequest( "DELETE", "/test" ) + + class AttributeDefinition: + def getValueFromRawValue( self, obj, rawValue ): + return rawValue + + def updateAttributes( self, obj ): + obj._updateAttributes( { "delete": Deletable.Deletor( obj ) } ) + + def getAttributeDefinitions( self ): + yield "delete", Deletable.AttributeDefinition() + def GithubObject( className, *attributePolicies ): attributeDefinitions = dict() for attributePolicy in attributePolicies: