def test_fetch(self):
        zip_code = self.zip_code
        retriever = ZipCodeRetriever(zip_code)
        result = retriever.fetch()

        self.assertIsInstance(result, dict)
        self.assertIn('cep', result.keys())
Ejemplo n.º 2
0
    def create(self):
        zip_code = self.data.get('zip_code')

        logger.info('[API CREATE] Create zipcode. zip_code=%s', zip_code)

        try:
            retriever = ZipCodeRetriever(zip_code)
        except InvalidZipCodeFormatException:
            error = "Invalid %s zip code format." % zip_code
            logger.error('[API CREATE] Error on create zipcode. '
                         'zip_code=%s error=%s', zip_code, error)

            raise BadRequest(error)

        try:
            data = retriever.fetch()
            logger.info('[API CREATE] Create zipcode. zip_code=%s data=%s',
                        zip_code, data)

            zip_code_data = {
                'city': data.get('cidade'),
                'state': data.get('estado'),
                'zip_code': data.get('cep'),
                'address': data.get('logradouro'),
                'neighborhood': data.get('bairro')
            }

            try:
                zip_code_object = ZipCode.objects.create(**zip_code_data)
                logger.info('[API CREATE] Zipcode created. zip_code=%s', zip_code)
                return zip_code_object
            except IntegrityError as exception:
                error_message = exception[1]
                logger.error('[API CREATE] Error on create zipcode. '
                             'zip_code=%s error=%s', zip_code, error_message)

                raise BadRequest(error_message)
        except PostmonZipCodeNotFound:
            error = "Zipcode %s not found in Postmon." % zip_code
            logger.error('[API CREATE] Error on create zipcode. '
                         'zip_code=%s error=%s', zip_code, error)

            raise BadRequest(error)
    def test_zip_code_not_found(self):
        zip_code = self.zip_code_inexistent
        retriever = ZipCodeRetriever(zip_code)

        with self.assertRaises(PostmonZipCodeNotFound):
            retriever.fetch()