"""Integration tests for Member database model.""" from datetime import datetime import pytest from src.models.member import Member class TestMemberModel: """Tests for Member SQLAlchemy model.""" async def test_create_member_with_minimal_data(self, async_session): """Test creating a member with only firstName (minimal required data).""" member = Member(first_name="Alice") async_session.add(member) await async_session.commit() await async_session.refresh(member) assert member.id is not None assert member.first_name == "Alice" assert member.last_name is None assert member.street is None assert member.apartment_number is None assert member.zip is None assert member.city is None assert member.country is None assert member.email is None assert member.phone is None assert isinstance(member.created_at, datetime) assert isinstance(member.updated_at, datetime) async def test_create_member_with_complete_data(self, async_session): """Test creating a member with all fields populated.""" member = Member( first_name="Bob", last_name="Johnson", street="123 Main St", apartment_number="4B", zip="12345", city="Springfield", country="USA", email="bob@example.com", phone="+14155551234", ) async_session.add(member) await async_session.commit() await async_session.refresh(member) assert member.id is not None assert member.first_name == "Bob" assert member.last_name == "Johnson" assert member.street == "123 Main St" assert member.apartment_number == "4B" assert member.zip == "12345" assert member.city == "Springfield" assert member.country == "USA" assert member.email == "bob@example.com" assert member.phone == "+14155551234" async def test_member_timestamps(self, async_session): """Test that created_at and updated_at are set correctly.""" member = Member(first_name="Charlie") async_session.add(member) await async_session.commit() await async_session.refresh(member) assert isinstance(member.created_at, datetime) assert isinstance(member.updated_at, datetime) # For new members, created_at should equal updated_at assert member.created_at == member.updated_at async def test_member_repr(self, async_session): """Test the __repr__ method of Member.""" member = Member(first_name="David", last_name="Smith") async_session.add(member) await async_session.commit() await async_session.refresh(member) repr_str = repr(member) assert "Member" in repr_str assert f"id={member.id}" in repr_str assert "type=INDIVIDUAL" in repr_str assert "name='David Smith'" in repr_str