Skip to content

Commit

Permalink
Merge branch 'master' into add-flake8
Browse files Browse the repository at this point in the history
  • Loading branch information
osantana committed Aug 12, 2016
2 parents 718dd10 + 909f702 commit 80b17a7
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
8 changes: 7 additions & 1 deletion correios/client.py
Expand Up @@ -18,7 +18,7 @@
from typing import Union, Sequence, List, Dict

from correios import xml_utils, DATADIR
from correios.exceptions import PostingListSerializerError
from correios.exceptions import PostingListSerializerError, TrackingCodesLimitExceededError
from .models.address import ZipAddress, ZipCode
from .models.posting import (NotFoundTrackingEvent, TrackingCode, PostingList, ShippingLabel,
TrackingEvent, EventStatus)
Expand Down Expand Up @@ -268,6 +268,7 @@ def get_xml(self, document) -> bytes:
class Correios:
PRODUCTION = "production"
TEST = "test"
MAX_TRACKING_CODES_PER_REQUEST = 50

# 'environment': ('url', 'ssl_verification')
sigep_urls = {
Expand Down Expand Up @@ -364,6 +365,11 @@ def get_tracking_code_events(self, tracking_list):
if isinstance(tracking_list, (str, TrackingCode)):
tracking_list = [tracking_list]

if len(tracking_list) > Correios.MAX_TRACKING_CODES_PER_REQUEST:
msg = '{} tracking codes requested exceeds the limit of {} stabilished by the Correios'
msg = msg.format(len(tracking_list), Correios.MAX_TRACKING_CODES_PER_REQUEST)
raise TrackingCodesLimitExceededError(msg)

tracking_codes = {}
for tracking_code in tracking_list:
tracking_code = TrackingCode.create(tracking_code)
Expand Down
4 changes: 4 additions & 0 deletions correios/exceptions.py
Expand Up @@ -89,6 +89,10 @@ class PostingListSerializerError(ClientError):
pass


class TrackingCodesLimitExceededError(ClientError):
pass


class RendererError(BaseCorreiosError):
pass

Expand Down
9 changes: 8 additions & 1 deletion tests/test_client.py
Expand Up @@ -16,7 +16,7 @@
import pytest

from correios.client import ModelBuilder, Correios, PostingListSerializer
from correios.exceptions import PostingListSerializerError
from correios.exceptions import PostingListSerializerError, TrackingCodesLimitExceededError
from correios.models.address import ZipCode
from correios.models.data import SERVICE_SEDEX10, SERVICE_SEDEX
from correios.models.posting import (NotFoundTrackingEvent, PostingList, ShippingLabel,
Expand Down Expand Up @@ -149,6 +149,13 @@ def test_get_tracking_code_object_not_found_by_correios():
assert event.status.status == 1


def test_get_tracking_codes_events_over_limit():
client = Correios(username="solidarium2", password="d5kgag", environment=Correios.TEST)
codes = ["DU05508759BR"] * 51
with pytest.raises(TrackingCodesLimitExceededError):
client.get_tracking_code_events(codes)


def test_builder_posting_card_status():
builder = ModelBuilder()
assert builder.build_posting_card_status("Normal") == PostingCard.ACTIVE
Expand Down

0 comments on commit 80b17a7

Please sign in to comment.