def test_interaction_investment_project_activity(api_client): """ Get a list of interactions and test the returned JSON is valid as per: https://www.w3.org/TR/activitystreams-core/ """ interaction = InvestmentProjectInteractionFactory() project = interaction.investment_project response = hawk.get(api_client, get_url('api-v3:activity-stream:interactions')) assert response.status_code == status.HTTP_200_OK assert response.json() == { '@context': 'https://www.w3.org/ns/activitystreams', 'summary': 'Interaction Activities', 'type': 'OrderedCollectionPage', 'id': 'http://testserver/v3/activity-stream/interaction', 'partOf': 'http://testserver/v3/activity-stream/interaction', 'previous': None, 'next': None, 'orderedItems': [ { 'id': f'dit:DataHubInteraction:{interaction.id}:Announce', 'type': 'Announce', 'published': format_date_or_datetime(interaction.created_on), 'generator': {'name': 'dit:dataHub', 'type': 'Application'}, 'object': { 'id': f'dit:DataHubInteraction:{interaction.id}', 'type': ['dit:Event', 'dit:Interaction'], 'startTime': format_date_or_datetime(interaction.date), 'dit:status': interaction.status, 'dit:archived': interaction.archived, 'dit:communicationChannel': {'name': interaction.communication_channel.name}, 'dit:subject': interaction.subject, 'dit:service': {'name': interaction.service.name}, 'attributedTo': [ { 'id': f'dit:DataHubCompany:{interaction.company.pk}', 'dit:dunsNumber': interaction.company.duns_number, 'dit:companiesHouseNumber': interaction.company.company_number, 'type': ['Organization', 'dit:Company'], 'name': interaction.company.name, }, *[ { 'id': f'dit:DataHubAdviser:{participant.adviser.pk}', 'type': ['Person', 'dit:Adviser'], 'dit:emailAddress': participant.adviser.contact_email or participant.adviser.email, 'name': participant.adviser.name, 'dit:team': { 'id': f'dit:DataHubTeam:{participant.team.pk}', 'type': ['Group', 'dit:Team'], 'name': participant.team.name, }, } for participant in interaction.dit_participants.order_by('pk') ], *[ { 'id': f'dit:DataHubContact:{contact.pk}', 'type': ['Person', 'dit:Contact'], 'url': contact.get_absolute_url(), 'dit:emailAddress': contact.email, 'dit:jobTitle': contact.job_title, 'name': contact.name, } for contact in interaction.contacts.order_by('pk') ], ], 'url': interaction.get_absolute_url(), 'context': [ { 'id': f'dit:DataHubInvestmentProject:{project.pk}', 'name': project.name, 'type': 'dit:InvestmentProject', 'url': project.get_absolute_url(), }, ], }, }, ], }
def test_interaction_investment_project_activity(api_client): """ Get a list of interactions and test the returned JSON is valid as per: https://www.w3.org/TR/activitystreams-core/ """ start = datetime.datetime(year=2012, month=7, day=12, hour=15, minute=6, second=3) with freeze_time(start) as frozen_datetime: interaction = InvestmentProjectInteractionFactory() project = interaction.investment_project frozen_datetime.tick(datetime.timedelta(seconds=1, microseconds=1)) response = hawk.get(api_client, get_url('api-v3:activity-stream:interactions')) assert response.status_code == status.HTTP_200_OK assert response.json() == { '@context': 'https://www.w3.org/ns/activitystreams', 'summary': 'Interaction Activities', 'type': 'OrderedCollectionPage', 'next': 'http://testserver/v3/activity-stream/interaction' + '?cursor=2012-07-12T15%3A06%3A03.000000%2B00%3A00' + f'&cursor={str(interaction.id)}', 'orderedItems': [ { 'id': f'dit:DataHubInteraction:{interaction.id}:Announce', 'type': 'Announce', 'published': format_date_or_datetime(interaction.created_on), 'generator': {'name': 'dit:dataHub', 'type': 'Application'}, 'object': { 'id': f'dit:DataHubInteraction:{interaction.id}', 'type': [ 'dit:Event', 'dit:Interaction', f'dit:datahub:theme:{interaction.theme}', ], 'content': interaction.notes, 'startTime': format_date_or_datetime(interaction.date), 'dit:status': interaction.status, 'dit:archived': interaction.archived, 'dit:communicationChannel': {'name': interaction.communication_channel.name}, 'dit:subject': interaction.subject, 'dit:service': {'name': interaction.service.name}, 'attributedTo': [ *[ { 'id': f'dit:DataHubCompany:{company.pk}', 'dit:dunsNumber': company.duns_number, 'dit:companiesHouseNumber': company.company_number, 'type': ['Organization', 'dit:Company'], 'name': company.name, } for company in interaction.companies.order_by('pk') ], *[ { 'id': f'dit:DataHubAdviser:{participant.adviser.pk}', 'type': ['Person', 'dit:Adviser'], 'dit:emailAddress': participant.adviser.contact_email or participant.adviser.email, 'name': participant.adviser.name, 'dit:team': { 'id': f'dit:DataHubTeam:{participant.team.pk}', 'type': ['Group', 'dit:Team'], 'name': participant.team.name, }, } for participant in interaction.dit_participants.order_by('pk') ], *[ { 'id': f'dit:DataHubContact:{contact.pk}', 'type': ['Person', 'dit:Contact'], 'url': contact.get_absolute_url(), 'dit:emailAddress': contact.email, 'dit:jobTitle': contact.job_title, 'name': contact.name, } for contact in interaction.contacts.order_by('pk') ], ], 'url': interaction.get_absolute_url(), 'context': [ { 'id': f'dit:DataHubInvestmentProject:{project.pk}', 'name': project.name, 'type': 'dit:InvestmentProject', 'url': project.get_absolute_url(), }, ], }, }, ], }