def test_get_latest_completed_node_ids(self): self.assertEqual( story_fetchers.get_latest_completed_node_ids( self.USER_ID, self.STORY_ID), []) story_services.record_completed_node_in_story_context( self.USER_ID, self.STORY_ID, self.NODE_ID_1) self.assertEqual( story_fetchers.get_latest_completed_node_ids( self.USER_ID, self.STORY_ID), [self.NODE_ID_1])
def test_get_latest_completed_node_ids(self) -> None: self.assertEqual( story_fetchers.get_latest_completed_node_ids( self.USER_ID, self.story_id), []) story_services.record_completed_node_in_story_context( # type: ignore[no-untyped-call] self.USER_ID, self.story_id, self.NODE_ID_1) self.assertEqual( story_fetchers.get_latest_completed_node_ids( self.USER_ID, self.story_id), [self.NODE_ID_1])
def get(self, story_id): """Handles GET requests.""" if not constants.ENABLE_NEW_STRUCTURE_PLAYERS: raise self.PageNotFoundException story = story_fetchers.get_story_by_id(story_id) latest_completed_node_ids = ( story_fetchers.get_latest_completed_node_ids( self.user_id, story_id)) if len(latest_completed_node_ids) == 0: raise self.PageNotFoundException try: skills = skill_services.get_multi_skills( story.get_acquired_skill_ids_for_node_ids( latest_completed_node_ids)) except Exception as e: raise self.PageNotFoundException(e) skill_descriptions = {} for skill in skills: skill_descriptions[skill.id] = skill.description self.values.update({ 'skill_descriptions': skill_descriptions, 'story_name': story.title }) self.render_json(self.values)
def test_get_latest_completed_node_ids(self): self.assertIsNone( self._get_progress_model(self.owner_id, self.STORY_1_ID)) self.assertEqual( story_fetchers.get_latest_completed_node_ids( self.owner_id, self.STORY_1_ID), []) self._record_completion(self.owner_id, self.STORY_1_ID, self.NODE_ID_1) self.assertEqual( story_fetchers.get_latest_completed_node_ids( self.owner_id, self.STORY_1_ID), [self.NODE_ID_1]) self._record_completion(self.owner_id, self.STORY_1_ID, self.NODE_ID_2) self._record_completion(self.owner_id, self.STORY_1_ID, self.NODE_ID_3) self._record_completion(self.owner_id, self.STORY_1_ID, self.NODE_ID_4) self.assertEqual( story_fetchers.get_latest_completed_node_ids( self.owner_id, self.STORY_1_ID), [self.NODE_ID_2, self.NODE_ID_3, self.NODE_ID_4])
def test_get_latest_completed_node_ids_different_completion_order(self): self._record_completion(self.owner_id, self.STORY_1_ID, self.NODE_ID_4) self._record_completion(self.owner_id, self.STORY_1_ID, self.NODE_ID_3) self._record_completion(self.owner_id, self.STORY_1_ID, self.NODE_ID_1) self._record_completion(self.owner_id, self.STORY_1_ID, self.NODE_ID_2) self.assertEqual( story_fetchers.get_latest_completed_node_ids( self.owner_id, self.STORY_1_ID), [self.NODE_ID_2, self.NODE_ID_3, self.NODE_ID_4])
def get(self, story_id): """Handles GET requests.""" if not constants.ENABLE_NEW_STRUCTURE_PLAYERS: raise self.PageNotFoundException story = story_fetchers.get_story_by_id(story_id) latest_completed_node_ids = ( story_fetchers.get_latest_completed_node_ids( self.user_id, story_id)) if len(latest_completed_node_ids) == 0: raise self.PageNotFoundException try: skills = skill_services.get_multi_skills( story.get_acquired_skill_ids_for_node_ids( latest_completed_node_ids)) except Exception, e: raise self.PageNotFoundException(e)