#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of facho. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. """Tests for `facho` package.""" import pytest from facho import fe def test_adicionar_devengado_Basico(): nomina = fe.nomina.DIANNominaIndividual() nomina.adicionar_devengado(fe.nomina.DevengadoBasico( dias_trabajados = 30, sueldo_trabajado = fe.nomina.Amount(1_000_000) )) xml = nomina.toFachoXML() assert xml.get_element_attribute('/fe:NominaIndividual/Devengados/Basico', 'DiasTrabajados') == '30' assert xml.get_element_attribute('/fe:NominaIndividual/Devengados/Basico', 'SueldoTrabajado') == '1000000.0' def test_adicionar_devengado_transporte(): nomina = fe.nomina.DIANNominaIndividual() nomina.adicionar_devengado(fe.nomina.DevengadoTransporte( auxilio_transporte = fe.nomina.Amount(2_000_000) )) xml = nomina.toFachoXML() assert xml.get_element_attribute('/fe:NominaIndividual/Devengados/Transporte', 'AuxilioTransporte') == '2000000.0' def test_adicionar_devengado_transporte_muchos(): nomina = fe.nomina.DIANNominaIndividual() nomina.adicionar_devengado(fe.nomina.DevengadoTransporte( auxilio_transporte = fe.nomina.Amount(2_000_000) )) nomina.adicionar_devengado(fe.nomina.DevengadoTransporte( auxilio_transporte = fe.nomina.Amount(3_000_000) )) xml = nomina.toFachoXML() print(xml) assert str(xml) == """""" def test_adicionar_deduccion_salud(): nomina = fe.nomina.DIANNominaIndividual() nomina.adicionar_deduccion(fe.nomina.DeduccionSalud( porcentaje = fe.nomina.Amount(19), deduccion = fe.nomina.Amount(1000) )) xml = nomina.toFachoXML() print(xml) assert str(xml) == """""" def test_nomina_obligatorios_segun_anexo_tecnico(): nomina = fe.nomina.DIANNominaIndividual() errors = nomina.validate() assert_error(errors, 'se requiere Periodo') assert_error(errors, 'se requiere DevengadoBasico') assert_error(errors, 'se requiere DeduccionSalud') assert_error(errors, 'se requiere DeduccionFondoPension') def assert_error(errors, msg): for error in errors: if str(error) == msg: return True raise "wants error: %s" % (msg)