示例#1
0
    def test_get_attended_events(self):
        mock = Mocker(self.dep.ev)
        mock.add_response("obterDeputadosEvento", [{
            'id': '12345'
        }, {
            'id': '98765'
        }], "123")
        mock.add_response("obterDeputadosEvento", [{
            'id': '98765'
        }, {
            'id': '34567'
        }], "1234")
        mock.add_response("obterDeputadosEvento", [{
            'id': '12345'
        }, {
            'id': '98765'
        }], "12345")
        events = [{'id': '123'}, {'id': '1234'}, {'id': '12345'}]
        dep_id = '12345'

        actual_response = self.dep.get_attended_events(events, dep_id)

        self.assertEqual([{'id': '123'}, {'id': '12345'}], actual_response)

        mock.assert_no_pending_responses()
    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)
    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)
示例#4
0
    def test_get_commissions(self, mock_obterDataInicialEFinal):
        mock = Mocker(self.dep.dep)
        mock.add_response("obterOrgaosDeputado", [[{
            'nomeOrgao': 'Comissão A',
            'dataFim': None
        }, {
            'nomeOrgao': 'Comissão B',
            'dataFim': '2018-08-31'
        }, {
            'nomeOrgao': 'Comissão C',
            'dataFim': '2018-12-31'
        }]],
                          '1234',
                          dataInicio='2018-10-21',
                          dataFim='2018-10-28')
        mock_obterDataInicialEFinal.return_value = ('2018-10-21', '2018-10-28')

        actual_response = self.dep.get_commissions('1234',
                                                   datetime(2018, 10, 28))

        self.assertIn(Orgao(nome='Comissão A'), actual_response)
        self.assertIn(Orgao(nome='Comissão C'), actual_response)
        self.assertEqual(len(actual_response), 2)

        mock.assert_no_pending_responses()
        mock_obterDataInicialEFinal.assert_called_once_with(
            datetime(2018, 10, 28))
示例#5
0
    def test_get_expected_events(
        self,
        mock_obterDataInicialEFinal,
    ):
        events = [{
            'id': 1,
            'descricao': 'Evento 1'
        }, {
            'id': 2,
            'descricao': 'Evento 2'
        }, {
            'id': 3,
            'descricao': 'Evento 3'
        }]
        dep_id = '12345'
        mock = Mocker(self.dep.dep)
        mock.add_response("obterEventosDeputado", [events],
                          dep_id,
                          dataInicio='2018-10-21',
                          dataFim='2018-10-28')

        mock_obterDataInicialEFinal.return_value = ('2018-10-21', '2018-10-28')

        actual_response = self.dep.get_expected_events(dep_id,
                                                       datetime(2018, 10, 28))

        self.assertEqual(actual_response, [
            Evento(id='1', nome='Evento 1'),
            Evento(id='2', nome='Evento 2'),
            Evento(id='3', nome='Evento 3'),
        ])

        mock_obterDataInicialEFinal.assert_called_once_with(
            datetime(2018, 10, 28))
        mock.assert_no_pending_responses()
    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)
示例#7
0
    def test_get_event_program_program_none(self):
        mock = Mocker(self.dep.ev)
        mock.add_response("obterPautaEvento", None, "12345")

        actual_response = self.dep.get_event_program("12345")

        self.assertEqual(actual_response, [])
        mock.assert_no_pending_responses()
示例#8
0
    def test_get_event_program_fail_case(self):
        mock = Mocker(self.dep.ev)
        mock.add_exception("obterPautaEvento", CamaraDeputadosError, "12345")

        actual_response = self.dep.get_event_program("12345")

        self.assertEqual(actual_response, [{'error': True}])
        mock.assert_no_pending_responses()
示例#9
0
    def test_get_expected_events_fail_case(self):
        mock = Mocker(self.dep.dep)
        mock.add_exception("obterEventosDeputado", CamaraDeputadosError)

        actual_response = self.dep.get_expected_events("123",
                                                       datetime(2018, 10, 28))

        self.assertEqual(actual_response, [{'id': None}])
        mock.assert_no_pending_responses()
示例#10
0
    def test_get_commissions_fail_case(self):
        mock = Mocker(self.dep.dep)
        mock.add_exception('obterOrgaosDeputado',
                           CamaraDeputadosError('teste'))

        actual_response = self.dep.get_commissions('1234',
                                                   datetime(2018, 10, 28))

        self.assertEqual(actual_response, [{'nomeOrgao': None}])
        mock.assert_no_pending_responses()
