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)); } 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' => 'Bug']]; $this->assertTrue($this->issue_validation_controller->search_requested_by($labels)); } public function testLabelDoesNotExist() { $labels = [['name' => 'Bug'], ['name' => 'Feature']]; $this->assertFalse($this->issue_validation_controller->search_requested_by($labels)); } public function testEmptyLabels() { $labels = []; $this->assertFalse($this->issue_validation_controller->search_requested_by($labels)); } }