Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 30 additions & 22 deletions src/tests/test_dte_constants.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,34 @@
from __future__ import annotations

import unittest
from typing import ClassVar

from cl_sii.dte import constants # noqa: F401
from cl_sii.dte.constants import TipoDte
from cl_sii.dte import constants


class TipoDteTest(unittest.TestCase):
def test_members(self) -> None:
self.assertSetEqual(
{x for x in TipoDte},
{
TipoDte.FACTURA_ELECTRONICA,
TipoDte.FACTURA_NO_AFECTA_O_EXENTA_ELECTRONICA,
TipoDte.LIQUIDACION_FACTURA_ELECTRONICA,
TipoDte.FACTURA_COMPRA_ELECTRONICA,
TipoDte.GUIA_DESPACHO_ELECTRONICA,
TipoDte.NOTA_DEBITO_ELECTRONICA,
TipoDte.NOTA_CREDITO_ELECTRONICA,
},
)
TipoDte: ClassVar[type[constants.TipoDte]]

@classmethod
def setUpClass(cls) -> None:
super().setUpClass()

cls.TipoDte = constants.TipoDte

def test_enum_member_value_types(self) -> None:
expected_type = int
for member in self.TipoDte:
with self.subTest(name=member.name):
self.assertIsInstance(member.value, expected_type)

def test_enum_members_are_also_integers(self) -> None:
for member in self.TipoDte:
with self.subTest(name=member.name):
self.assertEqual(int(member.value), member)
self.assertIsInstance(member, int)

def test_FACTURA_ELECTRONICA(self) -> None:
value = TipoDte.FACTURA_ELECTRONICA
value = self.TipoDte.FACTURA_ELECTRONICA

self.assertEqual(value.name, 'FACTURA_ELECTRONICA')
self.assertEqual(value.value, 33)
Expand All @@ -38,7 +46,7 @@ def test_FACTURA_ELECTRONICA(self) -> None:
self.assertEqual(result, expected)

def test_FACTURA_NO_AFECTA_O_EXENTA_ELECTRONICA(self) -> None:
value = TipoDte.FACTURA_NO_AFECTA_O_EXENTA_ELECTRONICA
value = self.TipoDte.FACTURA_NO_AFECTA_O_EXENTA_ELECTRONICA

self.assertEqual(value.name, 'FACTURA_NO_AFECTA_O_EXENTA_ELECTRONICA')
self.assertEqual(value.value, 34)
Expand All @@ -56,7 +64,7 @@ def test_FACTURA_NO_AFECTA_O_EXENTA_ELECTRONICA(self) -> None:
self.assertTrue(result is expected)

def test_LIQUIDACION_FACTURA_ELECTRONICA(self) -> None:
value = TipoDte.LIQUIDACION_FACTURA_ELECTRONICA
value = self.TipoDte.LIQUIDACION_FACTURA_ELECTRONICA

self.assertEqual(value.name, 'LIQUIDACION_FACTURA_ELECTRONICA')
self.assertEqual(value.value, 43)
Expand All @@ -74,7 +82,7 @@ def test_LIQUIDACION_FACTURA_ELECTRONICA(self) -> None:
self.assertEqual(result, expected)

def test_FACTURA_COMPRA_ELECTRONICA(self) -> None:
value = TipoDte.FACTURA_COMPRA_ELECTRONICA
value = self.TipoDte.FACTURA_COMPRA_ELECTRONICA

self.assertEqual(value.name, 'FACTURA_COMPRA_ELECTRONICA')
self.assertEqual(value.value, 46)
Expand All @@ -92,7 +100,7 @@ def test_FACTURA_COMPRA_ELECTRONICA(self) -> None:
self.assertTrue(result is expected)

def test_GUIA_DESPACHO_ELECTRONICA(self) -> None:
value = TipoDte.GUIA_DESPACHO_ELECTRONICA
value = self.TipoDte.GUIA_DESPACHO_ELECTRONICA

self.assertEqual(value.name, 'GUIA_DESPACHO_ELECTRONICA')
self.assertEqual(value.value, 52)
Expand All @@ -110,7 +118,7 @@ def test_GUIA_DESPACHO_ELECTRONICA(self) -> None:
self.assertTrue(result is expected)