示例#11
0
    def test_get_votes_fail_case(self):
        mock = Mocker(self.dep.prop)
        mock.add_exception("obterVotacoesProposicao", CamaraDeputadosError)

        actual_response = self.dep.get_votes('12345',
                                             proposition={
                                                 'tipo': 'PL',
                                                 'numero': '1',
                                                 'ano': '2019'
                                             },
                                             event_dates={
                                                 'data_inicial':
                                                 datetime(2019, 5, 12, 10),
                                                 'data_final':
                                                 datetime(2019, 5, 12, 14)
                                             })

        self.assertIsNone(actual_response[0])
        self.assertIsNone(actual_response[1])
        mock.assert_no_pending_responses()
    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=[])
        ])
示例#13
0
    def test_get_all_events(self, mock_obterDataInicialEFinal):
        mock = Mocker(self.dep.ev)
        mock.add_response(
            "obterTodosEventos",
            [[{
                'id': '123',
                'dataHoraInicio': '2018-10-24T10:00',
                'dataHoraFim': '2018-10-24T12:00',
                'situacao': 'Encerrada',
                'descricao': 'Sessão Ordinária',
                'uri': 'uri',
                'orgaos': [{
                    'nome': 'Plenário',
                    'apelido': 'PLEN'
                }]
            }, {
                'id': '1234',
                'dataHoraInicio': '2018-10-24T14:00',
                'dataHoraFim': '2018-10-24T18:45',
                'situacao': 'Encerrada',
                'descricao': 'Sessão Extraordinária',
                'uri': 'uri',
                'orgaos': [{
                    'nome': 'Plenário',
                    'apelido': 'PLEN'
                }]
            }],
             [{
                 'id':
                 '12345',
                 'dataHoraInicio':
                 '2018-10-25T10:00',
                 'dataHoraFim':
                 None,
                 'situacao':
                 'Cancelada',
                 'descricao':
                 'Sessão Ordinária',
                 'uri':
                 'uri',
                 'orgaos': [{
                     'nome': 'Comissão de Constituição e Justiça',
                     'apelido': 'CCJ'
                 }]
             }]],
            dataInicio='2018-10-21',
            dataFim='2018-10-28')
        mock_obterDataInicialEFinal.return_value = ('2018-10-21', '2018-10-28')

        actual_response = self.dep.get_all_events(datetime(2018, 10, 28))

        self.assertEqual([
            Evento(id='123',
                   data_inicial=self.dep.get_brt(datetime(2018, 10, 24, 10,
                                                          0)),
                   data_final=self.dep.get_brt(datetime(2018, 10, 24, 12, 0)),
                   situacao='Encerrada',
                   nome='Sessão Ordinária',
                   url='uri',
                   orgaos=[Orgao(nome='Plenário', apelido='PLEN')]),
            Evento(id='1234',
                   data_inicial=self.dep.get_brt(datetime(2018, 10, 24, 14,
                                                          0)),
                   data_final=self.dep.get_brt(datetime(2018, 10, 24, 18, 45)),
                   situacao='Encerrada',
                   nome='Sessão Extraordinária',
                   url='uri',
                   orgaos=[Orgao(nome='Plenário', apelido='PLEN')]),
            Evento(id='12345',
                   data_inicial=self.dep.get_brt(datetime(2018, 10, 25, 10,
                                                          0)),
                   data_final=None,
                   situacao='Cancelada',
                   nome='Sessão Ordinária',
                   url='uri',
                   orgaos=[
                       Orgao(nome='Comissão de Constituição e Justiça',
                             apelido='CCJ')
                   ]),
        ], actual_response)

        mock_obterDataInicialEFinal.assert_called_once_with(
            datetime(2018, 10, 28))
        mock.assert_no_pending_responses()
