예제 #1
0
    def setUp(self):
        self.maxDiff = None
        self.c = Client()

        this_folder = os.path.abspath(os.path.dirname(__file__))
        dummy_db_json = os.path.join(this_folder, '..', '..', 'pdl', 'tests',
                                     'dummy_db.json')
        dummy_items = json.loads(open(dummy_db_json, 'r').read())

        for i in dummy_items:
            b = Proyecto(**i)
            b.save()
            s = Seguimientos(
                proyecto=b,
                fecha='2014-06-23',
                evento='Decreado a... Ciencia, Innovación y Tecnología')
            s.save()
            s1 = Seguimientos(
                proyecto=b,
                fecha='2015-06-23',
                evento='En comisión de Ciencia, Innovación y Tecnología')
            s1.save()

        Slug(nombre='Chihuan Ramos, Leyla Felicita',
             ascii='Chihuan Ramos, Leyla Felicita',
             slug='chihuan-ramos-leyla-felicita').save()
예제 #2
0
    def test_prettify_item_small(self):
        this_folder = os.path.abspath(os.path.dirname(__file__))
        prettified_file = os.path.join(this_folder,
                                       'prettified_03774_small.txt')
        with open(prettified_file, "r") as f:
            prettified_item = f.read()
        item = self.dummy_items[0]

        # save it to test database
        b = Proyecto(**item)
        b.save()
        # now get it as QuerySet object
        item = Proyecto.objects.get(codigo='03774')
        result = utils.prettify_item_small(item)
        self.assertEqual(prettified_item, result)

        # no PDF
        item.pdf_url = ''
        result = utils.prettify_item_small(item)
        self.assertTrue('sin PDF' in result)

        # no expediente
        item.expediente = ''
        result = utils.prettify_item_small(item)
        self.assertTrue('sin Expediente' in result)

        # no seguimiento_page
        item.seguimiento_page = ''
        result = utils.prettify_item_small(item)
        self.assertTrue('sin Seguimiento' in result)
예제 #3
0
    def setUp(self):
        proyecto = Proyecto(
            **{
                "numero_proyecto": "02764/2013-CR",
                "codigo": "02764",
                "short_url": "4zhube",
                "titulo": "Propone Ley Universitaria",
                "iniciativas_agrupadas": ["01790", "01800"],
                "fecha_presentacion": "2010-10-10",
                "id": 1,
            }
        )
        proyecto.save()

        seguimiento1 = {
            "fecha": "2013-10-14",
            "evento": "Decretado a... Educación, Juventud y Deporte",
            "proyecto": proyecto,
        }
        seguimiento2 = {
            "fecha": "2013-10-15",
            "evento": "En comisión Educación, Juventud y Deporte",
            "proyecto": proyecto,
        }
        b = Seguimientos(**seguimiento1)
        b.save()
        b = Seguimientos(**seguimiento2)
        b.save()

        expediente1 = seguimiento1  # Expediente y Seguimiento con casi lo mismo
        expediente2 = seguimiento2  # Expediente y Seguimiento con casi lo mismo
        b = Expedientes(**expediente1)
        b.save()
        b = Expedientes(**expediente2)
        b.save()
예제 #4
0
    def test_find_slug_in_db(self):
        item = self.dummy_items[0]

        # save it to test database
        b = Proyecto(**item)
        b.save()

        # now get it as QuerySet object
        slug = 'dammert_ego_aguirre'
        expected = 'Dammert Ego Aguirre, Manuel Enrique Ernesto'
        result = utils.find_slug_in_db(slug)
        self.assertEqual(expected, result)

        # find elements not in our database
        slug = 'dammert_ego_aguirre/'
        result = utils.find_slug_in_db(slug)
        self.assertEqual(expected, result)

        slug = 'dammert_ego_aguirre'
        result = utils.find_slug_in_db(slug)
        self.assertEqual(expected, result)

        slug = 'dammert_ego_aguirreaaaaaaaa'
        result = utils.find_slug_in_db(slug)
        self.assertEqual(None, result)
예제 #5
0
    def setUp(self):
        proyecto = Proyecto(**{
            "numero_proyecto": "02764/2013-CR",
            "codigo": "02764",
            "short_url": "4zhube",
            "titulo": "Propone Ley Universitaria",
            "iniciativas_agrupadas": ['01790', '01800'],
            "fecha_presentacion": "2010-10-10",
            "id": 1,
        })
        proyecto.save()

        seguimiento1 = {
            'fecha': '2013-10-14',
            'evento': 'Decretado a... Educación, Juventud y Deporte',
            'proyecto': proyecto,
        }
        seguimiento2 = {
            'fecha': '2013-10-15',
            'evento': 'En comisión Educación, Juventud y Deporte',
            'proyecto': proyecto,
        }
        b = Seguimientos(**seguimiento1)
        b.save()
        b = Seguimientos(**seguimiento2)
        b.save()

        expediente1 = seguimiento1  # Expediente y Seguimiento con casi lo mismo
        expediente2 = seguimiento2  # Expediente y Seguimiento con casi lo mismo
        b = Expedientes(**expediente1)
        b.save()
        b = Expedientes(**expediente2)
        b.save()
예제 #6
0
    def test_prettify_item_small(self):
        this_folder = os.path.abspath(os.path.dirname(__file__))
        prettified_file = os.path.join(this_folder,
                                       'prettified_03774_small.txt')
        with open(prettified_file, "r") as f:
            prettified_item = f.read()
        item = self.dummy_items[0]

        # save it to test database
        b = Proyecto(**item)
        b.save()
        # now get it as QuerySet object
        item = Proyecto.objects.get(codigo='03774')
        result = utils.prettify_item_small(item)
        self.assertEqual(prettified_item, result)

        # no PDF
        item.pdf_url = ''
        result = utils.prettify_item_small(item)
        self.assertTrue('sin PDF' in result)

        # no expediente
        item.expediente = ''
        result = utils.prettify_item_small(item)
        self.assertTrue('sin Expediente' in result)

        # no seguimiento_page
        item.seguimiento_page = ''
        result = utils.prettify_item_small(item)
        self.assertTrue('sin Seguimiento' in result)
