def get(self, topic_name): """Handles GET requests.""" if not constants.ENABLE_NEW_STRUCTURES: raise self.PageNotFoundException topic = topic_services.get_topic_by_name(topic_name) canonical_story_summaries = [ story_services.get_story_summary_by_id( canonical_story_id) for canonical_story_id in topic.canonical_story_ids] additional_story_summaries = [ story_services.get_story_summary_by_id( additional_story_id) for additional_story_id in topic.additional_story_ids] canonical_story_dicts = [ summary.to_human_readable_dict() for summary in canonical_story_summaries] additional_story_dicts = [ summary.to_human_readable_dict() for summary in additional_story_summaries] self.values.update({ 'topic_name': topic.name, 'canonical_story_dicts': canonical_story_dicts, 'additional_story_dicts': additional_story_dicts }) self.render_json(self.values)
def test_update_story_node_properties(self): changelist = [ story_domain.StoryChange({ 'cmd': story_domain.CMD_ADD_STORY_NODE, 'node_id': self.NODE_ID_2 }), story_domain.StoryChange({ 'cmd': story_domain.CMD_UPDATE_STORY_NODE_PROPERTY, 'property_name': ( story_domain.STORY_NODE_PROPERTY_DESTINATION_NODE_IDS), 'node_id': self.NODE_ID_2, 'old_value': [], 'new_value': [self.NODE_ID_1] }), story_domain.StoryChange({ 'cmd': story_domain.CMD_UPDATE_STORY_CONTENTS_PROPERTY, 'property_name': ( story_domain.INITIAL_NODE_ID), 'old_value': self.NODE_ID_1, 'new_value': self.NODE_ID_2 }) ] story_services.update_story( self.USER_ID, self.STORY_ID, changelist, 'Added story node.') story = story_services.get_story_by_id(self.STORY_ID) self.assertEqual( story.story_contents.nodes[1].destination_node_ids, [self.NODE_ID_1]) self.assertEqual(story.story_contents.initial_node_id, self.NODE_ID_2) self.assertEqual(story.story_contents.next_node_id, 'node_3') self.assertEqual(story.version, 2) story_summary = story_services.get_story_summary_by_id(self.STORY_ID) self.assertEqual(story_summary.node_count, 2) changelist = [ story_domain.StoryChange({ 'cmd': story_domain.CMD_DELETE_STORY_NODE, 'node_id': self.NODE_ID_1 }) ] story_services.update_story( self.USER_ID, self.STORY_ID, changelist, 'Removed a story node.') story_summary = story_services.get_story_summary_by_id(self.STORY_ID) story = story_services.get_story_by_id(self.STORY_ID) self.assertEqual(story_summary.node_count, 1) self.assertEqual(story.story_contents.nodes[0].destination_node_ids, [])
def test_delete_story(self): story_services.delete_story(self.USER_ID, self.STORY_ID) self.assertEqual( story_services.get_story_by_id(self.STORY_ID, strict=False), None) self.assertEqual( story_services.get_story_summary_by_id(self.STORY_ID, strict=False), None)
def test_update_story_properties(self): changelist = [ story_domain.StoryChange({ 'cmd': story_domain.CMD_UPDATE_STORY_PROPERTY, 'property_name': story_domain.STORY_PROPERTY_TITLE, 'old_value': 'Title', 'new_value': 'New Title' }), story_domain.StoryChange({ 'cmd': story_domain.CMD_UPDATE_STORY_PROPERTY, 'property_name': story_domain.STORY_PROPERTY_DESCRIPTION, 'old_value': 'Description', 'new_value': 'New Description' }) ] story_services.update_story(self.USER_ID, self.STORY_ID, changelist, 'Updated Title and Description.') story = story_services.get_story_by_id(self.STORY_ID) self.assertEqual(story.title, 'New Title') self.assertEqual(story.description, 'New Description') self.assertEqual(story.version, 3) story_summary = story_services.get_story_summary_by_id(self.STORY_ID) self.assertEqual(story_summary.title, 'New Title') self.assertEqual(story_summary.node_count, 1)
def test_get_story_summary_by_id(self): story_summary = story_services.get_story_summary_by_id(self.STORY_ID) self.assertEqual(story_summary.id, self.STORY_ID) self.assertEqual(story_summary.title, 'Title') self.assertEqual(story_summary.description, 'Description') self.assertEqual(story_summary.node_count, 1)
def test_to_human_readable_dict(self): story_summary = story_services.get_story_summary_by_id(self.STORY_ID) expected_dict = { 'id': self.STORY_ID, 'title': 'Title', 'description': 'Description' } self.assertEqual(expected_dict, story_summary.to_human_readable_dict())
def test_update_story_node_properties(self): changelist = [ story_domain.StoryChange({ 'cmd': story_domain.CMD_ADD_STORY_NODE, 'node_id': self.NODE_ID_2, 'title': 'Title 2' }), story_domain.StoryChange({ 'cmd': story_domain.CMD_UPDATE_STORY_NODE_PROPERTY, 'property_name': (story_domain.STORY_NODE_PROPERTY_DESTINATION_NODE_IDS), 'node_id': self.NODE_ID_2, 'old_value': [], 'new_value': [self.NODE_ID_1] }), story_domain.StoryChange({ 'cmd': story_domain.CMD_UPDATE_STORY_NODE_OUTLINE_STATUS, 'node_id': self.NODE_ID_2, 'old_value': False, 'new_value': True }), story_domain.StoryChange({ 'cmd': story_domain.CMD_UPDATE_STORY_CONTENTS_PROPERTY, 'property_name': (story_domain.INITIAL_NODE_ID), 'old_value': self.NODE_ID_1, 'new_value': self.NODE_ID_2 }) ] story_services.update_story(self.USER_ID, self.STORY_ID, changelist, 'Added story node.') story = story_services.get_story_by_id(self.STORY_ID) self.assertEqual(story.story_contents.nodes[1].destination_node_ids, [self.NODE_ID_1]) self.assertEqual(story.story_contents.nodes[1].outline_is_finalized, True) self.assertEqual(story.story_contents.nodes[1].title, 'Title 2') self.assertEqual(story.story_contents.initial_node_id, self.NODE_ID_2) self.assertEqual(story.story_contents.next_node_id, 'node_3') self.assertEqual(story.version, 3) story_summary = story_services.get_story_summary_by_id(self.STORY_ID) self.assertEqual(story_summary.node_count, 2) changelist = [ story_domain.StoryChange({ 'cmd': story_domain.CMD_DELETE_STORY_NODE, 'node_id': self.NODE_ID_1 }), story_domain.StoryChange({ 'cmd': story_domain.CMD_UPDATE_STORY_NODE_OUTLINE_STATUS, 'node_id': self.NODE_ID_2, 'old_value': True, 'new_value': False }), story_domain.StoryChange({ 'cmd': story_domain.CMD_UPDATE_STORY_NODE_PROPERTY, 'property_name': (story_domain.STORY_NODE_PROPERTY_TITLE), 'node_id': self.NODE_ID_2, 'old_value': 'Title 2', 'new_value': 'Modified title 2' }), ] story_services.update_story(self.USER_ID, self.STORY_ID, changelist, 'Removed a story node.') story_summary = story_services.get_story_summary_by_id(self.STORY_ID) story = story_services.get_story_by_id(self.STORY_ID) self.assertEqual(story_summary.node_count, 1) self.assertEqual(story.story_contents.nodes[0].title, 'Modified title 2') self.assertEqual(story.story_contents.nodes[0].destination_node_ids, []) self.assertEqual(story.story_contents.nodes[0].outline_is_finalized, False)