示例#1
0
 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()
示例#2
0
    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=[]))
示例#3
0
    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]))
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
 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()
示例#7
0
    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
        )
示例#8
0
    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()])
            ]
        )
示例#9
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)
示例#10
0
    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)
            ]
        )
示例#11
0
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()