83 lines
2.7 KiB
Python
83 lines
2.7 KiB
Python
import pytest
|
|
from pathlib import Path
|
|
from automation.workflow import parse_votes, _extract_vote_value
|
|
|
|
def test_extract_vote_value():
|
|
assert _extract_vote_value("READY") == "READY"
|
|
assert _extract_vote_value("CHANGES ") == "CHANGES"
|
|
assert _extract_vote_value(" REJECT") == "REJECT"
|
|
assert _extract_vote_value("INVALID") is None
|
|
assert _extract_vote_value("Some text READY") is None
|
|
assert _extract_vote_value("READY ") == "READY"
|
|
assert _extract_vote_value("No vote here") is None
|
|
|
|
def test_parse_votes_single_participant_single_vote(tmp_path):
|
|
discussion_content = """
|
|
- Participant A: Initial comment.
|
|
- Participant A: VOTE: READY
|
|
"""
|
|
discussion_file = tmp_path / "discussion.md"
|
|
discussion_file.write_text(discussion_content)
|
|
|
|
votes = parse_votes(discussion_file)
|
|
assert votes == {"Participant A": "READY"}
|
|
|
|
def test_parse_votes_single_participant_multiple_votes(tmp_path):
|
|
discussion_content = """
|
|
- Participant B: First comment. VOTE: CHANGES
|
|
- Participant B: Second comment.
|
|
- Participant B: VOTE: READY
|
|
"""
|
|
discussion_file = tmp_path / "discussion.md"
|
|
discussion_file.write_text(discussion_content)
|
|
|
|
votes = parse_votes(discussion_file)
|
|
assert votes == {"Participant B": "READY"}
|
|
|
|
def test_parse_votes_multiple_participants(tmp_path):
|
|
discussion_content = """
|
|
- Participant C: Comment one. VOTE: READY
|
|
- Participant D: Comment two. VOTE: CHANGES
|
|
- Participant C: Another comment.
|
|
- Participant D: Final thoughts. VOTE: READY
|
|
"""
|
|
discussion_file = tmp_path / "discussion.md"
|
|
discussion_file.write_text(discussion_content)
|
|
|
|
votes = parse_votes(discussion_file)
|
|
assert votes == {"Participant C": "READY", "Participant D": "READY"}
|
|
|
|
def test_parse_votes_malformed_lines(tmp_path):
|
|
discussion_content = """
|
|
- Participant E: VOTE: READY
|
|
- Participant F: VOTE: INVALID_VOTE
|
|
- Participant E: Another comment. VOTE: CHANGES
|
|
- Participant F: Just a comment.
|
|
"""
|
|
discussion_file = tmp_path / "discussion.md"
|
|
discussion_file.write_text(discussion_content)
|
|
|
|
votes = parse_votes(discussion_file)
|
|
assert votes == {"Participant E": "CHANGES"} # Participant F's vote is invalid and ignored
|
|
|
|
def test_parse_votes_mixed_content(tmp_path):
|
|
discussion_content = """
|
|
# Discussion Title
|
|
|
|
Some introductory text.
|
|
|
|
- Participant G: First point.
|
|
- Participant G: Second point. VOTE: READY
|
|
|
|
- Participant H: Question?
|
|
- Participant H: VOTE: CHANGES
|
|
|
|
- Participant G: Response to H. VOTE: REJECT
|
|
|
|
"""
|
|
discussion_file = tmp_path / "discussion.md"
|
|
discussion_file.write_text(discussion_content)
|
|
|
|
votes = parse_votes(discussion_file)
|
|
assert votes == {"Participant G": "REJECT", "Participant H": "CHANGES"}
|