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)
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)