def test_NOTA_DEBITO_ELECTRONICA(self) -> None:
value = TipoDte.NOTA_DEBITO_ELECTRONICA
value = self.TipoDte.NOTA_DEBITO_ELECTRONICA

self.assertEqual(value.name, 'NOTA_DEBITO_ELECTRONICA')
self.assertEqual(value.value, 56)
Expand All @@ -128,7 +136,7 @@ def test_NOTA_DEBITO_ELECTRONICA(self) -> None:
self.assertTrue(result is expected)

def test_NOTA_CREDITO_ELECTRONICA(self) -> None:
value = TipoDte.NOTA_CREDITO_ELECTRONICA
value = self.TipoDte.NOTA_CREDITO_ELECTRONICA

self.assertEqual(value.name, 'NOTA_CREDITO_ELECTRONICA')
self.assertEqual(value.value, 61)
Expand Down
208 changes: 97 additions & 111 deletions src/tests/test_rcv_constants.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,36 @@
from __future__ import annotations

import unittest
from typing import ClassVar

from cl_sii.dte.constants import TipoDte # noqa: F401
from cl_sii.rcv import constants # noqa: F401
from cl_sii.rcv.constants import RcEstadoContable, RcTipoCompra, RcvKind, RcvTipoDocto, RvTipoVenta
from cl_sii.dte.constants import TipoDte
from cl_sii.rcv import constants


class RcvKindTest(unittest.TestCase):
def test_members(self) -> None:
self.assertSetEqual(
{x for x in RcvKind},
{
RcvKind.COMPRAS,
RcvKind.VENTAS,
},
)
RcvKind: ClassVar[type[constants.RcvKind]]

@classmethod
def setUpClass(cls) -> None:
super().setUpClass()

def test_values_type(self) -> None:
self.assertSetEqual({type(x.value) for x in RcvKind}, {str})
cls.RcvKind = constants.RcvKind

def test_enum_member_value_types(self) -> None:
expected_type = str
for member in self.RcvKind:
with self.subTest(name=member.name):
self.assertIsInstance(member.value, expected_type)

def test_enum_members_equal_names_and_values(self) -> None:
for member in self.RcvKind:
with self.subTest(name=member.name):
self.assertEqual(member.value, member.name)

def test_is_estado_contable_compatible(self) -> None:
RcvKind = self.RcvKind
RcEstadoContable = constants.RcEstadoContable

self.assertTrue(RcvKind.VENTAS.is_estado_contable_compatible(None))
self.assertTrue(RcvKind.COMPRAS.is_estado_contable_compatible(RcEstadoContable.REGISTRO))
self.assertTrue(RcvKind.COMPRAS.is_estado_contable_compatible(RcEstadoContable.NO_INCLUIR))
Expand All @@ -33,129 +45,103 @@ def test_is_estado_contable_compatible(self) -> None:


class RcEstadoContableTest(unittest.TestCase):
def test_members(self) -> None:
self.assertSetEqual(
{x for x in RcEstadoContable},
{
RcEstadoContable.REGISTRO,
RcEstadoContable.NO_INCLUIR,
RcEstadoContable.RECLAMADO,
RcEstadoContable.PENDIENTE,
},
)
RcEstadoContable: ClassVar[type[constants.RcEstadoContable]]

@classmethod
def setUpClass(cls) -> None:
super().setUpClass()

cls.RcEstadoContable = constants.RcEstadoContable

def test_values_type(self) -> None:
self.assertSetEqual({type(x.value) for x in RcEstadoContable}, {str})
def test_enum_member_value_types(self) -> None:
expected_type = str
for member in self.RcEstadoContable:
with self.subTest(name=member.name):
self.assertIsInstance(member.value, expected_type)

def test_enum_members_equal_names_and_values(self) -> None:
for member in self.RcEstadoContable:
with self.subTest(name=member.name):
self.assertEqual(member.value, member.name)


