예제 #1
0
def test_service_getter():
    service = Service.get(40215)
    assert service.id == 104707
    assert service.code == '40215'
    assert service.description == "SEDEX 10"
    assert service.category == "SERVICO_COM_RESTRICAO"
    assert Service.get(service) == service
예제 #2
0
def test_package_weight_validation():
    posting.Package.validate(
        posting.Package.TYPE_BOX,
        12, 10, 20,
        service=Service.get(SERVICE_SEDEX),
        weight=10000,
    )

    posting.Package.validate(
        posting.Package.TYPE_BOX,
        12, 10, 20,
        service=Service.get(10065),  # 10065 - service with no max weight
        weight=50000,
    )
예제 #3
0
def test_fail_invalid_declared_value_in_pac():
    service = Service.get(SERVICE_PAC)
    with pytest.raises(MaximumDeclaredValueError):
        service.validate_declared_value(service.max_declared_value + 1)

    with pytest.raises(MinimumDeclaredValueError):
        service.validate_declared_value(service.min_declared_value - 1)
예제 #4
0
def test_fail_package_weight_validation():
    with pytest.raises(exceptions.InvalidMaxPackageWeightError):
        posting.Package.validate(
            posting.Package.TYPE_BOX,
            12, 10, 20,
            service=Service.get(SERVICE_SEDEX),
            weight=50000,
        )
예제 #5
0
def test_shipping_label_with_min_declared_value_sedex(posting_card, sender_address, receiver_address, package):
    service = Service.get(SERVICE_SEDEX)
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=service,
        package=package,
        tracking_code="PD12345678 BR",
        value=Decimal("0"),
        extra_services=[EXTRA_SERVICE_VD_SEDEX],
    )
    assert shipping_label.value == Decimal("19.50")
예제 #6
0
def test_shipping_label_with_declared_value(extra_service_vd, posting_card, sender_address, receiver_address, package):
    service = Service.get(SERVICE_SEDEX)
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=service,
        package=package,
        tracking_code="PD12345678 BR",
        value=service.max_declared_value - Decimal("1.00"),
        extra_services=[extra_service_vd],
    )
    assert ExtraService.get(extra_service_vd) in shipping_label.extra_services
예제 #7
0
def test_basic_default_shipping_label(posting_card, sender_address, receiver_address, package):
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=4162,  # SERVICE_SEDEX_CODE
        package=package,
        tracking_code="PD12345678 BR",
    )

    assert shipping_label.service == Service.get(SERVICE_SEDEX)
    assert shipping_label.tracking_code.code == "PD123456785BR"
    assert len(shipping_label.extra_services) == 1
예제 #8
0
def test_declared_value_without_insurance_extra_service(
        posting_list, shipping_label):
    shipping_label.real_value = 10.29
    posting_list.add_shipping_label(shipping_label)
    serializer = PostingListSerializer()
    document = serializer.get_document(posting_list)
    serializer.validate(document)
    xml = serializer.get_xml(document)
    assert shipping_label.service == Service.get(SERVICE_PAC)
    assert b"<codigo_servico_adicional>19</codigo_servico_adicional>" not in xml
    assert b"<codigo_servico_adicional>64</codigo_servico_adicional>" not in xml
    assert b"<codigo_servico_adicional>65</codigo_servico_adicional>" not in xml
    assert b"<valor_declarado>000,00</valor_declarado>" in xml
예제 #9
0
def test_posted_shipping_label(posting_card, sender_address, receiver_address, package, receipt):
    service = Service.get(SERVICE_SEDEX)
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=service,
        package=package,
        tracking_code="PD12345678 BR",
        receipt=receipt,
    )
    assert shipping_label.receipt is not None
    assert shipping_label.posted
예제 #10
0
def test_shipping_label_with_declared_value(posting_card, sender_address, receiver_address, package):
    service = Service.get(SERVICE_SEDEX)
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=service,
        package=package,
        tracking_code="PD12345678 BR",
        value=service.max_declared_value - Decimal("1.00"),
        extra_services=[EXTRA_SERVICE_VD],
    )
    assert ExtraService.get(EXTRA_SERVICE_VD) in shipping_label.extra_services
예제 #11
0
def test_shipping_label_with_min_declared_value_sedex(posting_card, sender_address, receiver_address, package):
    service = Service.get(SERVICE_SEDEX)
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=service,
        package=package,
        tracking_code="PD12345678 BR",
        value=Decimal("0"),
        extra_services=[EXTRA_SERVICE_VD],
    )
    assert shipping_label.value == Decimal("18.50")