예제 #7
0
    def test_find_slug_in_db(self):
        item = self.dummy_items[0]

        # save it to test database
        b = Proyecto(**item)
        b.save()

        # now get it as QuerySet object
        slug = 'dammert_ego_aguirre'
        expected = 'Dammert Ego Aguirre, Manuel Enrique Ernesto'
        result = utils.find_slug_in_db(slug)
        self.assertEqual(expected, result)

        # find elements not in our database
        slug = 'dammert_ego_aguirre/'
        result = utils.find_slug_in_db(slug)
        self.assertEqual(expected, result)

        slug = 'dammert_ego_aguirre'
        result = utils.find_slug_in_db(slug)
        self.assertEqual(expected, result)

        slug = 'dammert_ego_aguirreaaaaaaaa'
        result = utils.find_slug_in_db(slug)
        self.assertEqual(None, result)
예제 #8
0
    def test_get_last_items(self):
        for i in self.dummy_items:
            b = Proyecto(**i)
            b.save()

        expected = '03774'
        item = utils.get_last_items()[0]
        result = re.search("<b>([0-9]{5})/[0-9]{4}-CR</b>", item).groups()[0]
        self.assertEqual(expected, result)
예제 #9
0
    def test_get_last_items(self):
        for i in self.dummy_items:
            b = Proyecto(**i)
            b.save()

        expected = '03774'
        item = utils.get_last_items()[0]
        result = re.search("<b>([0-9]{5})/[0-9]{4}-CR</b>", item).groups()[0]
        self.assertEqual(expected, result)
예제 #10
0
    def test_prettify_item1(self):
        this_folder = os.path.abspath(os.path.dirname(__file__))
        prettified_file = os.path.join(this_folder, 'prettified_03774.txt')
        with open(prettified_file, "r") as f:
            prettified_item = f.read()
        item = self.dummy_items[0]

        # save it to test database
        b = Proyecto(**item)
        b.save()
        # now get it as QuerySet object
        item = Proyecto.objects.get(codigo='03774')
        result = views.prettify_item(item)
        self.assertEqual(prettified_item[0:100], result[0:100])
예제 #11
0
    def test_prettify_item1(self):
        this_folder = os.path.abspath(os.path.dirname(__file__))
        prettified_file = os.path.join(this_folder, 'prettified_03774.txt')
        with open(prettified_file, "r") as f:
            prettified_item = f.read()
        item = self.dummy_items[0]

        # save it to test database
        b = Proyecto(**item)
        b.save()
        # now get it as QuerySet object
        item = Proyecto.objects.get(codigo='03774')
        result = views.prettify_item(item)
        self.assertEqual(prettified_item[0:100], result[0:100])
예제 #12
0
    def test_proyecto_view(self):
        i = self.dummy_items[0]
        b = Proyecto(**i)
        b.save()

        c = Client()
        response = c.get('/p/4aw8ym/')
        soup = BeautifulSoup(response.content)
        result = soup.title.get_text().strip()
        expected = 'Proyectos de ley emitidos por el Congreso | 03774/2014-CR'
        self.assertEqual(expected, result)

        response = c.get('/p/4aw8ymaaaaaaaaaaaaaa/')
        self.assertTrue(
            b'No se pudo encontrar el proyecto' in response.content)
예제 #13
0
    def test_proyecto_view(self):
        i = self.dummy_items[0]
        b = Proyecto(**i)
        b.save()

        c = Client()
        response = c.get('/p/4aw8ym/')
        soup = BeautifulSoup(response.content)
        result = soup.title.get_text().strip()
        expected = 'Proyectos de ley emitidos por el Congreso | 03774/2014-CR'
        self.assertEqual(expected, result)

        response = c.get('/p/4aw8ymaaaaaaaaaaaaaa/')
        self.assertTrue(b'No se pudo encontrar el proyecto' in
                        response.content)
예제 #14
0
    def test_do_pagination(self):
        # get first page for not giving integer as page number
        c = Client()
        response = c.get('/?page=bad_page_number')
        self.assertTrue(b'Proyectos de Ley' in response.content)

        # user gives empty page
        response = c.get('/?page=')
        self.assertTrue(b'Proyectos de Ley' in response.content)

        # user gives empty page
        response = c.get('/?page=100')
        self.assertTrue(b'Proyectos de Ley' in response.content)

        # user gives pagination more than 20
        entries = []
        j = 1
        for i in self.dummy_items:
            i['id'] = j
            entries.append(Proyecto(**i))
            j += 1
        Proyecto.objects.bulk_create(entries)
        response = c.get('/?page=21')
        self.assertFalse(b'/?page=10' in response.content)
        self.assertTrue(b'/?page=22' in response.content)
예제 #15
0
    def test_feed(self):
        c = Client()
        response = c.get('/rss.xml')
        soup = BeautifulSoup(response.content)
        expected = 'Proyectos de ley emitidos por el Congreso de la ' \
                   'República del Perú'
        self.assertEqual(expected, soup.title.get_text())

        this_folder = os.path.abspath(os.path.dirname(__file__))
        dummy_db_json = os.path.join(this_folder, 'dummy_db.json')
        dummy_items = json.loads(open(dummy_db_json, 'r').read())
        b = Proyecto(**dummy_items[0])
        b.save()
        response = c.get('/rss.xml')
        soup = BeautifulSoup(response.content)
        self.assertEqual(1, len(soup.find_all('item')))
