Beispiel #1
0
 def test_update_person_failed(self):
     self.mock_api_client(200)
     self.mock_node_edit(500)
     self.mock_node_retrieval('uuid', self.uuid, status=200)
     people = MarketingSitePeople()
     with self.assertRaises(PersonToMarketingException):
         people.update_person(self.person)
Beispiel #2
0
 def test_update_person_json(self, mock_update_node):
     self.mock_api_client(200)
     self.mock_node_retrieval('uuid', self.uuid, status=200)
     people = MarketingSitePeople()
     people.update_person(self.person)
     self.assertEqual(mock_update_node.call_count, 1)
     data = mock_update_node.call_args[0][2]
     self.assertDictEqual(data, self.expected_data)
Beispiel #3
0
 def test_update_uuid_not_found(self):
     self.mock_api_client(200)
     people = MarketingSitePeople()
     with LogCapture(LOGGER_NAME) as log:
         people.update_person(self.person)
         log.check(
             (LOGGER_NAME, 'INFO',
              'Person with UUID [{}] does not exist on the marketing site'.
              format(self.uuid)))
Beispiel #4
0
 def test_update_person(self):
     self.mock_api_client(200)
     self.mock_node_edit(200)
     self.mock_node_retrieval('uuid', self.uuid, status=200)
     people = MarketingSitePeople()
     data = people.update_person(self.person)
     self.assertEqual(data, {})
Beispiel #5
0
    def update(self, request, *args, **kwargs):  # pylint: disable=unused-argument
        """
        Updates a person in discovery and the corresponding person node in drupal
        """
        person_data = request.data

        partner = request.site.partner
        person_data['partner'] = partner.id
        partial = kwargs.pop('partial', False)
        instance = self.get_object()
        serializer = self.get_serializer(instance,
                                         data=person_data,
                                         partial=partial)
        serializer.is_valid(raise_exception=True)

        if not waffle.switch_is_active('publish_person_to_marketing_site'):
            return Response('publish_person_to_marketing_site is disabled.',
                            status=status.HTTP_400_BAD_REQUEST)
        try:
            marketing_person = MarketingSitePeople()
            marketing_person.update_person(partner,
                                           serializer.validated_data['uuid'],
                                           self._get_person_data(serializer))

        except (PersonToMarketingException, MarketingSiteAPIClientException):
            logger.exception(
                'An error occurred while updating the person [%s]-[%s] on the marketing site.',
                serializer.validated_data['given_name'],
                serializer.validated_data['family_name'])
            return Response(
                'Failed to update person data on the marketing site.',
                status=status.HTTP_400_BAD_REQUEST)

        try:
            self.perform_update(serializer)
        except Exception:  # pylint: disable=broad-except
            logger.exception(
                'An error occurred while updating the person [%s]-[%s] in discovery.',
                serializer.validated_data['given_name'],
                serializer.validated_data['family_name'])
            return Response('Failed to update person data.',
                            status=status.HTTP_400_BAD_REQUEST)

        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data,
                        status=status.HTTP_200_OK,
                        headers=headers)