def _prepare_tests_obter_todas_inscricoes_para_processar(self): inscricoes1 = Inscricoes( intervalo=7, parlamentares=[self.parlamentar1, self.parlamentar2]) inscricoes2 = Inscricoes(intervalo=14, parlamentares=[self.parlamentar1]) inscricoes3 = Inscricoes(intervalo=7, parlamentares=[]) inscricoes4 = Inscricoes(intervalo=28, parlamentares=[self.parlamentar3]) self.user1 = User(username='******', password='******', email='*****@*****.**', inscricoes=inscricoes1) self.user1.save() self.user2 = User(username='******', password='******', email='*****@*****.**', inscricoes=inscricoes2) self.user2.save() self.user3 = User(username='******', password='******', email='*****@*****.**', inscricoes=inscricoes3) self.user3.save() self.user4 = User(username='******', password='******', email='*****@*****.**', inscricoes=inscricoes4) self.user4.save() self.user5 = User(username='******', password='******', email='*****@*****.**').save()
def test_remover_inscricao(self): User(username='******', password='******', email='*****@*****.**', inscricoes=Inscricoes(intervalo=14, parlamentares=[self.parlamentar2])).save() Inscricao().remover_inscricao(self.parlamentar2.cargo, self.parlamentar2.id, '*****@*****.**') self.assertEqual( User.objects(username='******').first().inscricoes, Inscricoes(intervalo=14, parlamentares=[]))
def test_nova_inscricao_outra_inscricao(self, mock_obter_parlamentar): warnings.simplefilter("ignore") mock_obter_parlamentar.return_value = self.parlamentar1 User(username='******', password='******', email='*****@*****.**', inscricoes=Inscricoes(intervalo=14, parlamentares=[self.parlamentar2])).save() Inscricao().nova_inscricao(self.parlamentar1.cargo, self.parlamentar1.id, '*****@*****.**') self.assertEqual( User.objects(username='******').first().inscricoes, Inscricoes(intervalo=14, parlamentares=[self.parlamentar2, self.parlamentar1]))
def test_alterar_configs_invalida(self): User(username='******', password='******', email='*****@*****.**', inscricoes=Inscricoes(intervalo=7, parlamentares=[])).save() Inscricao().alterar_configs(30, '*****@*****.**') self.assertEqual( User.objects(username='******').first().inscricoes.intervalo, 7)
def test_obter_minhas_inscricoes_com_inscricoes(self): inscricoes = Inscricoes( intervalo=14, parlamentares=[self.parlamentar1, self.parlamentar2]) User(username='******', password='******', email='*****@*****.**', inscricoes=inscricoes).save() actual = Inscricao().obter_minhas_inscricoes('*****@*****.**') self.assertEqual(actual[0], [self.parlamentar1, self.parlamentar2]) self.assertEqual(actual[1], 14)
def nova_inscricao(self, cargo, parlamentar_id, email): user = User.objects(email=email) if not (user): raise UserDoesNotExist() user = user.first() parlamentar = obter_parlamentar(cargo, parlamentar_id) inscricoes = user.inscricoes if inscricoes: user.inscricoes.parlamentares.append(parlamentar) user.save() else: inscricao = Inscricoes(parlamentares=[parlamentar], intervalo=7) user.inscricoes = inscricao user.save()
def test_generate_reports_multiplos_parlamentares( self, mock_send_email ): brasilia_tz = pytz.timezone('America/Sao_Paulo') agora = datetime.now() data_final = datetime(agora.year, agora.month, agora.day) data_final = brasilia_tz.localize(data_final) data_inicial = data_final - timedelta(days=7) parlamentar1 = Parlamentar(id='1', cargo='BR1') parlamentar2 = Parlamentar(id='2', cargo='BR2') parlamentar3 = Parlamentar(id='3', cargo='BR1') relatorio1 = Relatorio( parlamentar=parlamentar1, data_final=data_final, data_inicial=data_inicial ).save().reload() relatorio2 = Relatorio( parlamentar=parlamentar2, data_final=data_final, data_inicial=data_inicial ).save().reload() relatorio3 = Relatorio( parlamentar=parlamentar3, data_final=data_final, data_inicial=data_inicial ).save().reload() mock_send_email.return_value = True user = [User( username='******', password='******', email='*****@*****.**', inscricoes=Inscricoes( parlamentares=[parlamentar1, parlamentar2, parlamentar3], intervalo=7 ) )] generate_reports(user, data_final=agora) mock_send_email.assert_called_once_with( "*****@*****.**", [relatorio1.to_dict(), relatorio2.to_dict(), relatorio3.to_dict()], dates=ANY )
def test_generate_reports_send_to_active_devices_only( self, mock_send_email, mock_send_push_notification ): brasilia_tz = pytz.timezone('America/Sao_Paulo') agora = datetime(2019, 6, 29) data_final = datetime(agora.year, agora.month, agora.day) data_final = brasilia_tz.localize(data_final) parlamentar = Parlamentar(id='1', cargo='BR1') relatorio = Relatorio( parlamentar=parlamentar, data_final=data_final, data_inicial=data_final - timedelta(days=7) ).save().reload() mock_send_email.return_value = True users = [ User( username='******', password='******', email='*****@*****.**', inscricoes=Inscricoes( parlamentares=[parlamentar], intervalo=7 ), devices=[ UserDevice(id="device1", token="token1", name="name1", active=True), UserDevice(id="device2", token="token2", name="name2", active=False), UserDevice(id="device3", token="token3", name="name3", active=True), UserDevice(id="device4", token="token4", name="name4", active=False), ] ), ] generate_reports(users, data_final=agora) self.assertEqual(mock_send_push_notification.call_count, 2) mock_send_push_notification.assert_has_calls( [ call("token1", [relatorio.to_dict()]), call("token3", [relatorio.to_dict()]) ] )
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_generate_reports_multiplos_intervalos( self, mock_send_email ): brasilia_tz = pytz.timezone('America/Sao_Paulo') agora = datetime(2019, 6, 29) data_final = datetime(agora.year, agora.month, agora.day) data_final = brasilia_tz.localize(data_final) parlamentar1 = Parlamentar(id='1', cargo='BR1') relatorio1 = Relatorio( parlamentar=parlamentar1, data_final=data_final, data_inicial=data_final - timedelta(days=7) ).save().reload() relatorio2 = Relatorio( parlamentar=parlamentar1, data_final=data_final, data_inicial=data_final - timedelta(days=14) ).save().reload() relatorio3 = Relatorio( parlamentar=parlamentar1, data_final=data_final, data_inicial=data_final - timedelta(days=28) ).save().reload() mock_send_email.return_value = True users = [ User( username='******', password='******', email='*****@*****.**', inscricoes=Inscricoes( parlamentares=[parlamentar1], intervalo=7 ) ), User( username='******', password='******', email='*****@*****.**', inscricoes=Inscricoes( parlamentares=[parlamentar1], intervalo=14 ) ), User( username='******', password='******', email='*****@*****.**', inscricoes=Inscricoes( parlamentares=[parlamentar1], intervalo=28 ) ) ] generate_reports(users, data_final=agora) self.assertEqual(mock_send_email.call_count, 3) mock_send_email.assert_has_calls( [ call("*****@*****.**", [relatorio1.to_dict()], dates=ANY), call("*****@*****.**", [relatorio2.to_dict()], dates=ANY), call("*****@*****.**", [relatorio3.to_dict()], dates=ANY) ] )
def set_up_db(db): parlamentar_test = set_up_parlamentar() brasilia_tz = pytz.timezone('America/Sao_Paulo') orgaos_evento = [ Orgao(nome="ÓrgãoTeste", sigla="OT", cargo="None", apelido="OhTe") ] eventos_presentes = [ Evento(id="12345", nome="Evento teste", data_inicial=brasilia_tz.localize(datetime(2019, 1, 1)), data_final=brasilia_tz.localize(datetime(2019, 1, 1)), url="http://url.com", situacao="Encerrada", presenca=0, orgaos=orgaos_evento) ] eventos_ausentes = [ Evento(id="123", nome="Evento teste", data_inicial=brasilia_tz.localize(datetime(2019, 1, 1)), data_final=brasilia_tz.localize(datetime(2019, 1, 1)), url="http://url.com", situacao="Cancelada", presenca=1, orgaos=orgaos_evento) ] Relatorio( pk=ObjectId("5c264b5e3a5efd576ecaf48e"), parlamentar=parlamentar_test, proposicoes=[], data_inicial=brasilia_tz.localize(datetime(2018, 12, 31)), data_final=brasilia_tz.localize(datetime(2019, 1, 7)), orgaos=[], eventos_presentes=eventos_presentes, eventos_ausentes=eventos_ausentes, eventos_previstos=[], ).save() Avaliacoes( pk=ObjectId("5c5116f5c3acc80004eada0a"), email="*****@*****.**", parlamentar=parlamentar_test, avaliacao="1", avaliado={ "url": "url", "situacao": "Cancelada", "dataFinal": brasilia_tz.localize(datetime(2019, 1, 1)), "orgaos": [{ "sigla": "OT", "nome": "ÓrgãoTeste", "apelido": "OhTe", "cargo": None }], "dataInicial": brasilia_tz.localize(datetime(2019, 1, 1)), "presenca": 1, "nome": "Evento teste", "id": "123" }, relatorioId=ObjectId("5c264b5e3a5efd576ecaf48e"), ).save() inscricoes = Inscricoes(parlamentares=[parlamentar_test], intervalo=7) User.drop_collection() User( username="******", email="*****@*****.**", password= "******", inscricoes=inscricoes, devices=[ UserDevice(id="14", name="dispositivo", token="---token---", active=True, os="Android") ]).save()