예제 #1
0
 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)
예제 #2
0
    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)
예제 #3
0
 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)
예제 #4
0
 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)