Пример #1
0
    def test_generate_reports_one_obter_relatorio_fails(
        self,
        mock_Relatorios,
        mock_send_email
    ):
        class FakeRelatorios():
            def obter_relatorio(self, parlamentar, *args, **kwargs):
                if parlamentar == '2':
                    raise ModelError('msg')
                return {"nice": "JSON"}
        mock_Relatorios.side_effect = FakeRelatorios
        mock_send_email.return_value = True
        parlamentar1 = Parlamentar(id='1', cargo='BR1')
        parlamentar2 = Parlamentar(id='2', cargo='BR2')
        parlamentar3 = Parlamentar(id='3', cargo='BR1')
        user = [User(
            username='******',
            password='******',
            email='*****@*****.**',
            inscricoes=Inscricoes(
                parlamentares=[parlamentar1, parlamentar2, parlamentar3],
                intervalo=7
            )
        )]

        generate_reports(user)

        self.assertEqual(mock_Relatorios.call_count, 3)
        mock_send_email.assert_called_once_with(
            "*****@*****.**", [
                {"nice": "JSON"},
                {
                    'parlamentar': parlamentar2.to_dict(),
                    'orgaos': [],
                    'eventosPresentes': [],
                    'eventosPrevistos': [],
                    'eventosAusentes': [],
                    'proposicoes': [],
                    '_id': None
                },
                {"nice": "JSON"},
            ], dates=ANY)
Пример #2
0
    def test_send_push_notification_success(self, mock_urllib3):
        def assert_equal(actual, expected):
            self.assertEqual(actual, expected)

        data_inicial = datetime(2019, 10, 12)
        data_final = datetime(2019, 10, 19)
        parlamentar1 = Parlamentar(id='1', cargo='BR1', nome='AMANDA')
        relatorio1 = Relatorio(
            id="123",
            parlamentar=parlamentar1,
            data_final=data_final,
            data_inicial=data_inicial,
            proposicoes=[
                Proposicao(id="1"),
                Proposicao(id="2"),
                Proposicao(id="3"),
                Proposicao(id="4")
            ],
            eventos_presentes=[Evento(id="1"), Evento(id="2")],
            eventos_previstos=None,
            eventos_ausentes=[Evento(id="4"),
                              Evento(id="5"),
                              Evento(id="6")])
        expected_reports = [{
            "_id": "123",
            "parlamentar": parlamentar1.to_dict(),
            "mensagem": None,
            "dataInicial": str(data_inicial),
            "dataFinal": str(data_final),
            "orgaos": 0,
            "proposicoes": 4,
            "eventosPresentes": 2,
            "eventosAusentes": 3,
            "eventosPrevistos": 0,
            "presencaRelativa": "100.00%",
            "presencaTotal": "40.00%",
            "eventosAusentesEsperadosTotal": 0
        }]

        class FakePoolManager:
            def __init__(self, *args, **kwargs):
                pass

            def request(self, method, url, headers, body):
                class response():
                    status = 200
                    data = json.dumps({
                        'results': [{
                            'id': '123'
                        }]
                    }).encode('utf-8')

                assert_equal(method, "POST")
                assert_equal(url, "https://fcm.googleapis.com/fcm/send")
                assert_equal(
                    json.loads(body.decode('utf-8'))["data"]["reports"],
                    expected_reports)
                return response()

        mock_urllib3.side_effect = FakePoolManager

        reports = [relatorio1.to_dict()]
        result = send_push_notification("token", reports)

        self.assertTrue(mock_urllib3.called)
        self.assertTrue(result)
        self.assertEqual([relatorio1.to_dict()], reports)