fix reporting

This commit is contained in:
William Kray
2025-09-09 16:20:43 -07:00
parent 87e02b7ea6
commit 7b2a60d773
6 changed files with 344 additions and 119 deletions
+124
View File
@@ -0,0 +1,124 @@
"""Simple tests for space creation functionality."""
import pytest
from unittest.mock import Mock, AsyncMock
class TestSpaceCreationSimple:
"""Simple tests for space creation functionality."""
def test_get_space_roomlist_empty_parent_room(self):
"""Test get_space_roomlist with empty parent room."""
from community.bot import CommunityBot
# Create a mock bot instance
bot = Mock(spec=CommunityBot)
bot.config = {"parent_room": ""}
bot.log = Mock()
bot.client = Mock()
# Mock the get_space_roomlist method
bot.get_space_roomlist = AsyncMock(return_value=[])
# Test that empty parent room returns empty list
import asyncio
result = asyncio.run(bot.get_space_roomlist())
assert result == []
def test_get_space_roomlist_with_parent_room(self):
"""Test get_space_roomlist with configured parent room."""
from community.bot import CommunityBot
# Create a mock bot instance
bot = Mock(spec=CommunityBot)
bot.config = {"parent_room": "!space:example.com"}
bot.log = Mock()
bot.client = Mock()
bot.client.get_state = AsyncMock(return_value=[])
# Mock the get_space_roomlist method
bot.get_space_roomlist = AsyncMock(return_value=["!room1:example.com", "!room2:example.com"])
# Test that configured parent room returns room list
import asyncio
result = asyncio.run(bot.get_space_roomlist())
assert result == ["!room1:example.com", "!room2:example.com"]
def test_space_creation_parameters(self):
"""Test that space creation parameters are correct."""
# Test that the space creation logic uses correct parameters
creation_content = {
"type": "m.space",
"m.federate": True,
"m.room.history_visibility": "joined"
}
# Verify the creation content has the correct space type
assert creation_content["type"] == "m.space"
assert creation_content["m.federate"] is True
assert creation_content["m.room.history_visibility"] == "joined"
def test_power_level_verification_modern_room(self):
"""Test power level verification for modern room versions."""
# Test that modern room version verification logic is correct
room_version = "12"
is_modern = int(room_version) >= 12
assert is_modern is True
# For modern rooms, creators have unlimited power and don't appear in power levels
power_levels = {"users": {}}
bot_power_level = power_levels.get("users", {}).get("@bot:example.com")
# Bot should not have a power level in modern rooms (unlimited power)
assert bot_power_level is None
def test_power_level_verification_legacy_room(self):
"""Test power level verification for legacy room versions."""
# Test that legacy room version verification logic is correct
room_version = "1"
is_modern = int(room_version) >= 12
assert is_modern is False
# For legacy rooms, bot should have power level 1000
power_levels = {"users": {"@bot:example.com": 1000}}
bot_power_level = power_levels.get("users", {}).get("@bot:example.com")
assert bot_power_level == 1000
def test_space_type_verification(self):
"""Test space type verification logic."""
# Mock state events
state_events = [
Mock(type="m.room.create", content={"type": "m.space"}),
Mock(type="m.room.power_levels", content={})
]
# Find the room create event
space_type_set = False
for event in state_events:
if event.type == "m.room.create":
space_type = event.content.get("type")
space_type_set = (space_type == "m.space")
break
assert space_type_set is True
def test_space_type_not_set(self):
"""Test space type verification when type is not set."""
# Mock state events with wrong type
state_events = [
Mock(type="m.room.create", content={"type": "m.room"}),
Mock(type="m.room.power_levels", content={})
]
# Find the room create event
space_type_set = False
for event in state_events:
if event.type == "m.room.create":
space_type = event.content.get("type")
space_type_set = (space_type == "m.space")
break
assert space_type_set is False