예제 #16
0
 def test_get_proyecto_from_short_url_from_string(self):
     proyecto = Proyecto(**{
         "numero_proyecto": "02764/2013-CR",
         "codigo": "02764",
         "short_url": "4zhube",
         "titulo": "Propone Ley Universitaria",
         "iniciativas_agrupadas": '{01790,01800}',
         "fecha_presentacion": "2010-10-10",
         "time_created": datetime.date.today(),
         "id": 1,
     })
     proyecto.save()
     short_url = "4zhube"
     expected = ['01790', '01800']
     result = utils.get_proyecto_from_short_url(short_url)
     self.assertEqual(expected, result.iniciativas_agrupadas)
예제 #17
0
    def setUp(self):
        self.maxDiff = None
        dummy = {
            "codigo": "03774",
            'legislatura': 2016,
            "congresistas": "Dammert Ego Aguirre, Manuel Enrique Ernesto; Lescano Ancieta, Yonhy; Merino De Lama, Manuel; Guevara Amasifuen, Mesias Antonio; Mavila Leon, Rosa Delsa; Mendoza Frisch, Veronika Fanny",
            "expediente": "http://www2.congreso.gob.pe/sicr/tradocestproc/Expvirt_2011.nsf/visbusqptramdoc/03774?opendocument",
            "fecha_presentacion": "2014-09-05",
            "id": 3763,
            "numero_proyecto": "03774/2014-CR",
            "pdf_url": "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/Contdoc02_2011_2.nsf/d99575da99ebfbe305256f2e006d1cf0/dbc9030966aac60905257d4a007b75d9/$FILE/PL03774050914.pdf",
            "seguimiento_page": "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2011.nsf/Sicr/TraDocEstProc/CLProLey2011.nsf/PAporNumeroInverso/9609130B9871582F05257D4A00752301?opendocument",
            "short_url": "4aw8ym",
            "nombre_comision": "economia",
            "time_created": "2014-09-05 03:00:00",
            "time_edited": "2014-09-05 03:00:00",
            "titulo": "Propone establecer los lineamientos para la promoción de la eficiencia y competitividad en la actividad empresarial del Estado, garantizando su aporte estratégico para el desarrollo descentralizado y la soberanía nacional."
        }
        self.p = Proyecto(**dummy)
        self.p.save()

        dummy_slug = {
            "nombre": "Dammert Ego Aguirre, Manuel Enrique Ernesto",
            "ascii": "Dammert Ego Aguirre, Manuel Enrique Ernesto",
            "slug": "dammert_ego_aguirre/",
        }
        Slug(**dummy_slug).save()

        self.c = Client()
예제 #18
0
 def test_get_proyecto_from_short_url_from_string(self):
     proyecto = Proyecto(**{
         "numero_proyecto": "02764/2013-CR",
         "codigo": "02764",
         "short_url": "4zhube",
         "legislatura": 2011,
         "titulo": "Propone Ley Universitaria",
         "iniciativas_agrupadas": '{01790,01800}',
         "fecha_presentacion": "2010-10-10",
         "time_created": datetime.date.today(),
         "id": 1,
     })
     proyecto.save()
     short_url = "4zhube"
     expected = ['01790', '01800']
     result = utils.get_proyecto_from_short_url(short_url)
     self.assertEqual(expected, result.iniciativas_agrupadas)
예제 #19
0
    def test_prettify_item2(self):
        """Test when no pdf_url and no expediente are Blank in object."""
        this_folder = os.path.abspath(os.path.dirname(__file__))
        prettified_file = os.path.join(this_folder, 'prettified_03774_2.txt')
        with open(prettified_file, "r") as f:
            prettified_item = f.read()
        item = self.dummy_items[0]
        item['pdf_url'] = ''
        item['expediente'] = ''
        item['seguimiento_page'] = ''

        # save it to test database
        b = Proyecto(**item)
        b.save()
        # now get it as QuerySet object
        item = Proyecto.objects.get(codigo='03774')
        result = views.prettify_item(item)
        self.assertEqual(prettified_item, result)
예제 #20
0
    def test_prettify_item2(self):
        """Test when no pdf_url and no expediente are Blank in object."""
        this_folder = os.path.abspath(os.path.dirname(__file__))
        prettified_file = os.path.join(this_folder, 'prettified_03774_2.txt')
        with open(prettified_file, "r") as f:
            prettified_item = f.read()
        item = self.dummy_items[0]
        item['pdf_url'] = ''
        item['expediente'] = ''
        item['seguimiento_page'] = ''

        # save it to test database
        b = Proyecto(**item)
        b.save()
        # now get it as QuerySet object
        item = Proyecto.objects.get(codigo='03774')
        result = views.prettify_item(item)
        self.assertEqual(prettified_item, result)
 def setUp(self):
     self.b = Proyecto(**{
         'codigo': '00586',
         'numero_proyecto': '00586/2011-CR',
         'fecha_presentacion': '2010-10-10',
         'short_url': '4huj5x',
         'iniciativas_agrupadas': '{00001,00002,00586}',
         'titulo_de_ley': 'Titulo de Ley',
         'id': 1,
     })
     b1 = Proyecto(**{
         'codigo': '00001',
         'numero_proyecto': '00001/2011-CR',
         'fecha_presentacion': '2010-10-10',
         'short_url': '4auj5a',
         'id': 2,
     })
     c = Seguimientos(**{
         'fecha': '2012-10-10',
         'evento': 'en comisión Justicia',
         'proyecto': self.b,
     })
     c1 = Seguimientos(**{
         'fecha': '2012-10-10',
         'evento': 'Dispensado 2da Votación',
         'proyecto': self.b,
     })
     c2 = Seguimientos(**{
         'fecha': '2012-10-10',
         'evento': 'Promulgado Ley No: 29971',
         'proyecto': self.b,
     })
     c3 = Seguimientos(**{
         'fecha': '2012-10-10',
         'evento': 'Publicado: Ley No: 29971',
         'proyecto': self.b,
     })
     self.b.save()
     b1.save()
     c.save()
     c1.save()
     c2.save()
     c3.save()
     call_command('create_stats')
