def test_osm_service_raise_error_if_user_element_not_found(self): # Arrange osm_response = get_canned_simplified_osm_user_details() # Act / Assert with self.assertRaises(OSMServiceError): OSMService._parse_osm_user_details_response( osm_response, 'wont-find')
def check_and_update_mapper_level(user_id: int): """ Check users mapping level and update if they have crossed threshold """ user = UserService.get_user_by_id(user_id) user_level = MappingLevel(user.mapping_level) if user_level == MappingLevel.ADVANCED: return # User has achieved highest level, so no need to do further checking intermediate_level = current_app.config['MAPPER_LEVEL_INTERMEDIATE'] advanced_level = current_app.config['MAPPER_LEVEL_ADVANCED'] try: osm_details = OSMService.get_osm_details_for_user(user_id) except OSMServiceError: # Swallow exception as we don't want to blow up the server for this current_app.logger.error('Error attempting to update mapper level') return if osm_details.changeset_count > advanced_level: user.mapping_level = MappingLevel.ADVANCED.value elif intermediate_level < osm_details.changeset_count < advanced_level: user.mapping_level = MappingLevel.INTERMEDIATE.value else: return user.save() return user
def get_osm_details_for_user(username: str) -> UserOSMDTO: """ Gets OSM details for the user from OSM API :param username: username in scope :raises UserServiceError, NotFound """ user = UserService.get_user_by_username(username) osm_dto = OSMService.get_osm_details_for_user(user.id) return osm_dto
def test_osm_service_can_parse_oms_user_details_xml(self): # Arrange osm_response = get_canned_simplified_osm_user_details() # Act dto = OSMService._parse_osm_user_details_response(osm_response) # Assert self.assertEqual(dto.account_created, '2015-05-14T18:10:16Z') self.assertEqual(dto.changeset_count, 16)