@@ -186,6 +186,14 @@ async def test_check_and_update_mapper_level_happy_path(self, mock_get):
186186 new_level = await MappingLevel .get_by_id (user .mapping_level , self .db )
187187 assert new_level .id == 2
188188 assert new_level .name == "INTERMEDIATE"
189+ # Message is sent
190+ message_count = await self .db .execute (
191+ "select count(*) from messages where to_user_id = :user_id" ,
192+ {
193+ "user_id" : self .test_user .id ,
194+ },
195+ )
196+ assert message_count == 1
189197
190198 @patch .object (AsyncClient , "get" )
191199 async def test_check_and_update_mapper_level_no_level_upgrade (self , mock_get ):
@@ -262,12 +270,49 @@ async def test_check_and_update_mapper_level_max_level(self, mock_get):
262270 "result" : {
263271 "topics" : {"changeset" : {"value" : 2000.0 }},
264272 },
273+ "user" : {
274+ "changesets" : {"count" : 2000.0 },
275+ },
276+ }
277+ )
278+ mock_get .return_value = mock_response
279+ await self .test_user .set_mapping_level (
280+ await MappingLevel .get_by_id (3 , self .db ), self .db
281+ )
282+
283+ # Act
284+ await UserService .check_and_update_mapper_level (self .test_user .id , self .db )
285+
286+ # Assert
287+ # no level is upgraded
288+ user = await User .get_by_id (self .test_user .id , self .db )
289+ new_level = await MappingLevel .get_by_id (user .mapping_level , self .db )
290+ assert new_level .id == 3
291+ assert new_level .name == "ADVANCED"
292+
293+ @patch .object (AsyncClient , "get" )
294+ async def test_check_and_update_mapper_level_assignes_badges_on_top_level (
295+ self , mock_get
296+ ):
297+ # Arrange
298+ mock_response = AsyncMock ()
299+ mock_response .status_code = 200
300+ mock_response .json = MagicMock (
301+ return_value = {
302+ "result" : {
303+ "topics" : {"changeset" : {"value" : 2000.0 }},
304+ },
305+ "user" : {
306+ "changesets" : {"count" : 251.0 },
307+ },
265308 }
266309 )
267310 mock_get .return_value = mock_response
268311 await self .test_user .set_mapping_level (
269312 await MappingLevel .get_by_id (3 , self .db ), self .db
270313 )
314+ badges = await MappingBadge .get_related_to_user (self .test_user .id , self .db )
315+ assert len (badges ) == 0
271316
272317 # Act
273318 await UserService .check_and_update_mapper_level (self .test_user .id , self .db )
@@ -278,6 +323,9 @@ async def test_check_and_update_mapper_level_max_level(self, mock_get):
278323 new_level = await MappingLevel .get_by_id (user .mapping_level , self .db )
279324 assert new_level .id == 3
280325 assert new_level .name == "ADVANCED"
326+ # The badge is assigned
327+ badges = await MappingBadge .get_related_to_user (self .test_user .id , self .db )
328+ assert len (badges ) == 1
281329
282330 @patch .object (AsyncClient , "get" )
283331 async def test_get_user_dto_by_username (self , mock_get ):
@@ -378,6 +426,14 @@ async def test_approve_level(self):
378426 )
379427 # votes are cleared
380428 assert await UserLevelVote .count (self .test_user .id , level .id , self .db ) == 0
429+ # Message is sent
430+ message_count = await self .db .execute (
431+ "select count(*) from messages where to_user_id = :user_id" ,
432+ {
433+ "user_id" : self .test_user .id ,
434+ },
435+ )
436+ assert message_count == 1
381437
382438 async def test_next_level (self ):
383439 next_level = await UserService .next_level (self .test_user .id , self .db )
0 commit comments