78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
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
|