def METHOD_NAME(self):
    # Arrange
    test_project = Project()
    test_project.tasks_mapped = 0
    test_project.tasks_validated = 0
    test_project.tasks_bad_imagery = 0
    test_mapper = User()
    test_mapper.tasks_mapped = 0
    test_mapper.tasks_validated = 0
    test_mapper.tasks_invalidated = 0
    test_validator = User()
    test_validator.tasks_mapped = 0
    test_validator.tasks_validated = 0
    test_validator.tasks_invalidated = 0
    test_admin = User()
    test_admin.tasks_mapped = 0
    test_admin.tasks_validated = 0
    test_admin.tasks_invalidated = 0
    # Mapper marks task as mapped
    test_project, test_mapper = StatsService._update_tasks_stats(
        test_project, test_mapper, TaskStatus.READY, TaskStatus.MAPPED
    )
    # Validator marks task as bad imagery
    test_project, test_validator = StatsService._update_tasks_stats(
        test_project, test_validator, TaskStatus.MAPPED, TaskStatus.BADIMAGERY
    )
    # Admin undo marking task as bad imagery
    test_project, test_admin = StatsService._update_tasks_stats(
        test_project, test_admin, TaskStatus.BADIMAGERY, TaskStatus.MAPPED, "undo"
    )
    # Validator marks task as invalid
    test_project, test_validator = StatsService._update_tasks_stats(
        test_project, test_validator, TaskStatus.MAPPED, TaskStatus.INVALIDATED
    )
    # Mapper marks task as mapped
    test_project, test_mapper = StatsService._update_tasks_stats(
        test_project, test_mapper, TaskStatus.INVALIDATED, TaskStatus.MAPPED
    )
    # Admin undo marking task as mapped (test_mapper is given to the function though, as the author of the
    # last_change - compare with MappingServer.undo_mapping() method)
    test_project, test_mapper = StatsService._update_tasks_stats(
        test_project, test_mapper, TaskStatus.MAPPED, TaskStatus.INVALIDATED, "undo"
    )
    # Mapper marks task as mapped
    test_project, test_mapper = StatsService._update_tasks_stats(
        test_project, test_mapper, TaskStatus.INVALIDATED, TaskStatus.MAPPED
    )
    # Validator marks task as valid
    test_project, test_validator = StatsService._update_tasks_stats(
        test_project, test_validator, TaskStatus.MAPPED, TaskStatus.VALIDATED
    )
    # Assert
    self.assertEqual(test_project.tasks_mapped, 0)
    self.assertEqual(test_project.tasks_validated, 1)
    self.assertEqual(test_project.tasks_bad_imagery, 0)
    self.assertEqual(test_mapper.tasks_mapped, 2)
    self.assertEqual(test_mapper.tasks_validated, 0)
    self.assertEqual(test_mapper.tasks_invalidated, 0)
    self.assertEqual(test_validator.tasks_mapped, 0)
    self.assertEqual(test_validator.tasks_validated, 1)
    self.assertEqual(test_validator.tasks_invalidated, 1)
    self.assertEqual(test_admin.tasks_mapped, 0)
    self.assertEqual(test_admin.tasks_validated, 0)
    self.assertEqual(test_admin.tasks_invalidated, 0)