Skip to content

Commit

Permalink
Adds more tests around different descriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
jacobemerick committed Oct 18, 2017
1 parent 0b9a9f1 commit 74508f2
Show file tree
Hide file tree
Showing 2 changed files with 307 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/Cron/Process/Code.php
Expand Up @@ -190,7 +190,7 @@ protected function getCreateDescriptionHtml(stdclass $metadata)
protected function getForkDescription(stdclass $metadata)
{
return sprintf(
'Forked %s to %s',
'Forked %s to %s.',
$metadata->repo->name,
$metadata->payload->forkee->full_name
);
Expand Down Expand Up @@ -225,7 +225,7 @@ protected function getForkDescriptionHtml(stdclass $metadata)
protected function getPullRequestDescription(stdclass $metadata)
{
return sprintf(
'%s a pull request at %s',
'%s a pull request at %s.',
ucwords($metadata->payload->action),
$metadata->repo->name
);
Expand Down Expand Up @@ -276,7 +276,6 @@ protected function getPushDescriptionHtml(stdclass $metadata)
$description = '';
$description .= sprintf(
"<p>Pushed some code at <a href=\"%s\" target=\"_blank\" title=\"Github | %s\">%s</a>.</p>",
$metadata->payload->ref,
"https://github.com/{$metadata->repo->name}",
$metadata->repo->name,
$metadata->repo->name
Expand All @@ -287,10 +286,11 @@ protected function getPushDescriptionHtml(stdclass $metadata)
$commitMessage = strtok($commitMessage, "\n");
if (strlen($commitMessage) > 72) {
$commitMessage = wordwrap($commitMessage, 65);
$commitMessage = strtok($commitMessage, "\n");
$commitMessage .= '&hellip;';
}
$description .= sprintf(
"<li><a href=\"%s\" target=\"_blank\" title=\"Github | %s\">%s</a> %s.</li>",
"<li><a href=\"%s\" target=\"_blank\" title=\"Github | %s\">%s</a> %s</li>",
"https://github.com/{$metadata->repo->name}/commit/{$commit->sha}",
substr($commit->sha, 0, 7),
substr($commit->sha, 0, 7),
Expand Down
303 changes: 303 additions & 0 deletions tests/unit/Cron/Process/CodeTest.php
Expand Up @@ -862,4 +862,307 @@ public function testGetCreateDescriptionHtmlThrowsExceptionForBadRefType()
$metadata,
]);
}

public function testGetForkDescriptionFormatsDescription()
{
$metadata = (object) [
'repo' => (object) [
'name' => 'some name',
],
'payload' => (object) [
'forkee' => (object) [
'full_name' => 'forked name',
],
],
];

$expectedDescription = 'Forked some name to forked name.';

$code = $this->getMockBuilder(Code::class)
->disableOriginalConstructor()
->setMethods()
->getMock();

$reflectedCode = new ReflectionClass(Code::class);

$reflectedGetForkDescriptionMethod = $reflectedCode->getMethod('getForkDescription');
$reflectedGetForkDescriptionMethod->setAccessible(true);

$result = $reflectedGetForkDescriptionMethod->invokeArgs($code, [
$metadata,
]);

$this->assertEquals($expectedDescription, $result);
}

public function testGetForkDescriptionHtmlFormatsDescription()
{
$metadata = (object) [
'repo' => (object) [
'name' => 'some name',
],
'payload' => (object) [
'forkee' => (object) [
'full_name' => 'forked name',
'html_url' => 'http://domain.com/url',
],
],
];

$expectedDescription = '';
$expectedDescription .= '<p>Forked <a href="https://github.com/some name" target="_blank" title="Github | some name">some name</a> ';
$expectedDescription .= 'to <a href="http://domain.com/url" target="_blank" title="Github | forked name">forked name</a>.';

$code = $this->getMockBuilder(Code::class)
->disableOriginalConstructor()
->setMethods()
->getMock();

$reflectedCode = new ReflectionClass(Code::class);

$reflectedGetForkDescriptionHtmlMethod = $reflectedCode->getMethod('getForkDescriptionHtml');
$reflectedGetForkDescriptionHtmlMethod->setAccessible(true);

$result = $reflectedGetForkDescriptionHtmlMethod->invokeArgs($code, [
$metadata,
]);

$this->assertEquals($expectedDescription, $result);
}

public function testGetPullRequestDescriptionFormatsDescription()
{
$metadata = (object) [
'repo' => (object) [
'name' => 'some name',
],
'payload' => (object) [
'action' => 'opened',
],
];

$expectedDescription = 'Opened a pull request at some name.';

$code = $this->getMockBuilder(Code::class)
->disableOriginalConstructor()
->setMethods()
->getMock();

$reflectedCode = new ReflectionClass(Code::class);

$reflectedGetPullRequestDescriptionMethod = $reflectedCode->getMethod('getPullRequestDescription');
$reflectedGetPullRequestDescriptionMethod->setAccessible(true);

$result = $reflectedGetPullRequestDescriptionMethod->invokeArgs($code, [
$metadata,
]);

$this->assertEquals($expectedDescription, $result);
}

public function testGetPullRequestDescriptionHtmlFormatsDescription()
{
$metadata = (object) [
'repo' => (object) [
'name' => 'some name',
],
'payload' => (object) [
'action' => 'opened',
'number' => 1,
'pull_request' => (object) [
'html_url' => 'http://domain.com/url',
],
],
];

$expectedDescription = '';
$expectedDescription .= '<p>Opened pull request <a href="http://domain.com/url" target="_blank" title="Github | some name PR 1">1</a> ';
$expectedDescription .= 'at <a href="https://github.com/some name" target="_blank" title="Github | some name">some name</a>.</p>';

$code = $this->getMockBuilder(Code::class)
->disableOriginalConstructor()
->setMethods()
->getMock();

$reflectedCode = new ReflectionClass(Code::class);

$reflectedGetPullRequestDescriptionHtmlMethod = $reflectedCode->getMethod('getPullRequestDescriptionHtml');
$reflectedGetPullRequestDescriptionHtmlMethod->setAccessible(true);

$result = $reflectedGetPullRequestDescriptionHtmlMethod->invokeArgs($code, [
$metadata,
]);

$this->assertEquals($expectedDescription, $result);
}

public function testGetPushDescriptionFormatsDescription()
{
$metadata = (object) [
'repo' => (object) [
'name' => 'some name',
],
];

$expectedDescription = 'Pushed some code at some name.';

$code = $this->getMockBuilder(Code::class)
->disableOriginalConstructor()
->setMethods()
->getMock();

$reflectedCode = new ReflectionClass(Code::class);

$reflectedGetPushDescriptionMethod = $reflectedCode->getMethod('getPushDescription');
$reflectedGetPushDescriptionMethod->setAccessible(true);

$result = $reflectedGetPushDescriptionMethod->invokeArgs($code, [
$metadata,
]);

$this->assertEquals($expectedDescription, $result);
}

public function testGetPushDescriptionHtmlFormatsDescription()
{
$metadata = (object) [
'repo' => (object) [
'name' => 'some name',
],
'payload' => (object) [
'commits' => [],
],
];

$expectedDescription = '';
$expectedDescription .= '<p>Pushed some code at <a href="https://github.com/some name" target="_blank" title="Github | some name">some name</a>.</p>';
$expectedDescription .= '<ul></ul>';

$code = $this->getMockBuilder(Code::class)
->disableOriginalConstructor()
->setMethods()
->getMock();

$reflectedCode = new ReflectionClass(Code::class);

$reflectedGetPushDescriptionHtmlMethod = $reflectedCode->getMethod('getPushDescriptionHtml');
$reflectedGetPushDescriptionHtmlMethod->setAccessible(true);

$result = $reflectedGetPushDescriptionHtmlMethod->invokeArgs($code, [
$metadata,
]);

$this->assertEquals($expectedDescription, $result);
}

public function testGetPushDescriptionHtmlFormatsDescriptionWithCommits()
{
$metadata = (object) [
'repo' => (object) [
'name' => 'some name',
],
'payload' => (object) [
'commits' => [
(object) [
'message' => 'some commit',
'sha' => 'sha123',
],
],
],
];

$expectedDescription = '';
$expectedDescription .= '<p>Pushed some code at <a href="https://github.com/some name" target="_blank" title="Github | some name">some name</a>.</p>';
$expectedDescription .= '<ul><li><a href="https://github.com/some name/commit/sha123" target="_blank" title="Github | sha123">sha123</a> some commit</li></ul>';

$code = $this->getMockBuilder(Code::class)
->disableOriginalConstructor()
->setMethods()
->getMock();

$reflectedCode = new ReflectionClass(Code::class);

$reflectedGetPushDescriptionHtmlMethod = $reflectedCode->getMethod('getPushDescriptionHtml');
$reflectedGetPushDescriptionHtmlMethod->setAccessible(true);

$result = $reflectedGetPushDescriptionHtmlMethod->invokeArgs($code, [
$metadata,
]);

$this->assertEquals($expectedDescription, $result);
}

public function testGetPushDescriptionHtmlFormatsDescriptionHandlesMultilineCommits()
{
$metadata = (object) [
'repo' => (object) [
'name' => 'some name',
],
'payload' => (object) [
'commits' => [
(object) [
'message' => "some commit\nanother line",
'sha' => 'sha123',
],
],
],
];

$expectedDescription = '';
$expectedDescription .= '<p>Pushed some code at <a href="https://github.com/some name" target="_blank" title="Github | some name">some name</a>.</p>';
$expectedDescription .= '<ul><li><a href="https://github.com/some name/commit/sha123" target="_blank" title="Github | sha123">sha123</a> some commit</li></ul>';

$code = $this->getMockBuilder(Code::class)
->disableOriginalConstructor()
->setMethods()
->getMock();

$reflectedCode = new ReflectionClass(Code::class);

$reflectedGetPushDescriptionHtmlMethod = $reflectedCode->getMethod('getPushDescriptionHtml');
$reflectedGetPushDescriptionHtmlMethod->setAccessible(true);

$result = $reflectedGetPushDescriptionHtmlMethod->invokeArgs($code, [
$metadata,
]);

$this->assertEquals($expectedDescription, $result);
}

public function testGetPushDescriptionHtmlFormatsDescriptionHandlesLongCommitMessages()
{
$metadata = (object) [
'repo' => (object) [
'name' => 'some name',
],
'payload' => (object) [
'commits' => [
(object) [
'message' => 'some commit with a long and not terribly relevant commit message that keeps going and going',
'sha' => 'sha123',
],
],
],
];

$expectedDescription = '';
$expectedDescription .= '<p>Pushed some code at <a href="https://github.com/some name" target="_blank" title="Github | some name">some name</a>.</p>';
$expectedDescription .= '<ul><li><a href="https://github.com/some name/commit/sha123" target="_blank" title="Github | sha123">sha123</a> some commit with a long and not terribly relevant commit message&hellip;</li></ul>';

$code = $this->getMockBuilder(Code::class)
->disableOriginalConstructor()
->setMethods()
->getMock();

$reflectedCode = new ReflectionClass(Code::class);

$reflectedGetPushDescriptionHtmlMethod = $reflectedCode->getMethod('getPushDescriptionHtml');
$reflectedGetPushDescriptionHtmlMethod->setAccessible(true);

$result = $reflectedGetPushDescriptionHtmlMethod->invokeArgs($code, [
$metadata,
]);

$this->assertEquals($expectedDescription, $result);
}
}

0 comments on commit 74508f2

Please sign in to comment.