class RcTipoCompraTest(unittest.TestCase):
def test_members(self) -> None:
self.assertSetEqual(
{x for x in RcTipoCompra},
{
RcTipoCompra.DEL_GIRO,
RcTipoCompra.SUPERMERCADOS,
RcTipoCompra.BIENES_RAICES,
RcTipoCompra.ACTIVO_FIJO,
RcTipoCompra.IVA_USO_COMUN,
RcTipoCompra.IVA_NO_RECUPERABLE,
RcTipoCompra.NO_CORRESPONDE_INCLUIR,
},
)
RcTipoCompra: ClassVar[type[constants.RcTipoCompra]]

def test_values_type(self) -> None:
self.assertSetEqual({type(x.value) for x in RcTipoCompra}, {str})
@classmethod
def setUpClass(cls) -> None:
super().setUpClass()

cls.RcTipoCompra = constants.RcTipoCompra

def test_enum_member_value_types(self) -> None:
expected_type = str
for member in self.RcTipoCompra:
with self.subTest(name=member.name):
self.assertIsInstance(member.value, expected_type)

def test_enum_members_equal_names_and_values(self) -> None:
for member in self.RcTipoCompra:
with self.subTest(name=member.name):
self.assertEqual(member.value, member.name)


class RcvTipoDoctoTest(unittest.TestCase):
def test_members(self) -> None:
self.assertSetEqual(
{x for x in RcvTipoDocto},
{
RcvTipoDocto.FACTURA_INICIO,
RcvTipoDocto.FACTURA,
RcvTipoDocto.FACTURA_ELECTRONICA,
RcvTipoDocto.FACTURA_NO_AFECTA_O_EXENTA,
RcvTipoDocto.FACTURA_NO_AFECTA_O_EXENTA_ELECTRONICA,
RcvTipoDocto.FACTURA_COMPRA,
RcvTipoDocto.FACTURA_COMPRA_ELECTRONICA,
RcvTipoDocto.FACTURA_EXPORTACION,
RcvTipoDocto.FACTURA_EXPORTACION_ELECTRONICA,
#
RcvTipoDocto.NOTA_DEBITO,
RcvTipoDocto.NOTA_DEBITO_ELECTRONICA,
RcvTipoDocto.NOTA_CREDITO,
RcvTipoDocto.NOTA_CREDITO_ELECTRONICA,
RcvTipoDocto.NOTA_DEBITO_EXPORTACION,
RcvTipoDocto.NOTA_DEBITO_EXPORTACION_ELECTRONICA,
RcvTipoDocto.NOTA_CREDITO_EXPORTACION,
RcvTipoDocto.NOTA_CREDITO_EXPORTACION_ELECTRONICA,
#
RcvTipoDocto.LIQUIDACION_FACTURA,
RcvTipoDocto.LIQUIDACION_FACTURA_ELECTRONICA,
#
RcvTipoDocto.TOTAL_OP_DEL_MES_BOLETA_AFECTA,
RcvTipoDocto.TOTAL_OP_DEL_MES_BOLETA_EXENTA,
RcvTipoDocto.TOTAL_OP_DEL_MES_BOLETA_EXENTA_ELECTR,
RcvTipoDocto.TOTAL_OP_DEL_MES_BOLETA_ELECTR,
#
RcvTipoDocto.TIPO_47,
RcvTipoDocto.TIPO_48,
RcvTipoDocto.TIPO_102,
RcvTipoDocto.TIPO_103,
RcvTipoDocto.TIPO_105,
RcvTipoDocto.TIPO_108,
RcvTipoDocto.TIPO_109,
RcvTipoDocto.TIPO_901,
RcvTipoDocto.TIPO_902,
RcvTipoDocto.TIPO_903,
RcvTipoDocto.TIPO_904,
RcvTipoDocto.TIPO_905,
RcvTipoDocto.TIPO_906,
RcvTipoDocto.TIPO_907,
RcvTipoDocto.TIPO_909,
RcvTipoDocto.TIPO_910,
RcvTipoDocto.TIPO_911,
RcvTipoDocto.TIPO_914,
RcvTipoDocto.TIPO_919,
RcvTipoDocto.TIPO_920,
RcvTipoDocto.TIPO_922,
RcvTipoDocto.TIPO_924,
},
)
RcvTipoDocto: ClassVar[type[constants.RcvTipoDocto]]

