From b9bea828c2f5d80d8cc24767cb7cf00d43dd2c1a Mon Sep 17 00:00:00 2001 From: jacobemerick Date: Tue, 17 Oct 2017 20:50:06 -0700 Subject: [PATCH] Final unit tests around event handler --- tests/unit/Cron/Process/CodeTest.php | 267 +++++++++++++++++++++++++++ 1 file changed, 267 insertions(+) diff --git a/tests/unit/Cron/Process/CodeTest.php b/tests/unit/Cron/Process/CodeTest.php index 0956194..61c28dc 100644 --- a/tests/unit/Cron/Process/CodeTest.php +++ b/tests/unit/Cron/Process/CodeTest.php @@ -616,6 +616,273 @@ public function testFetchCodeEventsReturnsItems() $this->assertEquals($events, $result); } + public function testGetDescriptionsHandlesCreateEvents() + { + $type = 'CreateEvent'; + $metadata = new stdclass; + + $description = 'some description'; + $descriptionHtml = '

some description

'; + + $code = $this->getMockBuilder(Code::class) + ->disableOriginalConstructor() + ->setMethods([ + 'getCreateDescription', + 'getCreateDescriptionHtml', + 'getForkDescription', + 'getForkDescriptionHtml', + 'getPullRequestDescription', + 'getPullRequestDescriptionHtml', + 'getPushDescription', + 'getPushDescriptionHtml', + ]) + ->getMock(); + $code->expects($this->once()) + ->method('getCreateDescription') + ->with($metadata) + ->willReturn($description); + $code->expects($this->once()) + ->method('getCreateDescriptionHtml') + ->with($metadata) + ->willReturn($descriptionHtml); + $code->expects($this->never()) + ->method('getForkDescription'); + $code->expects($this->never()) + ->method('getForkDescriptionHtml'); + $code->expects($this->never()) + ->method('getPullRequestDescription'); + $code->expects($this->never()) + ->method('getPullRequestDescriptionHtml'); + $code->expects($this->never()) + ->method('getPushDescription'); + $code->expects($this->never()) + ->method('getPushDescriptionHtml'); + + $reflectedCode = new ReflectionClass(Code::class); + + $reflectedGetDescriptionsMethod = $reflectedCode->getMethod('getDescriptions'); + $reflectedGetDescriptionsMethod->setAccessible(true); + + $result = $reflectedGetDescriptionsMethod->invokeArgs($code, [ + $type, + $metadata, + ]); + + $this->assertEquals([ $description, $descriptionHtml ], $result); + } + + public function testGetDescriptionsHandlesForkEvents() + { + $type = 'ForkEvent'; + $metadata = new stdclass; + + $description = 'some description'; + $descriptionHtml = '

some description

'; + + $code = $this->getMockBuilder(Code::class) + ->disableOriginalConstructor() + ->setMethods([ + 'getCreateDescription', + 'getCreateDescriptionHtml', + 'getForkDescription', + 'getForkDescriptionHtml', + 'getPullRequestDescription', + 'getPullRequestDescriptionHtml', + 'getPushDescription', + 'getPushDescriptionHtml', + ]) + ->getMock(); + $code->expects($this->never()) + ->method('getCreateDescription'); + $code->expects($this->never()) + ->method('getCreateDescriptionHtml'); + $code->expects($this->once()) + ->method('getForkDescription') + ->with($metadata) + ->willReturn($description); + $code->expects($this->once()) + ->method('getForkDescriptionHtml') + ->with($metadata) + ->willReturn($descriptionHtml); + $code->expects($this->never()) + ->method('getPullRequestDescription'); + $code->expects($this->never()) + ->method('getPullRequestDescriptionHtml'); + $code->expects($this->never()) + ->method('getPushDescription'); + $code->expects($this->never()) + ->method('getPushDescriptionHtml'); + + $reflectedCode = new ReflectionClass(Code::class); + + $reflectedGetDescriptionsMethod = $reflectedCode->getMethod('getDescriptions'); + $reflectedGetDescriptionsMethod->setAccessible(true); + + $result = $reflectedGetDescriptionsMethod->invokeArgs($code, [ + $type, + $metadata, + ]); + + $this->assertEquals([ $description, $descriptionHtml ], $result); + } + + public function testGetDescriptionsHandlesPullRequestEvents() + { + $type = 'PullRequestEvent'; + $metadata = new stdclass; + + $description = 'some description'; + $descriptionHtml = '

some description

'; + + $code = $this->getMockBuilder(Code::class) + ->disableOriginalConstructor() + ->setMethods([ + 'getCreateDescription', + 'getCreateDescriptionHtml', + 'getForkDescription', + 'getForkDescriptionHtml', + 'getPullRequestDescription', + 'getPullRequestDescriptionHtml', + 'getPushDescription', + 'getPushDescriptionHtml', + ]) + ->getMock(); + $code->expects($this->never()) + ->method('getCreateDescription'); + $code->expects($this->never()) + ->method('getCreateDescriptionHtml'); + $code->expects($this->never()) + ->method('getForkDescription'); + $code->expects($this->never()) + ->method('getForkDescriptionHtml'); + $code->expects($this->once()) + ->method('getPullRequestDescription') + ->with($metadata) + ->willReturn($description); + $code->expects($this->once()) + ->method('getPullRequestDescriptionHtml') + ->with($metadata) + ->willReturn($descriptionHtml); + $code->expects($this->never()) + ->method('getPushDescription'); + $code->expects($this->never()) + ->method('getPushDescriptionHtml'); + + $reflectedCode = new ReflectionClass(Code::class); + + $reflectedGetDescriptionsMethod = $reflectedCode->getMethod('getDescriptions'); + $reflectedGetDescriptionsMethod->setAccessible(true); + + $result = $reflectedGetDescriptionsMethod->invokeArgs($code, [ + $type, + $metadata, + ]); + + $this->assertEquals([ $description, $descriptionHtml ], $result); + } + + public function testGetDescriptionsHandlesPushEvents() + { + $type = 'PushEvent'; + $metadata = new stdclass; + + $description = 'some description'; + $descriptionHtml = '

some description

'; + + $code = $this->getMockBuilder(Code::class) + ->disableOriginalConstructor() + ->setMethods([ + 'getCreateDescription', + 'getCreateDescriptionHtml', + 'getForkDescription', + 'getForkDescriptionHtml', + 'getPullRequestDescription', + 'getPullRequestDescriptionHtml', + 'getPushDescription', + 'getPushDescriptionHtml', + ]) + ->getMock(); + $code->expects($this->never()) + ->method('getCreateDescription'); + $code->expects($this->never()) + ->method('getCreateDescriptionHtml'); + $code->expects($this->never()) + ->method('getForkDescription'); + $code->expects($this->never()) + ->method('getForkDescriptionHtml'); + $code->expects($this->never()) + ->method('getPullRequestDescription'); + $code->expects($this->never()) + ->method('getPullRequestDescriptionHtml'); + $code->expects($this->once()) + ->method('getPushDescription') + ->with($metadata) + ->willReturn($description); + $code->expects($this->once()) + ->method('getPushDescriptionHtml') + ->with($metadata) + ->willReturn($descriptionHtml); + + $reflectedCode = new ReflectionClass(Code::class); + + $reflectedGetDescriptionsMethod = $reflectedCode->getMethod('getDescriptions'); + $reflectedGetDescriptionsMethod->setAccessible(true); + + $result = $reflectedGetDescriptionsMethod->invokeArgs($code, [ + $type, + $metadata, + ]); + + $this->assertEquals([ $description, $descriptionHtml ], $result); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Skipping an event type: some type + */ + public function testGetDescriptionsThrowsExceptionForUnknownEvents() + { + $code = $this->getMockBuilder(Code::class) + ->disableOriginalConstructor() + ->setMethods([ + 'getCreateDescription', + 'getCreateDescriptionHtml', + 'getForkDescription', + 'getForkDescriptionHtml', + 'getPullRequestDescription', + 'getPullRequestDescriptionHtml', + 'getPushDescription', + 'getPushDescriptionHtml', + ]) + ->getMock(); + $code->expects($this->never()) + ->method('getCreateDescription'); + $code->expects($this->never()) + ->method('getCreateDescriptionHtml'); + $code->expects($this->never()) + ->method('getForkDescription'); + $code->expects($this->never()) + ->method('getForkDescriptionHtml'); + $code->expects($this->never()) + ->method('getPullRequestDescription'); + $code->expects($this->never()) + ->method('getPullRequestDescriptionHtml'); + $code->expects($this->never()) + ->method('getPushDescription'); + $code->expects($this->never()) + ->method('getPushDescriptionHtml'); + + $reflectedCode = new ReflectionClass(Code::class); + + $reflectedGetDescriptionsMethod = $reflectedCode->getMethod('getDescriptions'); + $reflectedGetDescriptionsMethod->setAccessible(true); + + $reflectedGetDescriptionsMethod->invokeArgs($code, [ + 'some type', + new stdclass, + ]); + } + public function testGetCreateDescriptionFormatsDescriptionForBranch() { $metadata = (object) [