예제 #22
0
    def setUp(self):
        self.maxDiff = None
        dummy = {
            "codigo":
            "03774",
            'legislatura':
            2016,
            "congresistas":
            "Dammert Ego Aguirre, Manuel Enrique Ernesto; Lescano Ancieta, Yonhy; Merino De Lama, Manuel; Guevara Amasifuen, Mesias Antonio; Mavila Leon, Rosa Delsa; Mendoza Frisch, Veronika Fanny",
            "expediente":
            "http://www2.congreso.gob.pe/sicr/tradocestproc/Expvirt_2011.nsf/visbusqptramdoc/03774?opendocument",
            "fecha_presentacion":
            "2014-09-05",
            "id":
            3763,
            "numero_proyecto":
            "03774/2014-CR",
            "pdf_url":
            "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/Contdoc02_2011_2.nsf/d99575da99ebfbe305256f2e006d1cf0/dbc9030966aac60905257d4a007b75d9/$FILE/PL03774050914.pdf",
            "seguimiento_page":
            "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2011.nsf/Sicr/TraDocEstProc/CLProLey2011.nsf/PAporNumeroInverso/9609130B9871582F05257D4A00752301?opendocument",
            "short_url":
            "4aw8ym",
            "nombre_comision":
            "economia",
            "time_created":
            "2014-09-05 03:00:00",
            "time_edited":
            "2014-09-05 03:00:00",
            "titulo":
            "Propone establecer los lineamientos para la promoción de la eficiencia y competitividad en la actividad empresarial del Estado, garantizando su aporte estratégico para el desarrollo descentralizado y la soberanía nacional."
        }
        self.p = Proyecto(**dummy)
        self.p.save()

        dummy_slug = {
            "nombre": "Dammert Ego Aguirre, Manuel Enrique Ernesto",
            "ascii": "Dammert Ego Aguirre, Manuel Enrique Ernesto",
            "slug": "dammert_ego_aguirre/",
        }
        Slug(**dummy_slug).save()

        self.c = Client()
예제 #23
0
    def setUp(self):
        self.maxDiff = None
        self.c = Client()

        this_folder = os.path.abspath(os.path.dirname(__file__))
        dummy_db_json = os.path.join(this_folder, '..', '..', 'pdl', 'tests', 'dummy_db.json')
        dummy_items = json.loads(open(dummy_db_json, 'r').read())

        for i in dummy_items:
            b = Proyecto(**i)
            b.save()
            s = Seguimientos(proyecto=b, fecha='2014-06-23',
                             evento='Decreado a... Ciencia, Innovación y Tecnología')
            s.save()
            s1 = Seguimientos(proyecto=b, fecha='2015-06-23',
                              evento='En comisión de Ciencia, Innovación y Tecnología')
            s1.save()

        Slug(nombre='Chihuan Ramos, Leyla Felicita', ascii='Chihuan Ramos, Leyla Felicita',
             slug='chihuan-ramos-leyla-felicita').save()
예제 #24
0
    def setUp(self):
        b = Proyecto(**{
            'codigo': '00586',
            'legislatura': 2011,
            'numero_proyecto': '00586/2011-CR',
            'fecha_presentacion': '2010-10-10',
            'short_url': '4huj5x',
            'id': 1,
        })
        b.save()

        Seguimientos.objects.create(**{
            'fecha': '2011-01-01',
            'evento': "Decretado a... Trabajo y Seguridad Social",
            'proyecto': b,
        })
        Seguimientos.objects.create(**{
            'fecha': '2012-02-02',
            'evento': "En comisi\u00f3n Trabajo y Seguridad Social",
            'proyecto': b,
        })
예제 #25
0
    def test_congresista_view_pagination(self):
        entries = []
        j = 1
        for i in self.dummy_items:
            i['id'] = j
            entries.append(Proyecto(**i))
            j += 1
        Proyecto.objects.bulk_create(entries)

        c = Client()
        response = c.get('/congresista/dammert_ego_aguirre/?page=2')
        self.assertTrue(b'endless_page_link' in response.content)
예제 #26
0
    def setUp(self):
        b = Proyecto(
            **{
                'codigo': '00586',
                'numero_proyecto': '00586/2011-CR',
                'fecha_presentacion': '2010-10-10',
                'short_url': '4huj5x',
                'id': 1,
            })
        b.save()

        Seguimientos.objects.create(
            **{
                'fecha': '2011-01-01',
                'evento': "Decretado a... Trabajo y Seguridad Social",
                'proyecto': b,
            })
        Seguimientos.objects.create(
            **{
                'fecha': '2012-02-02',
                'evento': "En comisi\u00f3n Trabajo y Seguridad Social",
                'proyecto': b,
            })
 def setUp(self):
     self.b = Proyecto(
         **{
             'codigo': '00586',
             'legislatura': 2016,
             'numero_proyecto': '00586/2011-CR',
             'fecha_presentacion': '2010-10-10',
             'short_url': '4huj5x',
             'iniciativas_agrupadas': '{00001,00002,00586}',
             'titulo_de_ley': 'Titulo de Ley',
             'id': 1,
         })
     b1 = Proyecto(
         **{
             'codigo': '00001',
             'legislatura': 2016,
             'numero_proyecto': '00001/2011-CR',
             'fecha_presentacion': '2010-10-10',
             'short_url': '4auj5a',
             'id': 2,
         })
     c = Seguimientos(
         **{
             'fecha': '2012-10-10',
             'evento': 'en comisión Justicia',
             'proyecto': self.b,
         })
     c1 = Seguimientos(
         **{
             'fecha': '2012-10-10',
             'evento': 'Dispensado 2da Votación',
             'proyecto': self.b,
         })
     c2 = Seguimientos(
         **{
             'fecha': '2012-10-10',
             'evento': 'Promulgado Ley No: 29971',
             'proyecto': self.b,
         })
     c3 = Seguimientos(
         **{
             'fecha': '2012-10-10',
             'evento': 'Publicado: Ley No: 29971',
             'proyecto': self.b,
         })
     self.b.save()
     b1.save()
     c.save()
     c1.save()
     c2.save()
     c3.save()
     call_command('create_stats')