@classmethod
def setUpClass(cls) -> None:
super().setUpClass()

cls.RcvTipoDocto = constants.RcvTipoDocto

def test_values_type(self) -> None:
self.assertSetEqual({type(x.value) for x in RcvTipoDocto}, {int})
def test_enum_member_value_types(self) -> None:
expected_type = int
for member in self.RcvTipoDocto:
with self.subTest(name=member.name):
self.assertIsInstance(member.value, expected_type)

def test_enum_members_are_also_integers(self) -> None:
for member in self.RcvTipoDocto:
with self.subTest(name=member.name):
self.assertEqual(int(member.value), member)
self.assertIsInstance(member, int)

def test_of_some_member(self) -> None:
value = RcvTipoDocto.FACTURA_ELECTRONICA
value = self.RcvTipoDocto.FACTURA_ELECTRONICA

self.assertEqual(value.name, 'FACTURA_ELECTRONICA')
self.assertEqual(value.value, 33)

def test_as_tipo_dte(self) -> None:
self.assertEqual(
RcvTipoDocto.FACTURA_ELECTRONICA.as_tipo_dte(),
self.RcvTipoDocto.FACTURA_ELECTRONICA.as_tipo_dte(),
TipoDte.FACTURA_ELECTRONICA,
)

with self.assertRaises(ValueError) as cm:
RcvTipoDocto.FACTURA.as_tipo_dte()
self.RcvTipoDocto.FACTURA.as_tipo_dte()
self.assertEqual(
cm.exception.args, ("There is no equivalent 'TipoDte' for 'RcvTipoDocto.FACTURA'.",)
)


class RvTipoVentaTest(unittest.TestCase):
def test_members(self) -> None:
self.assertSetEqual(
{x for x in RvTipoVenta},
{
RvTipoVenta.DEL_GIRO,
RvTipoVenta.BIENES_RAICES,
RvTipoVenta.ACTIVO_FIJO,
},
)
RvTipoVenta: ClassVar[type[constants.RvTipoVenta]]

@classmethod
def setUpClass(cls) -> None:
super().setUpClass()

cls.RvTipoVenta = constants.RvTipoVenta

def test_enum_member_value_types(self) -> None:
expected_type = str
for member in self.RvTipoVenta:
with self.subTest(name=member.name):
self.assertIsInstance(member.value, expected_type)

def test_values_type(self) -> None:
self.assertSetEqual({type(x.value) for x in RvTipoVenta}, {str})
def test_enum_members_equal_names_and_values(self) -> None:
for member in self.RvTipoVenta:
with self.subTest(name=member.name):
self.assertEqual(member.value, member.name)
23 changes: 19 additions & 4 deletions src/tests/test_rtc_constants.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,29 @@
from __future__ import annotations

import unittest
from typing import ClassVar

from cl_sii.rtc.constants import TIPO_DTE_CEDIBLES
from cl_sii.dte.constants import TipoDte
from cl_sii.rtc import constants


class TipoDteCediblesTest(unittest.TestCase):
# For 'TIPO_DTE_CEDIBLES'
"""
Tests for `TIPO_DTE_CEDIBLES`.
"""

TIPO_DTE_CEDIBLES: ClassVar[frozenset[TipoDte]]

@classmethod
def setUpClass(cls) -> None:
super().setUpClass()

cls.TIPO_DTE_CEDIBLES = constants.TIPO_DTE_CEDIBLES

def test_all_are_factura(self) -> None:
for element in TIPO_DTE_CEDIBLES:
self.assertTrue(element.is_factura)
for element in self.TIPO_DTE_CEDIBLES:
with self.subTest(name=element.name):
self.assertTrue(element.is_factura)

# TODO: implement test that check that the values correspond to those defined in
# XML type 'SiiDte:DTEFacturasType' in official schema 'SiiTypes_v10.xsd'.
Loading