Exemplo n.º 1
0
    def test_get_completed_node_ids(self):
        # There should be no exception if the user or story do not exist;
        # it should also return an empty list in both of these situations.
        self.assertEqual(
            story_fetchers.get_completed_node_ids('Fake', self.STORY_1_ID), [])
        self.assertEqual(
            story_fetchers.get_completed_node_ids(self.owner_id, 'Fake'), [])

        # If no model exists, there should be no completed node IDs.
        self.assertIsNone(
            self._get_progress_model(self.owner_id, self.STORY_1_ID))
        self.assertEqual(
            story_fetchers.get_completed_node_ids(self.owner_id,
                                                  self.STORY_1_ID), [])

        # If the first node is completed, it should be reported.
        self._record_completion(self.owner_id, self.STORY_1_ID, self.NODE_ID_1)
        self.assertEqual(
            story_fetchers.get_completed_node_ids(self.owner_id,
                                                  self.STORY_1_ID),
            [self.NODE_ID_1])

        # If all nodes are completed, all of them should be reported.
        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.assertEqual(
            story_fetchers.get_completed_node_ids(self.owner_id,
                                                  self.STORY_1_ID),
            [self.NODE_ID_1, self.NODE_ID_2, self.NODE_ID_3])
Exemplo n.º 2
0
 def test_get_completed_node_id(self):
     self.assertEqual(
         story_fetchers.get_completed_node_ids('randomID', 'someID'), [])
     story_services.record_completed_node_in_story_context(
         self.USER_ID, self.STORY_ID, self.NODE_ID_1)
     story_services.record_completed_node_in_story_context(
         self.USER_ID, self.STORY_ID, self.NODE_ID_2)
     self.assertEqual(
         story_fetchers.get_completed_node_ids(self.USER_ID, self.STORY_ID),
         [self.NODE_ID_1, self.NODE_ID_2])
Exemplo n.º 3
0
 def test_get_completed_node_id(self) -> None:
     self.assertEqual(
         story_fetchers.get_completed_node_ids('randomID', 'someID'), [])
     story_services.record_completed_node_in_story_context(  # type: ignore[no-untyped-call]
         self.USER_ID, self.story_id, self.NODE_ID_1)
     story_services.record_completed_node_in_story_context(  # type: ignore[no-untyped-call]
         self.USER_ID, self.story_id, self.NODE_ID_2)
     self.assertEqual(
         story_fetchers.get_completed_node_ids(self.USER_ID, self.story_id),
         [self.NODE_ID_1, self.NODE_ID_2])
Exemplo n.º 4
0
    def test_post_succeeds_when_story_and_node_exist(self):
        with self.swap(constants, 'ENABLE_NEW_STRUCTURE_VIEWER_UPDATES', True):
            csrf_token = self.get_new_csrf_token()

            self.post_json(
                '%s/%s/%s' % (
                    feconf.STORY_NODE_COMPLETION_URL_PREFIX, self.STORY_ID_1,
                    self.NODE_ID_1),
                {}, csrf_token=csrf_token, expected_status_int=200)
        completed_nodes = story_fetchers.get_completed_node_ids(
            self.viewer_id, self.STORY_ID_1)
        self.assertEqual(completed_nodes[1], self.NODE_ID_1)