CascadingDev/tests/test_workflow.py

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"}