Código fonte de tests.unit.test_camara_deputados

import logging
import unittest
from datetime import datetime
from unittest.mock import patch

from legislei.houses.camara_deputados import CamaraDeputadosHandler
from legislei.models.relatorio import (Evento, Orgao, Parlamentar, Proposicao,
                                       Relatorio)
from legislei.SDKs.CamaraDeputados.entidades import Deputados
from legislei.SDKs.CamaraDeputados.exceptions import (
    CamaraDeputadosConnectionError, CamaraDeputadosError)
from legislei.SDKs.CamaraDeputados.mock import Mocker


[documentos]class TestCamaraDeputadosHandler(unittest.TestCase):
[documentos] def setUp(self): self.dep = CamaraDeputadosHandler() logging.disable(logging.CRITICAL)
[documentos] def tearDown(self): logging.disable(logging.NOTSET)
[documentos] def test_obter_parlamentares(self): def fakeObterDeputados(): yield [ { 'nome': 'CESAR DA SILVA', 'id': '1', 'siglaPartido': 'P1', 'siglaUf': 'UF', 'urlFoto': 'foto', }, { 'nome': 'FULANO PESSOA', 'id': '2', 'siglaPartido': 'P2', 'siglaUf': 'UF', 'urlFoto': 'foto2', } ] yield [ { 'nome': 'SICRANO PINTO', 'id': '3', 'siglaPartido': 'P1', 'siglaUf': 'UF2', 'urlFoto': 'foto3', } ] expected = [ Parlamentar( nome='CESAR DA SILVA', id='1', partido='P1', uf='UF', foto='foto', cargo='BR1' ), Parlamentar( nome='FULANO PESSOA', id='2', partido='P2', uf='UF', foto='foto2', cargo='BR1' ), Parlamentar( nome='SICRANO PINTO', id='3', partido='P1', uf='UF2', foto='foto3', cargo='BR1' ) ] mock = Mocker(self.dep.dep) mock.add_response('obterTodosDeputados', fakeObterDeputados()) actual_response = self.dep.obter_parlamentares() self.assertEqual(actual_response, expected)
[documentos] def test_obter_parlamentar_success(self): expected = Parlamentar( nome='CESAR DA SILVA', id='1', partido='P1', uf='UF', foto='foto', cargo='BR1' ) mock = Mocker(self.dep.dep) mock.add_response('obterDeputado', { 'id': '1', 'ultimoStatus': { 'nome': 'CESAR DA SILVA', 'siglaPartido': 'P1', 'siglaUf': 'UF', 'urlFoto': 'foto' } }) actual_response = self.dep.obter_parlamentar("1") self.assertEqual(actual_response, expected)
[documentos] def test_obter_parlamentar_invalid_id(self): mock = Mocker(self.dep.dep) mock.add_exception('obterDeputado', CamaraDeputadosConnectionError("url", 400)) actual_response = self.dep.obter_parlamentar("invalid") self.assertIsNone(actual_response)
[documentos] def test_add_attended_events(self): events_attended = [ Evento( id='3', data_inicial=self.dep.helper.get_brt(datetime(2019, 12, 10)), data_final=self.dep.helper.get_brt(datetime(2019, 12, 17)) ), Evento( id='4', data_inicial=self.dep.helper.get_brt(datetime(2019, 12, 10)), data_final=self.dep.helper.get_brt(datetime(2019, 12, 17)) ) ] mock_ev = Mocker(self.dep.helper.ev) mock_prop = Mocker(self.dep.helper.prop) mock_ev.add_response("obterPautaEvento", [ { 'codRegime': '123', 'proposicao_': { 'id': '11' } }, { 'codRegime': '123', 'proposicao_': { 'id': '12' } }, ]) mock_ev.add_exception("obterPautaEvento", CamaraDeputadosError) mock_prop.add_response("obterProposicao", { 'id': '11', 'nome': 'Proposição I', 'ementa': 'Proposição I', 'numero': '11', 'ano': 2019 }) mock_prop.add_exception("obterProposicao", CamaraDeputadosError) mock_prop.add_response("obterVotacoesProposicao", [{ 'data': '15/12/2019', 'hora': '12:00', 'resumo': 'Votação 1', 'votos': [ {'id': '23456', 'voto': 'Não'}, {'id': '12345', 'voto': 'Sim'}, {'id': '34567', 'voto': 'Abstenção'}, ] }]) mock_prop.add_response("obterVotacoesProposicao", [{ 'data': '16/12/2019', 'hora': '12:00', 'resumo': 'Votação 2', 'votos': [ {'id': '23456', 'voto': 'Sim'}, {'id': '12345', 'voto': 'Não'}, {'id': '34567', 'voto': 'Abstenção'}, ] }]) self.dep.relatorio = Relatorio( parlamentar=Parlamentar(id='12345') ) self.dep._add_attended_events(events_attended) self.assertEqual(self.dep.relatorio.eventos_presentes, [ Evento( id='3', data_inicial=self.dep.helper.get_brt(datetime(2019, 12, 10)), data_final=self.dep.helper.get_brt(datetime(2019, 12, 17)), presenca=0, pautas=[ Proposicao( id='11', numero='11', ementa='Proposição I', pauta='Votação 1 de Proposição I', voto='Sim' ) ] ), Evento( id='4', data_inicial=self.dep.helper.get_brt(datetime(2019, 12, 10)), data_final=self.dep.helper.get_brt(datetime(2019, 12, 17)), presenca=0, pautas=[] ) ])
[documentos] def test_add_absent_events(self): absent_events = [ Evento( id='1', presenca=2, orgaos=[Orgao(nome='Órgão 1', apelido='')] ), Evento( id='2', presenca=3, orgaos=[Orgao(nome='Órgão 1', apelido='')] ), Evento( id='5', presenca=1, orgaos=[Orgao(nome='Órgão 4', apelido='')] ), Evento( id='6', presenca=2, orgaos=[Orgao(nome='Órgão 4', apelido='PLEN')] ), ] self.dep.relatorio = Relatorio() self.dep._add_absent_events(absent_events) self.assertEqual(self.dep.relatorio.eventos_ausentes, absent_events) absent_events.pop(2) self.assertEqual(self.dep.relatorio.eventos_previstos, absent_events) self.assertEqual(self.dep.relatorio.eventos_ausentes_esperados_total, 3)