gitea_issues_exporter/tests/Http/Controllers/IssueValidationControllerTe...

114 lines
4.0 KiB
PHP
Raw Normal View History

2024-07-22 14:17:00 +02:00
<?php
2024-08-14 13:52:30 +02:00
namespace Tests\Controllers;
2024-07-22 14:17:00 +02:00
use App\Http\Controllers\IssueValidationController;
2024-08-14 13:52:30 +02:00
use Exception;
use Tests\TestCase;
2024-07-22 14:17:00 +02:00
class IssueValidationControllerTest extends TestCase
{
protected function setUp(): void
2024-07-22 14:17:00 +02:00
{
parent::setUp();
2024-08-14 13:52:30 +02:00
$this->issue_validation_controller = new IssueValidationController();
}
public function testValidDateConversion()
{
$this->assertEquals('2024-08-14 00:00:00', $this->issue_validation_controller->date_to_datetime('2024/08/14'));
$this->assertEquals('2024-12-31 00:00:00', $this->issue_validation_controller->date_to_datetime('2024/12/31'));
}
public function testInvalidDateFormat()
{
$this->expectException(Exception::class);
$this->issue_validation_controller->date_to_datetime('invalid-date');
}
public function testIssueIsBilled()
{
$labels = [['name' => 'RequestBy: User1']];
$issue_time = [['time' => 3600]]; // 1 hour
$this->assertTrue($this->issue_validation_controller->check_issue_is_billed($labels, $issue_time));
}
public function testIssueIsNotBilledDueToNoTime()
{
$labels = [['name' => 'RequestBy: User1']];
$issue_time = [['time' => 0]];
$this->assertFalse($this->issue_validation_controller->check_issue_is_billed($labels, $issue_time));
}
public function testIssueIsNotBilledDueToNoLabel()
{
$labels = [['name' => 'Bug']];
$issue_time = [['time' => 3600]];
$this->assertFalse($this->issue_validation_controller->check_issue_is_billed($labels, $issue_time));
}
public function testTotalTimeCalculation()
{
$issue_time = [['time' => 10], ['time' => 20], ['time' => 30]];
$this->assertEquals(60, $this->issue_validation_controller->get_issue_total_time($issue_time));
}
public function testEmptyTimeArray()
{
$issue_time = [];
$this->assertEquals(0, $this->issue_validation_controller->get_issue_total_time($issue_time));
}
public function testSingleTimeEntry()
{
$issue_time = [['time' => 15]];
$this->assertEquals(15, $this->issue_validation_controller->get_issue_total_time($issue_time));
}
public function testIssueWithinDateRangeAndBilled()
{
$issue = ['closed_at' => '2024-08-15T10:00:00Z', 'labels' => [['name' => 'RequestBy: User1']]];
$issue_time = [['time' => 3600]]; // 1 hour
$this->assertTrue($this->issue_validation_controller->handle_single_issue('2024-08-14', '2024-08-16', $issue, $issue_time));
}
public function testIssueOutsideDateRange()
{
$issue = ['closed_at' => '2024-08-13T10:00:00Z', 'labels' => [['name' => 'RequestBy: User1']]];
$issue_time = [['time' => 3600]];
$this->assertFalse($this->issue_validation_controller->handle_single_issue('2024-08-14', '2024-08-16', $issue, $issue_time));
}
2024-07-22 14:17:00 +02:00
2024-08-14 13:52:30 +02:00
public function testIssueNotBilled()
{
$issue = ['closed_at' => '2024-08-15T10:00:00Z', 'labels' => [['name' => 'Bug']]];
$issue_time = [['time' => 0]];
$this->assertFalse($this->issue_validation_controller->handle_single_issue('2024-08-14', '2024-08-16', $issue, $issue_time));
}
public function testLabelExists()
{
$labels = [['name' => 'RequestBy: User1'], ['name' => 'Piru']];
$this->assertTrue($this->issue_validation_controller->search_requested_by_and_kind_bug($labels));
2024-08-14 13:52:30 +02:00
}
public function testLabelDoesNotExist()
{
$labels = [['name' => 'Bug'], ['name' => 'Feature']];
$this->assertFalse($this->issue_validation_controller->search_requested_by_and_kind_bug($labels));
2024-08-14 13:52:30 +02:00
}
public function testEmptyLabels()
{
$labels = [];
$this->assertFalse($this->issue_validation_controller->search_requested_by_and_kind_bug($labels));
}
public function testKindBugExists()
{
$labels = [['name' => 'RequestBy: User1'], ['name' => 'Bug']];
$this->assertFalse($this->issue_validation_controller->search_requested_by_and_kind_bug($labels));
2024-07-22 14:17:00 +02:00
}
2024-07-22 14:17:00 +02:00
}