Skip to content

Commit

Permalink
Final unit tests around event handler
Browse files Browse the repository at this point in the history
  • Loading branch information
jacobemerick committed Oct 18, 2017
1 parent 74508f2 commit b9bea82
Showing 1 changed file with 267 additions and 0 deletions.
267 changes: 267 additions & 0 deletions tests/unit/Cron/Process/CodeTest.php
Expand Up @@ -616,6 +616,273 @@ public function testFetchCodeEventsReturnsItems()
$this->assertEquals($events, $result);
}

public function testGetDescriptionsHandlesCreateEvents()
{
$type = 'CreateEvent';
$metadata = new stdclass;

$description = 'some description';
$descriptionHtml = '<p>some description</p>';

$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 = '<p>some description</p>';

$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 = '<p>some description</p>';

$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 = '<p>some description</p>';

$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) [
Expand Down

0 comments on commit b9bea82

Please sign in to comment.