示例#14
0
    def test_get_propositions(
        self,
        mock_obterDataInicialEFinal,
    ):
        propositions = [
            {
                'id': '1',
                'ementa': 'Teste1'
            },
            {
                'id': '2',
                'ementa': 'Teste2'
            },
            {
                'id': '3',
                'ementa': 'Teste3'
            },
        ]
        mock = Mocker(self.dep.prop)
        mock.add_response("obterTodasProposicoes", [propositions],
                          idDeputadoAutor='123',
                          dataApresentacaoInicio='2018-10-21',
                          dataApresentacaoFim='2018-10-28')
        mock.add_response("obterAutoresProposicao", [{
            'nome': 'Fulano da Silva'
        }], "1")
        mock.add_response("obterAutoresProposicao", [{'nome': 'Sicrano'}], "2")
        mock.add_response("obterAutoresProposicao", [{
            'nome': 'Fulano da Silva'
        }], "3")
        mock.add_response("obterProposicao", propositions[0], "1")
        mock.add_response("obterProposicao", propositions[2], "3")
        mock_obterDataInicialEFinal.return_value = ('2018-10-21', '2018-10-28')
        assemblyman = Parlamentar()
        assemblyman.id = '123'
        assemblyman.nome = 'Fulano da Silva'

        actual_response = self.dep.get_propositions(assemblyman,
                                                    datetime(2018, 10, 28))

        self.assertEqual(2, len(actual_response))
        self.assertEqual('Teste1', actual_response[0]['ementa'])
        self.assertEqual('Teste3', actual_response[1]['ementa'])
        mock_obterDataInicialEFinal.assert_called_once_with(
            datetime(2018, 10, 28))
        mock.assert_no_pending_responses()
示例#15
0
    def test_get_votes(self, ):
        votings = [
            {
                'data':
                '12/5/2019',
                'hora':
                '12:00',
                'resumo':
                'Votação 1',
                'votos': [
                    {
                        'id': '23456',
                        'voto': 'Não'
                    },
                    {
                        'id': '12345',
                        'voto': 'Sim'
                    },
                    {
                        'id': '34567',
                        'voto': 'Abstenção'
                    },
                ]
            },
            {
                'data':
                '12/5/2019',
                'hora':
                '18:00',
                'resumo':
                'Votação 2',
                'votos': [
                    {
                        'id': '23456',
                        'voto': 'Sim'
                    },
                    {
                        'id': '12345',
                        'voto': 'Não'
                    },
                    {
                        'id': '34567',
                        'voto': 'Obstrução'
                    },
                ]
            },
        ]
        mock = Mocker(self.dep.prop)
        mock.add_response("obterVotacoesProposicao", votings)

        actual_response = self.dep.get_votes(
            '12345',
            proposition={
                'tipo': 'PL',
                'numero': '1',
                'ano': '2019'
            },
            event_dates={
                'data_inicial': self.dep.get_brt(datetime(2019, 5, 12, 10)),
                'data_final': self.dep.get_brt(datetime(2019, 5, 12, 14))
            })

        self.assertEqual(('Sim', 'Votação 1'), actual_response)
        mock.assert_no_pending_responses()
示例#16
0
    def test_get_event_program(self, ):
        ev_id = '1234'
        mock_ev = Mocker(self.dep.ev)
        mock_ev.add_response("obterPautaEvento", [
            {
                'codRegime': '123',
                'proposicao_': {
                    'id': '12345'
                }
            },
            {
                'codRegime': '123',
                'proposicao_': {
                    'id': '12345'
                }
            },
            {
                'codRegime': '987',
                'proposicao_': {
                    'id': '98765'
                }
            },
            {
                'codRegime': '987',
                'proposicao_': {
                    'id': '56789'
                }
            },
        ], ev_id)
        mock_prop = Mocker(self.dep.prop)
        mock_prop.add_response("obterProposicao", {'nome': 'Proposição I'},
                               "12345")
        mock_prop.add_response("obterProposicao", {'nome': 'Proposição II'},
                               "98765")
        mock_prop.add_exception("obterProposicao", CamaraDeputadosError,
                                "56789")

        actual_response = self.dep.get_event_program(ev_id)

        self.assertEqual(actual_response, [
            {
                'codRegime': '123',
                'proposicao_': {
                    'id': '12345'
                },
                'proposicao_detalhes': {
                    'nome': 'Proposição I'
                }
            },
            {
                'codRegime': '987',
                'proposicao_': {
                    'id': '98765'
                },
                'proposicao_detalhes': {
                    'nome': 'Proposição II'
                }
            },
            {
                'codRegime': '987',
                'proposicao_': {
                    'id': '56789'
                },
                'proposicao_detalhes': [{
                    'error': True
                }]
            },
        ])

        mock_ev.assert_no_pending_responses()
        mock_prop.assert_no_pending_responses()