def test_source(self): with app.app_context(): self.login() with app.test_request_context(): app.preprocess_request() source_id = EntityMapper.insert('E33', 'Necronomicon', 'source content').id rv = self.app.get(url_for('translation_insert', source_id=source_id)) assert b'+ Text' in rv.data data = {'name': 'Test translation'} rv = self.app.post(url_for('translation_insert', source_id=source_id), data=data) with app.test_request_context(): app.preprocess_request() translation_id = rv.location.split('/')[-1] rv = self.app.get(url_for('source_view', id_=source_id)) assert b'Test translation' in rv.data self.app.get(url_for('translation_update', id_=translation_id, source_id=source_id)) rv = self.app.post( url_for('translation_update', id_=translation_id, source_id=source_id), data={'name': 'Translation updated'}, follow_redirects=True) assert b'Translation updated' in rv.data rv = self.app.get( url_for('translation_delete', id_=translation_id, source_id=source_id), follow_redirects=True) assert b'The entry has been deleted.' in rv.data data = {'name': 'Translation continued', 'continue_': 'yes'} self.app.post(url_for('translation_insert', source_id=source_id), data=data)
def test_node(self): with app.app_context(): self.login() with app.test_request_context(): app.preprocess_request() actor_node = NodeMapper.get_hierarchy_by_name('Actor Actor Relation') sex_node = NodeMapper.get_hierarchy_by_name('Sex') rv = self.app.get(url_for('node_index')) assert b'Actor Actor Relation' in rv.data rv = self.app.get(url_for('node_insert', root_id=actor_node.id, super_id=actor_node.id)) assert b'Actor Actor Relation' in rv.data rv = self.app.post( url_for('node_insert', root_id=actor_node.id), data={'name_search': 'new'}) assert b'Inverse' in rv.data data = { 'name': 'My secret node', 'name_inverse': 'Do I look inverse?', 'description': 'Very important!'} rv = self.app.post(url_for('node_insert', root_id=actor_node.id), data=data) node_id = rv.location.split('/')[-1].replace('node#tab-', '') rv = self.app.get(url_for('node_update', id_=node_id)) assert b'My secret node' in rv.data and b'Super' in rv.data self.app.post(url_for('node_insert', root_id=sex_node.id), data=data) rv = self.app.post( url_for('node_update', id_=node_id), data=data, follow_redirects=True) assert b'Changes have been saved.' in rv.data # Test insert an continue data['continue_'] = 'yes' rv = self.app.post( url_for('node_insert', root_id=actor_node.id), data=data, follow_redirects=True) assert b'An entry has been created' in rv.data data['continue_'] = '' # Test forbidden system node rv = self.app.post( url_for('node_update', id_=actor_node.id), data=data, follow_redirects=True) assert b'Forbidden' in rv.data # Test update with self as root data[str(actor_node.id)] = node_id rv = self.app.post( url_for('node_update', id_=node_id), data=data, follow_redirects=True) assert b'Type can't have itself as super.' in rv.data # Test update with a child as root rv = self.app.post(url_for('node_insert', root_id=actor_node.id), data=data) child_node_id = rv.location.split('/')[-1].replace('node#tab-', '') data[str(actor_node.id)] = child_node_id rv = self.app.post( url_for('node_update', id_=node_id), data=data, follow_redirects=True) assert b'Type can't have a sub as super.' in rv.data # Test delete system node rv = self.app.get(url_for('node_delete', id_=actor_node.id), follow_redirects=True) assert b'Forbidden' in rv.data rv = self.app.get(url_for('node_delete', id_=child_node_id), follow_redirects=True) assert b'The entry has been deleted.' in rv.data
def test_export(self): with app.app_context(): self.login() # Projects rv = self.app.get(url_for('import_project_insert')) assert b'Name *' in rv.data rv = self.app.post(url_for('import_project_insert'), data={'name': 'Project Import'}) project_id = rv.location.split('/')[-1] rv = self.app.get(url_for('import_project_update', id_=project_id)) assert b'Name *' in rv.data rv = self.app.post(url_for('import_project_update', id_=project_id), follow_redirects=True, data={'name': 'Yup', 'description': 'whoa!'}) assert b'whoa!' in rv.data rv = self.app.post(url_for('import_project_insert'), data={'name': 'Yup'}, follow_redirects=True) assert b'The name is already in use.' in rv.data rv = self.app.get(url_for('import_index')) assert b'Yup' in rv.data # Import data rv = self.app.get(url_for('import_data', class_code='E21', project_id=project_id)) assert b'File *' in rv.data with open(os.path.dirname(__file__) + '/../static/import/example.csv', 'rb') as file: rv = self.app.post( url_for('import_data', class_code='E18', project_id=project_id), data={'file': file, 'duplicate': True}, follow_redirects=True) assert b'King Arthur' in rv.data with open(os.path.dirname(__file__) + '/../static/import/example.xlsx', 'rb') as file: rv = self.app.post( url_for('import_data', class_code='E18', project_id=project_id), data={'file': file, 'duplicate': True}, follow_redirects=True) assert b'IDs already in database' in rv.data with open(os.path.dirname(__file__) + '/../static/favicon.ico', 'rb') as file: rv = self.app.post( url_for('import_data', class_code='E18', project_id=project_id), data={'file': file}, follow_redirects=True) assert b'File type not allowed' in rv.data rv = self.app.get(url_for('import_project_view', id_=project_id)) assert b'King Arthur' in rv.data # View an imported entity with app.test_request_context(): app.preprocess_request() place_id = EntityMapper.get_by_codes('place')[0].id rv = self.app.get(url_for('actor_view', id_=place_id)) assert b'Yup' in rv.data rv = self.app.get(url_for('import_project_delete', id_=project_id), follow_redirects=True) assert b'Project deleted' in rv.data
def test_member(self): with app.app_context(): self.login() with app.test_request_context(): app.preprocess_request() actor_id = EntityMapper.insert('E21', 'Ripley').id group_id = EntityMapper.insert('E74', 'Space Marines').id # Add membership rv = self.app.get(url_for('member_insert', origin_id=group_id)) assert b'Actor Function' in rv.data data = {'group': '[' + str(group_id) + ']'} rv = self.app.post( url_for('membership_insert', origin_id=actor_id), data=data, follow_redirects=True) assert b'Space Marines' in rv.data data = {'group': '[' + str(group_id) + ']', 'continue_': 'yes'} rv = self.app.post( url_for('membership_insert', origin_id=actor_id), data=data, follow_redirects=True) assert b'Space Marines' in rv.data rv = self.app.post( url_for('membership_insert', origin_id=group_id), data=data, follow_redirects=True) assert b"Can't link to itself" in rv.data rv = self.app.post(url_for('member_insert', origin_id=actor_id), data={'actor': '[' + str(actor_id) + ']'}, follow_redirects=True) assert b"Can't link to itself" in rv.data # Add member to group data = {'actor': '[' + str(actor_id) + ']'} rv = self.app.post( url_for('member_insert', origin_id=group_id), data=data, follow_redirects=True) assert b'Ripley' in rv.data data['continue_'] = 'yes' rv = self.app.post( url_for('member_insert', origin_id=group_id), data=data, follow_redirects=True) assert b'Ripley' in rv.data # Update with app.test_request_context(): app.preprocess_request() link_id = LinkMapper.get_links(group_id, 'P107')[0].id rv = self.app.get(url_for('member_update', id_=link_id, origin_id=group_id)) assert b'Ripley' in rv.data rv = self.app.post( url_for('member_update', id_=link_id, origin_id=group_id), data={'description': 'We are here to help you.'}, follow_redirects=True) assert b'here to help' in rv.data
def test_content_and_newsletter(self): with app.app_context(): self.login() self.app.post(url_for('actor_insert', code='E21'), data={'name': 'Oliver Twist'}) with app.test_request_context(): app.preprocess_request() EntityMapper.insert('E61', '2017-04-01') # Add orphaned date EntityMapper.insert('E31', 'One forsaken file entity', 'file') # Add orphaned file rv = self.app.get(url_for('admin_orphans')) assert all(x in rv.data for x in [b'Oliver Twist', b'2017-04-01', b'forsaken']) rv = self.app.get(url_for('admin_orphans_delete', parameter='orphans')) assert b'2017-04-01' not in rv.data self.app.get(url_for('admin_orphans_delete', parameter='unlinked')) self.app.get(url_for('admin_orphans_delete', parameter='types')) self.app.get(url_for('admin_orphans_delete', parameter='whatever bogus string')) rv = self.app.get(url_for('admin_newsletter')) assert b'Newsletter' in rv.data
def test_involvement(self): with app.app_context(): self.login() rv = self.app.post(url_for('event_insert', code='E8'), data={ 'name': 'Event Horizon', 'date_begin_year': '1949', 'date_begin_month': '10', 'date_begin_day': '8', 'date_end_year': '1951'}) event_id = int(rv.location.split('/')[-1]) with app.test_request_context(): app.preprocess_request() actor_id = EntityMapper.insert('E21', 'Captain Miller').id involvement_id = NodeMapper.get_hierarchy_by_name('Involvement').id # Add involvement rv = self.app.get(url_for('involvement_insert', origin_id=actor_id)) assert b'Involvement' in rv.data data = {'event': '[' + str(event_id) + ']', 'activity': 'P11', involvement_id: involvement_id} rv = self.app.post(url_for('involvement_insert', origin_id=actor_id), data=data, follow_redirects=True) assert b'Event Horizon' in rv.data data = {'actor': '[' + str(actor_id) + ']', 'continue_': 'yes', 'activity': 'P22'} rv = self.app.post(url_for('involvement_insert', origin_id=event_id), data=data, follow_redirects=True) assert b'Event Horizon' in rv.data self.app.get(url_for('event_view', id_=event_id)) # Update involvement with app.test_request_context(): app.preprocess_request() link_id = LinkMapper.get_links(event_id, 'P22')[0].id rv = self.app.get(url_for('involvement_update', id_=link_id, origin_id=event_id)) assert b'Captain' in rv.data rv = self.app.post( url_for('involvement_update', id_=link_id, origin_id=actor_id), data={'description': 'Infinite Space - Infinite Terror', 'activity': 'P23'}, follow_redirects=True) assert b'Infinite Space - Infinite Terror' in rv.data self.app.get(url_for('event_view', id_=event_id))
def test_dates(self): self.login() with app.app_context(): with app.test_request_context(): app.preprocess_request() # Create invalid date links person_a = EntityMapper.insert('E21', 'Person A') person_b = EntityMapper.insert('E21', 'Person B') begin_date = EntityMapper.insert('E61', 'Begin date', 'exact date value', date='2018-01-31') end_date = EntityMapper.insert('E61', 'End date', 'exact date value', date='2018-01-01') person_a.link('OA1', begin_date) person_a.link('OA2', end_date) relation_id = person_a.link('OA7', person_b) LinkPropertyMapper.insert(relation_id, 'OA1', begin_date) LinkPropertyMapper.insert(relation_id, 'OA2', end_date) rv = self.app.get(url_for('admin_check_dates')) assert b'Invalid dates (1)' in rv.data assert b'Invalid link dates (1)' in rv.data
def test_model(self): with app.app_context(): rv = self.app.get(url_for('model_index')) assert b'Browse' in rv.data rv = self.app.get(url_for('class_index')) assert b'E1' in rv.data rv = self.app.get(url_for('class_view', code='E4')) assert b'Domain for' in rv.data rv = self.app.get(url_for('property_index')) assert b'P1' in rv.data rv = self.app.get(url_for('property_view', code='P68')) assert b'P68' in rv.data data = {'domain': 'E1', 'range': 'E1', 'property': 'P13'} rv = self.app.post(url_for('model_index'), data=data) assert b'Wrong domain' in rv.data data = {'domain': 'E1', 'range': 'E1', 'property': 'P67'} self.app.post(url_for('model_index'), data=data) self.login() with app.test_request_context(): # Insert data to display in network view app.preprocess_request() actor = EntityMapper.insert('E21', 'King Arthur') event = EntityMapper.insert('E7', 'Battle of Camlann') source = EntityMapper.insert('E33', 'Tha source') actor.link('P11', event) actor.link('P67', EntityMapper.insert('E89', 'Propositional Object')) source.link('P67', event) rv = self.app.get(url_for('model_network')) assert b'orphans' in rv.data data = {'orphans': True, 'width': 100, 'height': 40, 'distance': -666, 'charge': 500} rv = self.app.post(url_for('model_network'), data=data) assert b'666' in rv.data # Translations self.app.get('/index/setlocale/de') rv = self.app.get(url_for('property_view', code='P68')) assert b'verweist auf' in rv.data rv = self.app.get(url_for('class_view', code='E4')) assert b'Phase' in rv.data
def test_relation(self): with app.app_context(): self.login() with app.test_request_context(): app.preprocess_request() actor_id = EntityMapper.insert('E21', 'Connor MacLeod').id related_id = EntityMapper.insert('E21', 'The Kurgan').id # Add relationship rv = self.app.get(url_for('relation_insert', origin_id=actor_id)) assert b'Actor Actor Relation' in rv.data relation_id = NodeMapper.get_hierarchy_by_name('Actor Actor Relation').id relation_sub_id = g.nodes[relation_id].subs[0] data = { 'actor': '[' + str(related_id) + ']', relation_id: relation_sub_id, 'inverse': None, 'date_begin_year': '-1949', 'date_begin_month': '10', 'date_begin_day': '8', 'date_begin_year2': '-1948', 'date_end_year': '2049', 'date_end_year2': '2050'} rv = self.app.post( url_for('relation_insert', origin_id=actor_id), data=data, follow_redirects=True) assert b'The Kurgan' in rv.data rv = self.app.get(url_for('node_view', id_=relation_sub_id)) assert b'Connor' in rv.data data['continue_'] = 'yes' data['inverse'] = True rv = self.app.post( url_for('relation_insert', origin_id=actor_id), data=data, follow_redirects=True) assert b'The Kurgan' in rv.data rv = self.app.get(url_for('actor_view', id_=actor_id)) assert b'The Kurgan' in rv.data rv = self.app.post( url_for('relation_insert', origin_id=related_id), data=data, follow_redirects=True) assert b"Can't link to itself." in rv.data # Relation types rv = self.app.get(url_for('node_move_entities', id_=relation_sub_id)) assert b'The Kurgan' in rv.data # Update relationship with app.test_request_context(): app.preprocess_request() link_id = LinkMapper.get_links(actor_id, 'OA7')[0].id link_id2 = LinkMapper.get_links(actor_id, 'OA7', True)[0].id rv = self.app.get(url_for('relation_update', id_=link_id, origin_id=related_id)) assert b'Connor' in rv.data rv = self.app.post( url_for('relation_update', id_=link_id, origin_id=actor_id), data={'description': 'There can be only one!', 'inverse': True}, follow_redirects=True) assert b'only one' in rv.data rv = self.app.post( url_for('relation_update', id_=link_id2, origin_id=actor_id), data={'description': 'There can be only one!', 'inverse': None}, follow_redirects=True) assert b'only one' in rv.data
def test_place(self): with app.app_context(): self.login() rv = self.app.get(url_for('place_insert')) assert b'+ Place' in rv.data with app.test_request_context(): app.preprocess_request() unit_node = NodeMapper.get_hierarchy_by_name('Administrative Unit') unit_sub1 = g.nodes[unit_node.subs[0]] unit_sub2 = g.nodes[unit_node.subs[1]] reference_id = EntityMapper.insert('E31', 'Ancient Books', 'edition').id place_node = NodeMapper.get_hierarchy_by_name('Place') source_id = EntityMapper.insert('E33', 'Tha source').id data = {'name': 'Asgard', 'alias-0': 'Valhöll', unit_node.id: '[' + str(unit_sub1.id) + ',' + str(unit_sub2.id) + ']'} rv = self.app.post(url_for('place_insert', origin_id=reference_id), data=data, follow_redirects=True) assert b'Asgard' in rv.data gis_points = """[{"type":"Feature", "geometry":{"type":"Point", "coordinates":[9,17]}, "properties":{"name":"Valhalla","description":"","shapeType":"centerpoint"}}]""" data['gis_points'] = gis_points data['gis_polygons'] = """[{"geometry":{ "coordinates":[[[9.75307425847859,17.8111792731339], [9.75315472474904,17.8110005175436],[9.75333711496205,17.8110873417098], [9.75307425847859,17.8111792731339]]],"type":"Polygon"}, "properties":{"count":4,"description":"","id":8,"name":"", "objectDescription":"","objectId":185,"shapeType":"Shape", "siteType":"Settlement","title":""},"type":"Feature"}]""" data[place_node.id] = place_node.subs data['continue_'] = 'yes' rv = self.app.post( url_for('place_insert', origin_id=source_id), data=data, follow_redirects=True) assert b'Tha source' in rv.data with app.test_request_context(): app.preprocess_request() places = EntityMapper.get_by_codes('place') place_id = places[0].id place2 = places[1] location = place2.get_linked_entity('P53') actor = EntityMapper.insert('E21', 'Milla Jovovich') actor.link('P74', location) assert b'Tha source' in rv.data rv = self.app.get(url_for('place_index')) assert b'Asgard' in rv.data rv = self.app.get(url_for('place_update', id_=place_id)) assert b'Valhalla' in rv.data data['continue_'] = '' data['alias-1'] = 'Val-hall' rv = self.app.post( url_for('place_update', id_=place_id), data=data, follow_redirects=True) assert b'Val-hall' in rv.data with app.test_request_context(): app.preprocess_request() event = EntityMapper.insert('E8', 'Valhalla rising') event.link('P7', location) event.link('P24', location) rv = self.app.get(url_for('place_view', id_=place2.id)) assert rv.data and b'Valhalla rising' in rv.data # Test invalid geom data['gis_polygons'] = """[{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [ [[298.9893436362036, -5.888919049309554], [299.00444983737543, -5.9138487869408545], [299.00650977389887, -5.893358673645309], [298.9848804404028, -5.9070188333813585], [298.9893436362036, -5.888919049309554]]]}, "properties": {"name": "", "description": "", "shapeType": "shape"}}]""" rv = self.app.post( url_for('place_insert', origin_id=source_id), data=data, follow_redirects=True) assert b'An invalid geometry was entered' in rv.data # Place types rv = self.app.get(url_for('node_move_entities', id_=unit_sub1.id)) assert b'Asgard' in rv.data # Test move entities of multiple node if link to new node exists rv = self.app.post(url_for('node_move_entities', id_=unit_sub1.id), data={unit_node.id: unit_sub2.id, 'selection': location.id}, follow_redirects=True) assert b'Entities where updated' in rv.data # Test move entities of multiple node if link to new node doesn't exists rv = self.app.post(url_for('node_move_entities', id_=unit_sub2.id), data={unit_node.id: unit_sub1.id, 'selection': location.id}, follow_redirects=True) assert b'Entities where updated' in rv.data # Subunits with app.app_context(): self.app.get(url_for('place_insert', origin_id=place_id)) rv = self.app.post(url_for('place_insert', origin_id=place_id), data={'name': "It's not a bug, it's a feature!"}) feat_id = rv.location.split('/')[-1] self.app.get(url_for('place_insert', origin_id=feat_id)) self.app.get(url_for('place_update', id_=feat_id)) self.app.post(url_for('place_update', id_=feat_id), data={'name': "It's not a bug, it's a feature!"}) rv = self.app.post(url_for('place_insert', origin_id=feat_id), data={'name': "I'm a stratigraphic unit"}) stratigraphic_id = rv.location.split('/')[-1] self.app.get(url_for('place_insert', origin_id=stratigraphic_id)) self.app.get(url_for('place_update', id_=stratigraphic_id)) self.app.post(url_for('place_update', id_=stratigraphic_id), data={'name': "I'm a stratigraphic unit"}) dimension_node_id = NodeMapper.get_hierarchy_by_name('Dimensions').subs[0] data = {'name': 'You never find me', str(dimension_node_id): '50'} rv = self.app.post(url_for('place_insert', origin_id=stratigraphic_id), data=data) find_id = rv.location.split('/')[-1] self.app.get(url_for('place_update', id_=find_id)) self.app.post(url_for('place_update', id_=find_id), data=data) rv = self.app.get(url_for('place_view', id_=feat_id)) assert b'not a bug' in rv.data rv = self.app.get(url_for('place_view', id_=stratigraphic_id)) assert b'a stratigraphic unit' in rv.data rv = self.app.get(url_for('place_view', id_=find_id)) assert b'You never' in rv.data rv = self.app.get(url_for('place_delete', id_=place_id), follow_redirects=True) assert b'not possible if subunits' in rv.data rv = self.app.get(url_for('place_delete', id_=find_id), follow_redirects=True) assert b'The entry has been deleted.' in rv.data rv = self.app.get(url_for('place_delete', id_=place2.id), follow_redirects=True) assert b'The entry has been deleted.' in rv.data
def test_user(self): data = { 'active': '', 'username': '******', 'email': '*****@*****.**', 'password': '******', 'password2': 'you_never_guess_this', 'group': 'admin', 'name': 'Ripley Weaver', 'description': '', 'send_info': ''} data2 = { 'active': '', 'username': '******', 'email': '*****@*****.**', 'password': '******', 'password2': 'you_never_guess_this', 'group': 'admin', 'name': 'Newt', 'continue_': 'yes', 'send_info': ''} with app.app_context(): rv = self.app.get(url_for('user_insert'), follow_redirects=True) assert b'Password' in rv.data self.app.post('/login', data={'username': '******', 'password': '******'}) rv = self.app.get(url_for('user_insert'), follow_redirects=True) assert b'403 - Forbidden' in rv.data self.app.get(url_for('logout'), follow_redirects=True) self.login() with app.test_request_context(): app.preprocess_request() logged_in_user_id = UserMapper.get_by_username('Alice').id rv = self.app.get(url_for('user_insert')) assert b'+ User' in rv.data rv = self.app.post(url_for('user_insert'), data=data) user_id = rv.location.split('/')[-1] data['password'] = '******' rv = self.app.post(url_for('user_insert'), data=data) assert b'match' in rv.data # Test with insert with continue rv = self.app.post(url_for('user_insert'), follow_redirects=True, data=data2) assert b'Newt' not in rv.data rv = self.app.get(url_for('user_view', id_=user_id)) assert b'Ripley' in rv.data rv = self.app.get(url_for('user_update', id_=logged_in_user_id)) assert b'Alice' in rv.data data['description'] = 'The warrant officer' rv = self.app.post( url_for('user_update', id_=user_id), data=data, follow_redirects=True) assert b'The warrant officer' in rv.data rv = self.app.get(url_for('user_delete', id_=user_id), follow_redirects=True) assert b'A user was deleted' in rv.data # Test activity log data = {'name': 'test', 'description': 'test'} # insert a reference to show something self.app.post(url_for('reference_insert', code='bibliography'), data=data) rv = self.app.get(url_for('user_activity')) assert b'Activity' in rv.data rv = self.app.get(url_for('user_activity', user_id=user_id)) assert b'Activity' in rv.data data = {'limit': 'all', 'action': 'all', 'user': '******'} rv = self.app.post(url_for('user_activity', data=data)) assert b'Activity' in rv.data
def test_event(self): with app.app_context(): self.login() # Create entities for event rv = self.app.post(url_for('place_insert'), data={'name': 'My house'}) residence_id = rv.location.split('/')[-1] with app.test_request_context(): app.preprocess_request() actor_id = EntityMapper.insert('E21', 'Game master').id file_id = EntityMapper.insert('E31', 'One forsaken file entity', 'file').id source_id = EntityMapper.insert('E33', 'Necronomicon', 'source content').id reference_id = EntityMapper.insert('E31', 'Ancient Books', 'edition').id # Insert rv = self.app.get(url_for('event_insert', code='E7')) assert b'+ Activity' in rv.data data = { 'name': 'First event ever First event ever First event ever First event ever First', 'place': residence_id} rv = self.app.post(url_for('event_insert', code='E7', origin_id=reference_id), data=data, follow_redirects=True) assert b'First event ever' in rv.data with app.test_request_context(): app.preprocess_request() activity_id = EntityMapper.get_by_codes('event')[0].id self.app.post(url_for('event_insert', code='E7', origin_id=actor_id), data=data) self.app.post(url_for('event_insert', code='E7', origin_id=file_id), data=data) self.app.post(url_for('event_insert', code='E7', origin_id=source_id), data=data) rv = self.app.post( url_for('event_insert', code='E8'), data={ 'name': 'Test event', 'given_place': '[' + str(residence_id) + ']', 'place': residence_id, 'event': activity_id, 'date_begin_year': '1949', 'date_begin_month': '10', 'date_begin_day': '8', 'date_end_year': '1951'}) event_id = rv.location.split('/')[-1] rv = self.app.get(url_for('event_view', id_=event_id)) assert b'Test event' in rv.data # Add another event and test if events are seen at place self.app.post(url_for('event_insert', code='E8'), data={'name': 'Dusk', 'given_place': '[' + str(residence_id) + ']'}) rv = self.app.get(url_for('place_view', id_=residence_id)) assert b'Test event' in rv.data rv = self.app.get(url_for('actor_view', id_=actor_id)) assert b'Game master' in rv.data rv = self.app.post( url_for('event_insert', code='E8'), follow_redirects=True, data={'name': 'Test event', 'continue_': 'yes'}) assert b'An entry has been created' in rv.data rv = self.app.get(url_for('event_index')) assert b'Test event' in rv.data self.app.get(url_for('event_view', id_=activity_id)) # Update rv = self.app.get(url_for('event_update', id_=activity_id)) assert b'Test event' in rv.data rv = self.app.get(url_for('event_update', id_=event_id)) assert b'First event ever' in rv.data data = {'name': 'Event updated'} rv = self.app.post( url_for('event_update', id_=event_id), data=data, follow_redirects=True) assert b'Event updated' in rv.data # Test super event validation data = {'name': 'Event Horizon', 'event': event_id} rv = self.app.post( url_for('event_update', id_=event_id), data=data, follow_redirects=True) assert b'error' in rv.data # Delete rv = self.app.get(url_for('event_delete', id_=event_id), follow_redirects=True) assert b'The entry has been deleted.' in rv.data
def test_source(self): with app.app_context(): self.login() # Source insert rv = self.app.get(url_for('source_insert')) assert b'+ Source' in rv.data with app.test_request_context(): app.preprocess_request() origin_id = EntityMapper.insert('E21', 'David Duchovny').id actor_id = EntityMapper.insert('E21', 'Gillian Anderson Gillian Anderson ').id reference_id = EntityMapper.insert('E84', 'Ancient Books', 'information carrier').id file_id = EntityMapper.insert('E31', 'The X-Files', 'file').id rv = self.app.post(url_for('source_insert', origin_id=origin_id), data={'name': 'Test source'}, follow_redirects=True) assert b'An entry has been created' in rv.data with app.test_request_context(): app.preprocess_request() source_id = EntityMapper.get_by_codes('source')[0].id rv = self.app.post(url_for('source_insert', origin_id=reference_id), data={'name': 'Test source'}, follow_redirects=True) assert b'Ancient Books' in rv.data rv = self.app.post(url_for('source_insert', origin_id=file_id), data={'name': 'Test source'}, follow_redirects=True) assert b'An entry has been created' in rv.data and b'The X-Files' in rv.data data = {'name': 'Test source', 'continue_': 'yes'} rv = self.app.post(url_for('source_insert'), data=data, follow_redirects=True) assert b'An entry has been created' in rv.data rv = self.app.get(url_for('source_index')) assert b'Test source' in rv.data # Link source rv = self.app.post(url_for('reference_insert', code='edition', origin_id=source_id), data={'name': 'Test reference'}, follow_redirects=True) assert b'Test source' in rv.data self.app.get(url_for('source_add', origin_id=actor_id)) data = {'values': source_id} rv = self.app.post(url_for('source_add', origin_id=actor_id), data=data, follow_redirects=True) assert b'Gillian Anderson' in rv.data self.app.get(url_for('source_add2', origin_id=actor_id, id_=source_id, class_name='actor')) rv = self.app.post(url_for('source_add2', id_=source_id, class_name='actor'), data={'values': actor_id}, follow_redirects=True) assert b'Gillian Anderson' in rv.data rv = self.app.get(url_for('source_view', id_=source_id)) assert b'Gillian Anderson' in rv.data rv = self.app.get(url_for('source_add2', id_=source_id, class_name='place')) assert b'Add Place' in rv.data # Update source rv = self.app.get(url_for('source_update', id_=source_id)) assert b'Test source' in rv.data data = {'name': 'Source updated', 'description': 'some description'} rv = self.app.post(url_for('source_update', id_=source_id), data=data, follow_redirects=True) assert b'Source updated' in rv.data rv = self.app.get(url_for('source_view', id_=source_id)) assert b'some description' in rv.data # Delete source rv = self.app.get(url_for('source_delete', id_=source_id), follow_redirects=True) assert b'The entry has been deleted.' in rv.data
def test_reference(self): with app.app_context(): self.login() # Reference insert rv = self.app.get(url_for('reference_insert', code='bibliography')) assert b'+ Bibliography' in rv.data rv = self.app.get(url_for('reference_insert', code='edition')) assert b'+ Edition' in rv.data rv = self.app.get(url_for('reference_insert', code='carrier')) assert b'+ Carrier' in rv.data data = {'name': 'Test reference', 'description': 'Reference description'} rv = self.app.post(url_for('reference_insert', code='bibliography'), data=data) with app.test_request_context(): app.preprocess_request() bibliography = EntityMapper.get_by_id(rv.location.split('/')[-1]) data['continue_'] = 'yes' rv = self.app.post(url_for('reference_insert', code='carrier'), data=data, follow_redirects=True) assert b'An entry has been created' in rv.data rv = self.app.get(url_for('reference_index')) # Reference update assert b'Test reference' in rv.data rv = self.app.get(url_for('reference_update', id_=bibliography.id)) assert b'Test reference' in rv.data data['name'] = 'Test reference updated' rv = self.app.post(url_for('reference_update', id_=bibliography.id), data=data, follow_redirects=True) assert b'Test reference updated' in rv.data # Reference link with app.test_request_context(): app.preprocess_request() batman = EntityMapper.insert('E21', 'Batman') rv = self.app.get(url_for('reference_add', origin_id=batman.id)) assert b'Batman' in rv.data rv = self.app.post(url_for('reference_add', origin_id=batman.id), data={'reference': bibliography.id}, follow_redirects=True) assert b'Test reference updated' in rv.data rv = self.app.get( url_for('reference_add2', reference_id=bibliography.id, class_name='actor')) assert b'Batman' in rv.data rv = self.app.post( url_for('reference_add2', reference_id=bibliography.id, class_name='actor'), data={'actor': batman.id}, follow_redirects=True) assert b'Test reference updated' in rv.data # Reference link update with app.test_request_context(): app.preprocess_request() link_id = batman.get_links('P67', True)[0].id file = EntityMapper.insert('E31', 'The X-Files', 'file') file.link('P67', bibliography) rv = self.app.post(url_for( 'reference_link_update', link_id=link_id, origin_id=bibliography.id), data={'page': '666'}, follow_redirects=True) assert b'Changes have been saved' in rv.data # Reference delete rv = self.app.get(url_for('reference_delete', id_=bibliography.id), follow_redirects=True) assert b'The entry has been deleted.' in rv.data
def test_actor(self): with app.app_context(): self.login() rv = self.app.get(url_for('actor_index')) assert b'No entries' in rv.data # Create entities for actor rv = self.app.post(url_for('place_insert'), data={'name': 'Nostromos'}) residence_id = rv.location.split('/')[-1] with app.test_request_context(): app.preprocess_request() sex_node = NodeMapper.get_hierarchy_by_name('Sex') sex_node_sub_1 = g.nodes[sex_node.subs[0]] sex_node_sub_2 = g.nodes[sex_node.subs[1]] event_id = EntityMapper.insert('E8', 'Event Horizon').id source_id = EntityMapper.insert('E33', 'Tha source').id # Actor insert rv = self.app.get(url_for('actor_insert', code='E21')) assert b'+ Person' in rv.data self.app.get(url_for('actor_insert', code='E21', origin_id=residence_id)) data = { sex_node.id: sex_node_sub_1.id, 'name': 'Sigourney Weaver', 'alias-1': 'Ripley', 'residence': residence_id, 'appears_first': residence_id, 'appears_last': residence_id, 'description': 'Susan Alexandra Weaver is an American actress.', 'date_begin_year': '-1949', 'date_begin_month': '10', 'date_begin_day': '8', 'date_begin_year2': '-1948', 'date_end_year': '2049', 'date_end_year2': '2050', 'date_birth': True, 'date_death': True} rv = self.app.post( url_for('actor_insert', code='E21', origin_id=residence_id), data=data) actor_id = rv.location.split('/')[-1] # Test actor nodes rv = self.app.get(url_for('node_view', id_=sex_node_sub_1.id)) assert b'Susan' in rv.data rv = self.app.get(url_for('node_move_entities', id_=sex_node_sub_1.id)) assert b'Sigourney' in rv.data rv = self.app.post(url_for('node_move_entities', id_=sex_node_sub_1.id), data={sex_node.id: sex_node_sub_2.id, 'selection': [actor_id]}, follow_redirects=True) assert b'Entities where updated' in rv.data rv = self.app.post(url_for('node_move_entities', id_=sex_node_sub_2.id), data={sex_node.id: '', 'selection': [actor_id]}, follow_redirects=True) assert b'Entities where updated' in rv.data self.app.post(url_for('actor_insert', code='E21', origin_id=actor_id), data=data) self.app.post(url_for('actor_insert', code='E21', origin_id=event_id), data=data) self.app.post(url_for('actor_insert', code='E21', origin_id=source_id), data=data) rv = self.app.post(url_for('reference_insert', code='reference'), data={'name': 'Book'}) reference_id = rv.location.split('/')[-1] rv = self.app.post( url_for('actor_insert', code='E21', origin_id=reference_id), data=data, follow_redirects=True) assert b'An entry has been created' in rv.data data['continue_'] = 'yes' rv = self.app.post( url_for('actor_insert', code='E21'), data=data, follow_redirects=True) assert b'An entry has been created' in rv.data rv = self.app.get(url_for('actor_index')) assert b'Sigourney Weaver' in rv.data # Actor update rv = self.app.get(url_for('actor_update', id_=actor_id)) assert b'American actress' in rv.data data['name'] = 'Susan Alexandra Weaver' data['date_end_year'] = '' data['date_begin_year2'] = '1950' data['date_begin_day'] = '' rv = self.app.post( url_for('actor_update', id_=actor_id), data=data, follow_redirects=True) assert b'Susan Alexandra Weaver' in rv.data rv = self.app.post( url_for('ajax_bookmark'), data={'entity_id': actor_id}, follow_redirects=True) assert b'Remove bookmark' in rv.data rv = self.app.get('/') assert b'Weaver' in rv.data rv = self.app.post( url_for('ajax_bookmark'), data={'entity_id': actor_id}, follow_redirects=True) assert b'Bookmark' in rv.data rv = self.app.get(url_for('link_delete', origin_id=actor_id, id_=666), follow_redirects=True) assert b'removed'in rv.data # Actor delete rv = self.app.get(url_for('actor_delete', id_=actor_id), follow_redirects=True) assert b'The entry has been deleted.' in rv.data