import unittest
import warnings
from mongoengine import connect
from legislei.exceptions import ItemNotFound, ReportNotFound
from legislei.models.avaliacoes import Avaliacoes
from legislei.models.relatorio import Evento, Parlamentar, Relatorio
from legislei.services.avaliacoes import Avaliacao
[documentos]class TestAvaliacao(unittest.TestCase):
[documentos] def setUp(self):
connect('mongoenginetest', host='mongomock://localhost')
[documentos] def tearDown(self):
Avaliacoes.drop_collection()
[documentos] def test_avaliar_sucesso(self):
parlamentar = Parlamentar(id='id', cargo='BR1')
evento = Evento(id='123', nome='Evento')
relatorio = Relatorio(
parlamentar=parlamentar,
data_inicial='2019-01-01',
eventos_presentes=[evento]
)
relatorio.save()
Avaliacao().avaliar('123', '1', 'test@email.com', relatorio.pk)
actual = Avaliacoes.objects().first()
self.assertEqual(actual.email, 'test@email.com')
self.assertEqual(actual.relatorioId, relatorio.pk)
self.assertEqual(actual.parlamentar.id, 'id')
self.assertEqual(actual.parlamentar.cargo, 'BR1')
self.assertEqual(actual.avaliado['id'], '123')
[documentos] def test_avaliar_report_not_found(self):
with self.assertRaises(ReportNotFound):
Avaliacao().avaliar('123', '1', 'test@email.com', "4c264b5e3a5efd576ecaf48e")
[documentos] def test_avaliar_item_not_found(self):
parlamentar = Parlamentar(id='id', cargo='BR1')
relatorio = Relatorio(
parlamentar=parlamentar,
data_inicial='2019-01-01'
)
relatorio.save()
with self.assertRaises(ItemNotFound):
Avaliacao().avaliar('123', '1', 'test@email.com', relatorio.pk)
[documentos] def test_avaliar_invalid_report_id(self):
with self.assertRaises(ReportNotFound):
Avaliacao().avaliar('123', '1', 'test@email.com', "invalid_id")
[documentos] def test_deletar_avaliacao_sucesso(self):
warnings.simplefilter("ignore")
parlamentar = Parlamentar(id='id', cargo='BR1')
avaliacao = Avaliacoes(parlamentar=parlamentar, email='test@email.com')
avaliacao.save()
avaliacao_id = str(avaliacao.pk)
Avaliacao().deletar_avaliacao(avaliacao_id)
actual = Avaliacoes.objects()
self.assertEqual(len(actual), 0)
[documentos] def test_deletar_avaliacao_inexistente(self):
with self.assertRaises(ItemNotFound):
Avaliacao().deletar_avaliacao("5c54ecb08f2fa300049d1809")
[documentos] def test_deletar_avaliacao_id_invalido(self):
with self.assertRaises(ItemNotFound):
Avaliacao().deletar_avaliacao("id_invalido")
[documentos] def test_minhas_avaliacoes(self):
parlamentar = Parlamentar(id='id', cargo='BR1')
avaliacao = Avaliacoes(parlamentar=parlamentar, email='test@email.com')
avaliacao.save()
actual = Avaliacao().minhas_avaliacoes('BR1', 'id', 'test@email.com')
self.assertEqual(actual.first(), avaliacao)
[documentos] def test_avaliacoes_de_parlamentar(self):
parlamentar = Parlamentar(id='id', cargo='BR1')
avaliacao1 = Avaliacoes(
parlamentar=parlamentar,
email='test@email.com',
relatorioId='4c264b5e3a5efd576ecaf48e',
avaliacao='-1',
avaliado={'id': '1'}
).save()
avaliacao2 = Avaliacoes(
parlamentar=parlamentar,
email='test@email.com',
relatorioId='4c264b5e3a5efd576ecaf48e',
avaliacao='2',
avaliado={'id': '2'}
).save()
actual = Avaliacao().avaliacoes('BR1', 'id', 'test@email.com')
self.assertEqual(actual[0], parlamentar)
self.assertEqual(actual[1], {
'2': [avaliacao2.to_mongo().to_dict()],
'1': [],
'-1': [avaliacao1.to_mongo().to_dict()],
'-2': []
})
self.assertEqual(actual[2], 9)
[documentos] def test_avaliacoes_de_parlamentar_sem_avaliacoes(self):
parlamentar = Parlamentar(id='id', cargo='BR1')
actual = Avaliacao().avaliacoes('BR1', 'id', 'test@email.com')
self.assertIsNone(actual[0])
self.assertIsNone(actual[1])
self.assertIsNone(actual[2])