예제 #12
0
def test_basic_default_shipping_label(posting_card, sender_address, receiver_address, package):
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=4162,  # SERVICE_SEDEX_CODE
        package=package,
        tracking_code="PD12345678 BR",
    )

    assert shipping_label.service == Service.get(SERVICE_SEDEX)
    assert shipping_label.tracking_code.code == "PD123456785BR"
    assert len(shipping_label.extra_services) == 1
예제 #13
0
def test_fail_shipping_label_with_invalid_declared_value(posting_card, sender_address, receiver_address, package):
    service = Service.get(SERVICE_SEDEX)
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=service,
        package=package,
        tracking_code="PD12345678 BR",
        value=service.max_declared_value + Decimal("1.00"),
    )

    with pytest.raises(exceptions.MaximumDeclaredValueError):
        shipping_label.add_extra_service(ExtraService.get(EXTRA_SERVICE_VD))
예제 #14
0
def test_fail_shipping_label_with_invalid_declared_value(posting_card, sender_address, receiver_address, package):
    service = Service.get(SERVICE_SEDEX)
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=service,
        package=package,
        tracking_code="PD12345678 BR",
        value=service.max_declared_value + Decimal("1.00"),
    )

    with pytest.raises(exceptions.MaximumDeclaredValueError):
        shipping_label.add_extra_service(ExtraService.get(EXTRA_SERVICE_VD_SEDEX))
예제 #15
0
def test_posted_shipping_label(
    posting_card,
    sender_address,
    receiver_address,
    package,
    receipt
):
    service = Service.get(SERVICE_SEDEX)
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=service,
        package=package,
        tracking_code="PD12345678 BR",
        receipt=receipt
    )
    assert shipping_label.receipt is not None
    assert shipping_label.posted
예제 #16
0
def test_basic_shipping_label(posting_card, sender_address, receiver_address,
                              tracking_code, package):
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=SERVICE_SEDEX,
        extra_services=[EXTRA_SERVICE_AR],
        tracking_code=tracking_code,
        logo=os.path.join(FIXTURESDIR, "test_logo.jpg"),
        order="123",
        invoice_number="321",
        invoice_series="A1",
        invoice_type="",
        package=package,
        text="Hello World!",
        latitude=-25.4131980,
        longitude=-49.2584896,
    )

    assert shipping_label.posting_card == posting_card
    assert shipping_label.sender == sender_address
    assert shipping_label.receiver == receiver_address

    assert shipping_label.service == Service.get(SERVICE_SEDEX)
    assert shipping_label.get_service_name() == "SEDEX"

    assert shipping_label.extra_services == [
        ExtraService.get(EXTRA_SERVICE_RR),
        ExtraService.get(EXTRA_SERVICE_AR)
    ]

    assert shipping_label.tracking_code == tracking_code
    assert shipping_label.get_tracking_code().replace(" ", "") == str(
        shipping_label.tracking_code)

    assert isinstance(shipping_label.logo, Image)

    # noinspection PyUnresolvedReferences
    assert shipping_label.logo.filename == os.path.join(
        FIXTURESDIR, "test_logo.jpg")

    assert shipping_label.order == "123"
    assert shipping_label.get_order() == "123"

    assert shipping_label.invoice_number == "321"
    assert shipping_label.get_invoice() == "321"

    assert shipping_label.get_contract_number() == "9911222777"
    assert shipping_label.get_package_sequence() == "{}/{}".format(
        *shipping_label.package.sequence)
    assert shipping_label.get_weight() == "{}g".format(
        shipping_label.package.weight)
    assert shipping_label.package.posting_list_volumetric_weight == Decimal(
        "0.00")

    assert shipping_label.text == "Hello World!"

    assert shipping_label.latitude == -25.4131980
    assert shipping_label.longitude == -49.2584896

    assert shipping_label.posting_list_group == 0

    assert shipping_label.get_symbol_filename().endswith("/express.gif")
    assert isinstance(shipping_label.symbol, Image)

    assert len(shipping_label.get_datamatrix_info()
               ) == 164  # datamatrix info size accordingly with documentation
    assert shipping_label.get_sender_data().count("<br/>") >= 2
    assert shipping_label.get_receiver_data().count("<br/>") >= 2

    assert repr(shipping_label) == "<ShippingLabel tracking='{!s}'>".format(
        shipping_label.tracking_code)
