import os import tempfile from aider_gitea.seen_issues_db import SeenIssuesDB class TestSeenIssuesDBPRInfo: def setup_method(self): # Create a temporary database file self.db_fd, self.db_path = tempfile.mkstemp() self.db = SeenIssuesDB(self.db_path) # Test data self.issue_text = 'Test issue title\nTest issue description' self.issue_number = '123' self.pr_number = '456' self.pr_url = 'https://gitea.example.com/owner/repo/pulls/456' def teardown_method(self): # Close and remove the temporary database self.db.conn.close() os.close(self.db_fd) os.unlink(self.db_path) def test_mark_as_seen_with_pr_info(self): # Mark an issue as seen with PR info self.db.mark_as_seen( self.issue_text, issue_number=self.issue_number, pr_number=self.pr_number, pr_url=self.pr_url, ) # Verify the issue is marked as seen assert self.db.has_seen(self.issue_text) # Verify PR info is stored correctly pr_info = self.db.get_pr_info(self.issue_text) assert pr_info is not None assert pr_info[0] == self.pr_number assert pr_info[1] == self.pr_url def test_update_pr_info(self): # First mark the issue as seen without PR info self.db.mark_as_seen(self.issue_text, issue_number=self.issue_number) # Verify no PR info is available assert self.db.get_pr_info(self.issue_text) == (None, None) # Update with PR info updated = self.db.update_pr_info(self.issue_text, self.pr_number, self.pr_url) # Verify update was successful assert updated # Verify PR info is now available pr_info = self.db.get_pr_info(self.issue_text) assert pr_info[0] == self.pr_number assert pr_info[1] == self.pr_url def test_update_nonexistent_issue(self): # Try to update PR info for an issue that doesn't exist updated = self.db.update_pr_info( 'Nonexistent issue', self.pr_number, self.pr_url, ) # Verify update failed assert not updated def test_get_pr_info_nonexistent(self): # Try to get PR info for an issue that doesn't exist pr_info = self.db.get_pr_info('Nonexistent issue') # Verify no PR info is available assert pr_info is None