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