예제 #28
0
    def test_proyect_items(self):
        this_folder = os.path.abspath(os.path.dirname(__file__))
        dummy_db_json = os.path.join(this_folder, 'dummy_db.json')
        dummy_items = json.loads(open(dummy_db_json, 'r').read())
        b = Proyecto(**dummy_items[0])
        b.save()

        c = Client()
        response = c.get('/sitemap.xml')
        soup = BeautifulSoup(response.content)
        self.assertEqual(1, len(soup.find_all('url')))

        nombre = 'Zerillo Bazalar, Manuel Salvador'
        slug = 'zerillo_bazalar_manuel/'
        b = Slug(nombre=nombre, slug=slug)
        b.save()
        response = c.get('/sitemap.xml')
        self.assertTrue(slug.encode('utf-8') in response.content)
예제 #29
0
class TestAPI(TestCase):
    def setUp(self):
        self.maxDiff = None
        dummy = {
            "codigo": "03774",
            'legislatura': 2016,
            "congresistas": "Dammert Ego Aguirre, Manuel Enrique Ernesto; Lescano Ancieta, Yonhy; Merino De Lama, Manuel; Guevara Amasifuen, Mesias Antonio; Mavila Leon, Rosa Delsa; Mendoza Frisch, Veronika Fanny",
            "expediente": "http://www2.congreso.gob.pe/sicr/tradocestproc/Expvirt_2011.nsf/visbusqptramdoc/03774?opendocument",
            "fecha_presentacion": "2014-09-05",
            "id": 3763,
            "numero_proyecto": "03774/2014-CR",
            "pdf_url": "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/Contdoc02_2011_2.nsf/d99575da99ebfbe305256f2e006d1cf0/dbc9030966aac60905257d4a007b75d9/$FILE/PL03774050914.pdf",
            "seguimiento_page": "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2011.nsf/Sicr/TraDocEstProc/CLProLey2011.nsf/PAporNumeroInverso/9609130B9871582F05257D4A00752301?opendocument",
            "short_url": "4aw8ym",
            "nombre_comision": "economia",
            "time_created": "2014-09-05 03:00:00",
            "time_edited": "2014-09-05 03:00:00",
            "titulo": "Propone establecer los lineamientos para la promoción de la eficiencia y competitividad en la actividad empresarial del Estado, garantizando su aporte estratégico para el desarrollo descentralizado y la soberanía nacional."
        }
        self.p = Proyecto(**dummy)
        self.p.save()

        dummy_slug = {
            "nombre": "Dammert Ego Aguirre, Manuel Enrique Ernesto",
            "ascii": "Dammert Ego Aguirre, Manuel Enrique Ernesto",
            "slug": "dammert_ego_aguirre/",
        }
        Slug(**dummy_slug).save()

        self.c = Client()

    def test_getting_proyecto(self):
        response = self.c.get('/api/proyecto.json/03774-2016/')
        result = json.loads(response.content.decode('utf-8'))
        expected = "03774"
        self.assertEqual(expected, result['codigo'])

    def test_getting_proyecto_csv(self):
        response = self.c.get('/api/proyecto.csv/03774-2016/')
        result = response.content.decode('utf-8')
        expected = "03774"
        self.assertTrue(expected in result)

    def test_getting_proyecto_missing(self):
        response = self.c.get('/api/proyecto.json/037740-2016/')
        result = response.content.decode('utf-8')
        expected = '{"error": "proyecto no existe"}'
        self.assertEqual(expected, result)

    def test_getting_proyecto_missing_csv(self):
        response = self.c.get('/api/proyecto.csv/037740-2016/')
        result = response.content.decode('utf-8')
        expected = 'error,proyecto no existe'
        self.assertEqual(expected, result)

    def test_getting_projects_of_person(self):
        response = self.c.get('/api/congresista.json/Dammert Ego/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'Dammert Ego Aguirre, Manuel Enrique Ernesto'
        self.assertEqual(expected, result['resultado'][0]['nombre'])

    def test_getting_projects_of_person_csv(self):
        response = self.c.get('/api/congresista.csv/Dammert Ego/')
        result = response.content.decode('utf-8')
        expected = 'Dammert Ego Aguirre, Manuel Enrique Ernesto'
        self.assertTrue(expected in result)

    def test_getting_projects_of_person_and_comission(self):
        response = self.c.get('/api/congresista_y_comision.json/Dammert Ego/economia/')
        result = json.loads(response.content.decode('utf-8'))
        expected = ['03774-2016']
        self.assertEqual(expected, result['resultado'][0]['proyectos'])

    def test_getting_projects_of_person_and_comission_csv(self):
        response = self.c.get('/api/congresista_y_comision.csv/Dammert Ego/economia/')
        result = response.content.decode('utf-8')
        expected = '03774-2016'
        self.assertTrue(expected in result)

    def test_getting_projects_of_person_and_comission_csv_missing(self):
        response = self.c.get('/api/congresista_y_comision.csv/Dammert Egolalala/economia/')
        result = response.content.decode('utf-8')
        expected = 'error,no se pudo encontrar congresista'
        self.assertEqual(expected, result)

    def test_not_enough_names_to_search_for_person(self):
        response = self.c.get('/api/congresista.json/Dammert/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'ingrese un nombre y un apellido'
        self.assertEqual(expected, result['error'])

    def test_not_enough_names_to_search_for_person_in_comision(self):
        response = self.c.get('/api/congresista_y_comision.json/Dammert/economia/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'ingrese un nombre y un apellido'
        self.assertEqual(expected, result['error'])

    def test_person_cannot_be_found(self):
        response = self.c.get('/api/congresista.json/Aus Bus/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'no se pudo encontrar congresista'
        self.assertEqual(expected, result['error'])

    def test_person_name_incomplete(self):
        response = self.c.get('/api/congresista.json/Bus/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'ingrese un nombre y un apellido'
        self.assertEqual(expected, result['error'])

    def test_person_name_incomplete_csv(self):
        response = self.c.get('/api/congresista.csv/Bus/')
        result = response.content.decode('utf-8')
        expected = 'error,ingrese un nombre y un apellido'
        self.assertEqual(expected, result)

    def test_exonerados_dictamen_empty(self):
        response = self.c.get('/api/exonerados_dictamen.json/')
        result = json.loads(response.content.decode('utf-8'))
        expected = {'error': 'no se encontraron resultados'}
        self.assertEqual(expected, result)

    def test_exonerados_dictamen(self):
        Seguimientos(proyecto=self.p,
                     evento='exoneración de dictamen',
                     fecha='2010-10-10').save()
        response = self.c.get('/api/exonerados_dictamen.json/')
        result = json.loads(response.content.decode('utf-8'))
        expected = {'resultado': ['03774-2016']}
        self.assertEqual(expected, result)

    def test_exonerados_dictamen_csv(self):
        Seguimientos(proyecto=self.p,
                     evento='exoneración de dictamen',
                     fecha='2010-10-10').save()
        response = self.c.get('/api/exonerados_dictamen.csv/')
        result = response.content.decode('utf-8')
        expected = '03774-2016'
        self.assertTrue(expected in result)

    def test_exonerados_dictamen_csv_empty(self):
        response = self.c.get('/api/exonerados_dictamen.csv/')
        result = response.content.decode('utf-8')
        expected = 'error,no se encontraron resultados'
        self.assertEqual(expected, result)

    def test_exonerados_2da_votacion_empty(self):
        response = self.c.get('/api/exonerados_2da_votacion.json/')
        result = json.loads(response.content.decode('utf-8'))
        expected = {'error': 'no se encontraron resultados'}
        self.assertEqual(expected, result)

    def test_exonerados_2da_votacion_empty_csv(self):
        response = self.c.get('/api/exonerados_2da_votacion.csv/')
        result = response.content.decode('utf-8')
        expected = 'error,no se encontraron resultados'
        self.assertEqual(expected, result)

    def test_exonerados_2da_votacion(self):
        Seguimientos(proyecto=self.p,
                     evento='dispensado 2da',
                     fecha='2010-10-10').save()
        response = self.c.get('/api/exonerados_2da_votacion.json/')
        result = json.loads(response.content.decode('utf-8'))
        expected = {'resultado': ['03774-2016']}
        self.assertEqual(expected, result)

    def test_exonerados_2da_votacion_csv(self):
        Seguimientos(proyecto=self.p,
                     evento='dispensado 2da',
                     fecha='2010-10-10').save()
        response = self.c.get('/api/exonerados_2da_votacion.csv/')
        result = response.content.decode('utf-8')
        expected = '03774-2016'
        self.assertTrue(expected in result)
예제 #30
0
class TestAPI(TestCase):
    def setUp(self):
        self.maxDiff = None
        dummy = {
            "codigo":
            "03774",
            'legislatura':
            2016,
            "congresistas":
            "Dammert Ego Aguirre, Manuel Enrique Ernesto; Lescano Ancieta, Yonhy; Merino De Lama, Manuel; Guevara Amasifuen, Mesias Antonio; Mavila Leon, Rosa Delsa; Mendoza Frisch, Veronika Fanny",
            "expediente":
            "http://www2.congreso.gob.pe/sicr/tradocestproc/Expvirt_2011.nsf/visbusqptramdoc/03774?opendocument",
            "fecha_presentacion":
            "2014-09-05",
            "id":
            3763,
            "numero_proyecto":
            "03774/2014-CR",
            "pdf_url":
            "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/Contdoc02_2011_2.nsf/d99575da99ebfbe305256f2e006d1cf0/dbc9030966aac60905257d4a007b75d9/$FILE/PL03774050914.pdf",
            "seguimiento_page":
            "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2011.nsf/Sicr/TraDocEstProc/CLProLey2011.nsf/PAporNumeroInverso/9609130B9871582F05257D4A00752301?opendocument",
            "short_url":
            "4aw8ym",
            "nombre_comision":
            "economia",
            "time_created":
            "2014-09-05 03:00:00",
            "time_edited":
            "2014-09-05 03:00:00",
            "titulo":
            "Propone establecer los lineamientos para la promoción de la eficiencia y competitividad en la actividad empresarial del Estado, garantizando su aporte estratégico para el desarrollo descentralizado y la soberanía nacional."
        }
        self.p = Proyecto(**dummy)
        self.p.save()

        dummy_slug = {
            "nombre": "Dammert Ego Aguirre, Manuel Enrique Ernesto",
            "ascii": "Dammert Ego Aguirre, Manuel Enrique Ernesto",
            "slug": "dammert_ego_aguirre/",
        }
        Slug(**dummy_slug).save()

        self.c = Client()

    def test_getting_proyecto(self):
        response = self.c.get('/api/proyecto.json/03774-2016/')
        result = json.loads(response.content.decode('utf-8'))
        expected = "03774"
        self.assertEqual(expected, result['codigo'])

    def test_getting_proyecto_csv(self):
        response = self.c.get('/api/proyecto.csv/03774-2016/')
        result = response.content.decode('utf-8')
        expected = "03774"
        self.assertTrue(expected in result)

    def test_getting_proyecto_missing(self):
        response = self.c.get('/api/proyecto.json/037740-2016/')
        result = response.content.decode('utf-8')
        expected = '{"error": "proyecto no existe"}'
        self.assertEqual(expected, result)

    def test_getting_proyecto_missing_csv(self):
        response = self.c.get('/api/proyecto.csv/037740-2016/')
        result = response.content.decode('utf-8')
        expected = 'error,proyecto no existe'
        self.assertEqual(expected, result)

    def test_getting_projects_of_person(self):
        response = self.c.get('/api/congresista.json/Dammert Ego/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'Dammert Ego Aguirre, Manuel Enrique Ernesto'
        self.assertEqual(expected, result['resultado'][0]['nombre'])

    def test_getting_projects_of_person_csv(self):
        response = self.c.get('/api/congresista.csv/Dammert Ego/')
        result = response.content.decode('utf-8')
        expected = 'Dammert Ego Aguirre, Manuel Enrique Ernesto'
        self.assertTrue(expected in result)

    def test_getting_projects_of_person_and_comission(self):
        response = self.c.get(
            '/api/congresista_y_comision.json/Dammert Ego/economia/')
        result = json.loads(response.content.decode('utf-8'))
        expected = ['03774-2016']
        self.assertEqual(expected, result['resultado'][0]['proyectos'])

    def test_getting_projects_of_person_and_comission_csv(self):
        response = self.c.get(
            '/api/congresista_y_comision.csv/Dammert Ego/economia/')
        result = response.content.decode('utf-8')
        expected = '03774-2016'
        self.assertTrue(expected in result)

    def test_getting_projects_of_person_and_comission_csv_missing(self):
        response = self.c.get(
            '/api/congresista_y_comision.csv/Dammert Egolalala/economia/')
        result = response.content.decode('utf-8')
        expected = 'error,no se pudo encontrar congresista'
        self.assertEqual(expected, result)

    def test_not_enough_names_to_search_for_person(self):
        response = self.c.get('/api/congresista.json/Dammert/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'ingrese un nombre y un apellido'
        self.assertEqual(expected, result['error'])

    def test_not_enough_names_to_search_for_person_in_comision(self):
        response = self.c.get(
            '/api/congresista_y_comision.json/Dammert/economia/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'ingrese un nombre y un apellido'
        self.assertEqual(expected, result['error'])

    def test_person_cannot_be_found(self):
        response = self.c.get('/api/congresista.json/Aus Bus/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'no se pudo encontrar congresista'
        self.assertEqual(expected, result['error'])

    def test_person_name_incomplete(self):
        response = self.c.get('/api/congresista.json/Bus/')
        result = json.loads(response.content.decode('utf-8'))
        expected = 'ingrese un nombre y un apellido'
        self.assertEqual(expected, result['error'])

    def test_person_name_incomplete_csv(self):
        response = self.c.get('/api/congresista.csv/Bus/')
        result = response.content.decode('utf-8')
        expected = 'error,ingrese un nombre y un apellido'
        self.assertEqual(expected, result)

    def test_exonerados_dictamen_empty(self):
        response = self.c.get('/api/exonerados_dictamen.json/')
        result = json.loads(response.content.decode('utf-8'))
        expected = {'error': 'no se encontraron resultados'}
        self.assertEqual(expected, result)

    def test_exonerados_dictamen(self):
        Seguimientos(proyecto=self.p,
                     evento='exoneración de dictamen',
                     fecha='2010-10-10').save()
        response = self.c.get('/api/exonerados_dictamen.json/')
        result = json.loads(response.content.decode('utf-8'))
        expected = {'resultado': ['03774-2016']}
        self.assertEqual(expected, result)

    def test_exonerados_dictamen_csv(self):
        Seguimientos(proyecto=self.p,
                     evento='exoneración de dictamen',
                     fecha='2010-10-10').save()
        response = self.c.get('/api/exonerados_dictamen.csv/')
        result = response.content.decode('utf-8')
        expected = '03774-2016'
        self.assertTrue(expected in result)

    def test_exonerados_dictamen_csv_empty(self):
        response = self.c.get('/api/exonerados_dictamen.csv/')
        result = response.content.decode('utf-8')
        expected = 'error,no se encontraron resultados'
        self.assertEqual(expected, result)

    def test_exonerados_2da_votacion_empty(self):
        response = self.c.get('/api/exonerados_2da_votacion.json/')
        result = json.loads(response.content.decode('utf-8'))
        expected = {'error': 'no se encontraron resultados'}
        self.assertEqual(expected, result)

    def test_exonerados_2da_votacion_empty_csv(self):
        response = self.c.get('/api/exonerados_2da_votacion.csv/')
        result = response.content.decode('utf-8')
        expected = 'error,no se encontraron resultados'
        self.assertEqual(expected, result)

    def test_exonerados_2da_votacion(self):
        Seguimientos(proyecto=self.p,
                     evento='dispensado 2da',
                     fecha='2010-10-10').save()
        response = self.c.get('/api/exonerados_2da_votacion.json/')
        result = json.loads(response.content.decode('utf-8'))
        expected = {'resultado': ['03774-2016']}
        self.assertEqual(expected, result)

    def test_exonerados_2da_votacion_csv(self):
        Seguimientos(proyecto=self.p,
                     evento='dispensado 2da',
                     fecha='2010-10-10').save()
        response = self.c.get('/api/exonerados_2da_votacion.csv/')
        result = response.content.decode('utf-8')
        expected = '03774-2016'
        self.assertTrue(expected in result)
class TestCustomCommand(TestCase):
    def setUp(self):
        self.b = Proyecto(
            **{
                'codigo': '00586',
                'legislatura': 2016,
                'numero_proyecto': '00586/2011-CR',
                'fecha_presentacion': '2010-10-10',
                'short_url': '4huj5x',
                'iniciativas_agrupadas': '{00001,00002,00586}',
                'titulo_de_ley': 'Titulo de Ley',
                'id': 1,
            })
        b1 = Proyecto(
            **{
                'codigo': '00001',
                'legislatura': 2016,
                'numero_proyecto': '00001/2011-CR',
                'fecha_presentacion': '2010-10-10',
                'short_url': '4auj5a',
                'id': 2,
            })
        c = Seguimientos(
            **{
                'fecha': '2012-10-10',
                'evento': 'en comisión Justicia',
                'proyecto': self.b,
            })
        c1 = Seguimientos(
            **{
                'fecha': '2012-10-10',
                'evento': 'Dispensado 2da Votación',
                'proyecto': self.b,
            })
        c2 = Seguimientos(
            **{
                'fecha': '2012-10-10',
                'evento': 'Promulgado Ley No: 29971',
                'proyecto': self.b,
            })
        c3 = Seguimientos(
            **{
                'fecha': '2012-10-10',
                'evento': 'Publicado: Ley No: 29971',
                'proyecto': self.b,
            })
        self.b.save()
        b1.save()
        c.save()
        c1.save()
        c2.save()
        c3.save()
        call_command('create_stats')

    def test_create_stats(self):
        res = ComisionCount.objects.all()
        expected = 1
        for i in res:
            self.assertEqual(expected, i.count)

    def test_all_iniciativas_with_title_of_law(self):
        res = Proyecto.objects.get(codigo='00001')
        expected = 'Titulo de Ley'
        result = res.titulo_de_ley
        self.assertEqual(expected, result)

    def test_get_dispensados_2da_votacion(self):
        res = Dispensed.objects.all()
        expected = 1
        self.assertEqual(expected, res[0].total_dispensed)

    def test_get_aprobados(self):
        res = Dispensed.objects.all()
        expected = 1
        self.assertEqual(expected, res[0].total_approved)

    def test_testing_if_event_is_in_commission(self):
        """
        We need to check whether the event in the model Seguimientos is one
        that tells us that the project is in certain Commission.
        """
        c = Seguimientos(
            **{
                'fecha': '2012-10-10',
                'evento': 'en comisión Justicia',
                'proyecto': self.b,
            })
        expected = 'Justicia'
        result = test_if_event_is_in_commission(c)
        self.assertEqual(expected, result)

        c = Seguimientos(
            **{
                'fecha': '2012-10-10',
                'evento': 'Publicado: Ley No: 29971',
                'proyecto': self.b,
            })
        expected = False
        result = test_if_event_is_in_commission(c)
        self.assertEqual(expected, result)
class TestCustomCommand(TestCase):
    def setUp(self):
        self.b = Proyecto(**{
            'codigo': '00586',
            'numero_proyecto': '00586/2011-CR',
            'fecha_presentacion': '2010-10-10',
            'short_url': '4huj5x',
            'iniciativas_agrupadas': '{00001,00002,00586}',
            'titulo_de_ley': 'Titulo de Ley',
            'id': 1,
        })
        b1 = Proyecto(**{
            'codigo': '00001',
            'numero_proyecto': '00001/2011-CR',
            'fecha_presentacion': '2010-10-10',
            'short_url': '4auj5a',
            'id': 2,
        })
        c = Seguimientos(**{
            'fecha': '2012-10-10',
            'evento': 'en comisión Justicia',
            'proyecto': self.b,
        })
        c1 = Seguimientos(**{
            'fecha': '2012-10-10',
            'evento': 'Dispensado 2da Votación',
            'proyecto': self.b,
        })
        c2 = Seguimientos(**{
            'fecha': '2012-10-10',
            'evento': 'Promulgado Ley No: 29971',
            'proyecto': self.b,
        })
        c3 = Seguimientos(**{
            'fecha': '2012-10-10',
            'evento': 'Publicado: Ley No: 29971',
            'proyecto': self.b,
        })
        self.b.save()
        b1.save()
        c.save()
        c1.save()
        c2.save()
        c3.save()
        call_command('create_stats')

    def test_create_stats(self):
        res = ComisionCount.objects.all()
        expected = 1
        for i in res:
            self.assertEqual(expected, i.count)

    def test_all_iniciativas_with_title_of_law(self):
        res = Proyecto.objects.get(codigo='00001')
        expected = 'Titulo de Ley'
        result = res.titulo_de_ley
        self.assertEqual(expected, result)

    def test_get_dispensados_2da_votacion(self):
        res = Dispensed.objects.all()
        expected = 1
        self.assertEqual(expected, res[0].total_dispensed)

    def test_get_aprobados(self):
        res = Dispensed.objects.all()
        expected = 1
        self.assertEqual(expected, res[0].total_approved)

    def test_testing_if_event_is_in_commission(self):
        """
        We need to check whether the event in the model Seguimientos is one
        that tells us that the project is in certain Commission.
        """
        c = Seguimientos(**{
            'fecha': '2012-10-10',
            'evento': 'en comisión Justicia',
            'proyecto': self.b,
        })
        expected = 'Justicia'
        result = test_if_event_is_in_commission(c)
        self.assertEqual(expected, result)

        c = Seguimientos(**{
            'fecha': '2012-10-10',
            'evento': 'Publicado: Ley No: 29971',
            'proyecto': self.b,
        })
        expected = False
        result = test_if_event_is_in_commission(c)
        self.assertEqual(expected, result)