def test_person_create_json(self, mock_create_node): people = MarketingSitePeople() people.publish_person(self.person) self.assertEqual(mock_create_node.call_count, 1) data = mock_create_node.call_args[0][1] expected = self.expected_data expected.update({ 'status': 1, 'uuid': self.uuid, }) self.assertDictEqual(data, expected)
def create(self, request, *args, **kwargs): """ Create a new person. """ person_data = request.data partner = request.site.partner person_data['partner'] = partner.id serializer = self.get_serializer(data=person_data) serializer.is_valid(raise_exception=True) if waffle.switch_is_active('publish_person_to_marketing_site'): try: marketing_person = MarketingSitePeople() response = marketing_person.publish_person( partner, { 'given_name': serializer.validated_data['given_name'], 'family_name': serializer.validated_data['family_name'] }) serializer.validated_data.pop('uuid') serializer.validated_data['uuid'] = response['uuid'] except (PersonToMarketingException, MarketingSiteAPIClientException): logger.exception( 'An error occurred while adding the person [%s]-[%s] to the marketing site.', serializer.validated_data['given_name'], serializer.validated_data['family_name']) return Response( 'Failed to add person data to the marketing site.', status=status.HTTP_400_BAD_REQUEST) try: self.perform_create(serializer) except Exception: # pylint: disable=broad-except logger.exception( 'An error occurred while adding the person [%s]-[%s]-[%s].', serializer.validated_data['given_name'], serializer.validated_data['family_name'], response['id']) marketing_person.delete_person(partner, response['id']) return Response('Failed to add person data.', status=status.HTTP_400_BAD_REQUEST) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) return Response('publish_program_to_marketing_site is disabled.', status=status.HTTP_400_BAD_REQUEST)
def test_person_create_failed(self): self.mock_api_client(200) self.mock_node_create({}, 500) people = MarketingSitePeople() with self.assertRaises(PersonToMarketingException): people.publish_person(self.partner, self.data)
def test_person_create(self): self.mock_api_client(200) self.mock_node_create(self.expected_node, 201) people = MarketingSitePeople() result = people.publish_person(self.partner, self.data) self.assertEqual(result, self.expected_node)