Skip to content

Commit

Permalink
Merge pull request #6425 from nanaya/changelog-parsing
Browse files Browse the repository at this point in the history
Update changelog webhook category parser
  • Loading branch information
notbakaneko committed Aug 4, 2020
2 parents 3065ac7 + d7a229b commit 3845838
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 2 deletions.
33 changes: 31 additions & 2 deletions app/Models/ChangelogEntry.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,20 @@ public static function guessCategory($data)
foreach ($data['pull_request']['labels'] as $label) {
$name = $label['name'];

if (!in_array(strtolower($name), $ignored, true)) {
return ucwords($name);
if (in_array(strtolower($name), $ignored, true)) {
continue;
}

$separatorPos = strpos($name, ':');
if ($separatorPos !== false) {
$name = substr($name, $separatorPos + 1);
}

if (strpos($name, ' ') === false) {
$name = str_replace('-', ' ', $name);
}

return ucwords($name);
}
}

Expand All @@ -108,6 +119,7 @@ public static function importFromGithub($data)
'created_at' => Carbon::parse($data['pull_request']['merged_at']),
'github_pull_request_id' => $data['pull_request']['number'],
'message' => $data['pull_request']['body'],
'private' => static::isPrivate($data),
'title' => $data['pull_request']['title'],
'type' => static::guessType($data),
]);
Expand All @@ -128,6 +140,23 @@ public static function importFromGithub($data)
return $entry;
}

public static function isPrivate($data)
{
static $privateCategories = [
'dependencies',
];

foreach ($data['pull_request']['labels'] as $label) {
$name = $label['name'];

if (in_array(strtolower($name), $privateCategories, true)) {
return true;
}
}

return false;
}

public static function placeholder()
{
return new static([
Expand Down
83 changes: 83 additions & 0 deletions tests/Models/ChangelogEntryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,87 @@ public function testConvertLegacyChangelogWithMessage()
$this->assertSame($message, $converted->title);
$this->assertNull($converted->messageHTML());
}

public function testGuessCategoryCapitalise()
{
$data = [
'repository' => ['full_name' => ''],
'pull_request' => [
'labels' => [
['name' => 'forum'],
],
],
];

$this->assertSame('Forum', ChangelogEntry::guessCategory($data));
}

public function testGuessCategoryDashToSpace()
{
$data = [
'repository' => ['full_name' => ''],
'pull_request' => [
'labels' => [
['name' => 'beatmapset-discussion'],
],
],
];

$this->assertSame('Beatmapset Discussion', ChangelogEntry::guessCategory($data));
}

public function testGuessCategoryMixedDashAndSpaceNoConversion()
{
$data = [
'repository' => ['full_name' => ''],
'pull_request' => [
'labels' => [
['name' => 'beatmapset - discussion'],
],
],
];

$this->assertSame('Beatmapset - Discussion', ChangelogEntry::guessCategory($data));
}

public function testGuessCategoryPrefixRemoval()
{
$data = [
'repository' => ['full_name' => ''],
'pull_request' => [
'labels' => [
['name' => 'area:forum'],
],
],
];

$this->assertSame('Forum', ChangelogEntry::guessCategory($data));
}

public function testIsPrivate()
{
$data = [
'repository' => ['full_name' => ''],
'pull_request' => [
'labels' => [
['name' => 'javascript'],
['name' => 'area:forum'],
],
],
];

$this->assertFalse(ChangelogEntry::isPrivate($data));

$data = [
'repository' => ['full_name' => ''],
'pull_request' => [
'labels' => [
['name' => 'javascript'],
['name' => 'dependencies'],
],
],
];

$this->assertTrue(ChangelogEntry::isPrivate($data));
}
}

0 comments on commit 3845838

Please sign in to comment.