예제 #17
0
def test_request_tracking_codes(client, user):
    result = client.request_tracking_codes(user,
                                           Service.get(SERVICE_SEDEX),
                                           quantity=10)
    assert len(result) == 10
    assert len(result[0].code) == 13
예제 #18
0
def test_calculate_delivery_time_service_not_allowed_for_path(client):
    expected_delivery_time = 0
    delivery_time = client.calculate_delivery_time(Service.get(SERVICE_PAC),
                                                   '01311300', '01311300')
    assert expected_delivery_time == int(delivery_time)
예제 #19
0
def test_calculate_delivery_time(client):
    expected_delivery_time = 1
    delivery_time = client.calculate_delivery_time(Service.get(SERVICE_SEDEX),
                                                   '07192100', '80030001')
    assert expected_delivery_time == int(delivery_time)
예제 #20
0
def test_valid_insurance_code(insurance_code):
    service = Service.get(SERVICE_PAC)
    assert service.validate_insurance_declared_value(Decimal("0.00"),
                                                     insurance_code) is True
예제 #21
0
def test_fail_invalid_insurance_code(insurance_code):
    service = Service.get(SERVICE_PAC)
    with pytest.raises(InvalidServiceDeclaredValue):
        service.validate_insurance_declared_value(Decimal("10.00"),
                                                  insurance_code)
예제 #22
0
def test_fail_package_weight_validation():
    with pytest.raises(exceptions.InvalidMaxPackageWeightError):
        posting.Package.validate(posting.Package.TYPE_BOX, 12, 10, 20, service=Service.get(SERVICE_SEDEX), weight=50000)
예제 #23
0
def test_basic_shipping_label(posting_card, sender_address, receiver_address, tracking_code, package):
    shipping_label = posting.ShippingLabel(
        posting_card=posting_card,
        sender=sender_address,
        receiver=receiver_address,
        service=SERVICE_SEDEX,
        extra_services=[EXTRA_SERVICE_AR],
        tracking_code=tracking_code,
        logo=os.path.join(FIXTURESDIR, "test_logo.jpg"),
        order="123",
        invoice_number="321",
        invoice_series="A1",
        invoice_type="",
        package=package,
        text="Hello World!",
        latitude=-25.4131980,
        longitude=-49.2584896,
    )

    assert shipping_label.posting_card == posting_card
    assert shipping_label.sender == sender_address
    assert shipping_label.receiver == receiver_address

    assert shipping_label.service == Service.get(SERVICE_SEDEX)
    assert shipping_label.get_service_name() == "SEDEX"

    assert shipping_label.extra_services == [ExtraService.get(EXTRA_SERVICE_RR),
                                             ExtraService.get(EXTRA_SERVICE_AR)]

    assert shipping_label.tracking_code == tracking_code
    assert shipping_label.get_tracking_code().replace(" ", "") == str(shipping_label.tracking_code)

    assert isinstance(shipping_label.logo, Image)

    # noinspection PyUnresolvedReferences
    assert shipping_label.logo.filename == os.path.join(FIXTURESDIR, "test_logo.jpg")

    assert shipping_label.order == "123"
    assert shipping_label.get_order() == "123"

    assert shipping_label.invoice_number == "321"
    assert shipping_label.get_invoice() == "321"

    assert shipping_label.get_contract_number() == "9911222777"
    assert shipping_label.get_package_sequence() == "{}/{}".format(*shipping_label.package.sequence)
    assert shipping_label.get_weight() == "{}g".format(shipping_label.package.weight)
    assert shipping_label.package.posting_list_volumetric_weight == Decimal("0.00")

    assert shipping_label.text == "Hello World!"

    assert shipping_label.latitude == -25.4131980
    assert shipping_label.longitude == -49.2584896

    assert shipping_label.posting_list_group == 0

    assert shipping_label.get_symbol_filename().endswith("/express.gif")
    assert isinstance(shipping_label.symbol, Image)

    assert len(shipping_label.get_datamatrix_info()) == 164  # datamatrix info size accordingly with documentation
    assert shipping_label.get_sender_data().count("<br/>") >= 2
    assert shipping_label.get_receiver_data().count("<br/>") >= 2

    assert repr(shipping_label) == "<ShippingLabel tracking='{!s}'>".format(shipping_label.tracking_code)