@@ -71,7 +71,7 @@ async def test_enrich_members_with_user_details_success(self):
7171
7272 @pytest .mark .asyncio
7373 async def test_enrich_members_empty_list (self ):
74- """Test enrichment with empty members list"""
74+ """Test enrichment with empty members list - covers line 35 """
7575 mock_db = MagicMock ()
7676
7777 with patch .object (self .service , "get_db" , return_value = mock_db ):
@@ -81,6 +81,55 @@ async def test_enrich_members_empty_list(self):
8181 # Verify no database call was made
8282 mock_db .users .find .assert_not_called ()
8383
84+ @pytest .mark .asyncio
85+ async def test_enrich_members_invalid_object_ids (self ):
86+ """Test enrichment with invalid ObjectIds - covers lines 46-47"""
87+ members = [
88+ {"userId" : "invalid_id_123" , "role" : "admin" , "joinedAt" : "2023-01-01" },
89+ {"userId" : "also_invalid" , "role" : "member" , "joinedAt" : "2023-01-02" },
90+ ]
91+
92+ mock_db = MagicMock ()
93+
94+ with patch .object (self .service , "get_db" , return_value = mock_db ):
95+ enriched = await self .service ._enrich_members_with_user_details (members )
96+
97+ # Should return fallback members since no valid ObjectIds - covers line 52
98+ assert len (enriched ) == 2
99+ assert "User" in enriched [0 ]["user" ]["name" ]
100+ assert enriched [0 ]["role" ] == "admin"
101+
102+ @pytest .mark .asyncio
103+ async def test_enrich_members_member_without_userId (self ):
104+ """Test enrichment when member has no userId - covers line 99"""
105+ user_id_1 = str (ObjectId ())
106+
107+ members = [
108+ {"userId" : user_id_1 , "role" : "admin" , "joinedAt" : "2023-01-01" },
109+ {"role" : "member" , "joinedAt" : "2023-01-02" }, # No userId
110+ ]
111+
112+ mock_users = [
113+ {"_id" : ObjectId (user_id_1 ), "name" : "Admin User" , "imageUrl" : "admin.jpg" },
114+ ]
115+
116+ mock_db = MagicMock ()
117+ mock_users_collection = MagicMock ()
118+ mock_db .users = mock_users_collection
119+
120+ mock_cursor = AsyncMock ()
121+ mock_cursor .to_list .return_value = mock_users
122+ mock_users_collection .find .return_value = mock_cursor
123+
124+ with patch .object (self .service , "get_db" , return_value = mock_db ):
125+ enriched = await self .service ._enrich_members_with_user_details (members )
126+
127+ assert len (enriched ) == 2
128+ assert enriched [0 ]["user" ]["name" ] == "Admin User"
129+ # Second member should be returned as-is since no userId
130+ assert enriched [1 ]["role" ] == "member"
131+ assert "user" not in enriched [1 ] or enriched [1 ] == members [1 ]
132+
84133 @pytest .mark .asyncio
85134 async def test_enrich_members_missing_user_data (self ):
86135 """Test enrichment when some users are not found in database"""
0 commit comments