Exemplo n.º 1
0
    def test_none_to_str(self):
        """Test if method transforms None to empty string."""

        value = None
        parser = BillParser()
        result = parser.none_to_str(value)
        self.assertEqual(result, '')
Exemplo n.º 2
0
 def bills_stream(self, url):
     status, data = self.download_data(url)
     if status == 200:
         parser = BillParser()
         for e in data:
             parsed_data = parser.parse(e)
             bill = Bill.objects.create(**parsed_data)
             yield bill
Exemplo n.º 3
0
    def test_has_committees(self):
        """Test if the object has committees."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.committees.count()
        self.assertNotEqual(count, 0)
Exemplo n.º 4
0
    def test_has_passings(self):
        """Test if the object has passings (chronology)."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.chronology.count()
        self.assertNotEqual(count, 0)
Exemplo n.º 5
0
    def test_has_main_executives(self):
        """Test if the object has main executives."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.main_executives.count()
        self.assertNotEqual(count, 0)
Exemplo n.º 6
0
    def test_parse_root(self):
        """Test if method transform dict key to a list."""

        root = {'date': '2015-01-29'}
        list_root = [{'date': '2015-01-29'}]
        parser = BillParser()
        result = parser.parse_root(root)
        self.assertTrue(type(result) is list)
        self.assertEqual(result, list_root)
Exemplo n.º 7
0
 def setUp(self):
     super().setUp()
     self.raw_data = json.load(
         open(
             os.path.join(settings.BASE_DIR,
                          'bills/tests/bill_parse_data.json')))
     self.bill1_raw_data = self.raw_data[3]
     self.parser = BillParser()
     self.maxDiff = None
Exemplo n.º 8
0
    def test_has_bind_bills(self):
        """Test if the object has related bill ids."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[0])
        Bill.objects.create(**parsed_data)
        parsed_data = parser.parse(self.raw_data[1])
        Bill.objects.create(**parsed_data)
        parsed_data = parser.parse(self.raw_data[2])
        bill = Bill.objects.create(**parsed_data)
        count = bill.bind_bills.count()
        self.assertNotEqual(count, 0)
Exemplo n.º 9
0
class BillParserModelTestCase(ConvocationFixturesMixin, TestCase):
    """Test the BillParser helper class."""
    def setUp(self):
        super().setUp()
        self.raw_data = json.load(
            open(
                os.path.join(settings.BASE_DIR,
                             'bills/tests/bill_parse_data.json')))
        self.bill1_raw_data = self.raw_data[3]
        self.parser = BillParser()
        self.maxDiff = None

    def test_parser(self):
        """Test if Parser can prapare bill data."""

        parsed_data = self.parser.parse(self.raw_data[3])
        keys = [
            'title', 'bill_id', 'number', 'convocation', 'session', 'rubric',
            'subject', 'bill_type', 'phase', 'phase_date', 'uri', 'agenda',
            'registration_date', 'chronology', 'documents', 'committees',
            'authors', 'initiators', 'executives', 'main_executives',
            'bind_bills', 'alternatives'
        ]

        self.assertCountEqual(parsed_data.keys(), keys)

    def test_initiator_parser_single(self):
        """Test if Parser can prepare an initiator data."""

        parsed_data = self.parser.parse_initiators(
            self.raw_data[3]['initiators'])
        keys = [
            'person_id', 'first_name', 'last_name', 'middle_name',
            'committees_by_title', 'convocation_by_latin_number', 'post',
            'organization'
        ]
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_initiator_parser_multiple(self):
        """Test if Parser can prepare numerous initiators data."""

        parsed_data = self.parser.parse_initiators(
            self.raw_data[3]['initiators'])
        keys = [
            'person_id', 'first_name', 'last_name', 'middle_name',
            'committees_by_title', 'convocation_by_latin_number', 'post',
            'organization'
        ]
        self.assertCountEqual(parsed_data[0].keys(), keys)
        self.assertGreater(len(parsed_data), 1)

    def test_initiator_parser_outer(self):
        """Test if Parser can prepare initiators with 'outer' key in data."""

        parsed_data = self.parser.parse_initiators(
            self.raw_data[4]['initiators'])
        keys = [
            'person_id', 'first_name', 'last_name', 'middle_name',
            'committees_by_title', 'convocation_by_latin_number', 'post',
            'organization'
        ]
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_executive_parser_single(self):
        """Test if Parser can prepare executives data."""

        parsed_data = self.parser.parse_executives(
            self.raw_data[6]['executives'])
        keys = [
            'person_id', 'first_name', 'last_name', 'middle_name',
            'committees_by_title'
        ]
        self.assertCountEqual(parsed_data[0].keys(), keys)
        self.assertEqual(len(parsed_data), 1)

    def test_executive_parser_multiple(self):
        """Test if Parser can prepare executives data."""

        parsed_data = self.parser.parse_executives(
            self.raw_data[3]['executives'])
        keys = [
            'person_id', 'first_name', 'last_name', 'middle_name',
            'committees_by_title'
        ]
        self.assertCountEqual(parsed_data[0].keys(), keys)
        self.assertGreater(len(parsed_data), 1)

    def test_main_executive_parser(self):
        """Test if Parser can prepare main executives data."""

        parsed_data = self.parser.parse_main_executives(
            self.raw_data[3]['mainExecutives'])
        keys = [
            'person_id', 'first_name', 'last_name', 'middle_name',
            'committees_by_title'
        ]
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_documents_parser_multiple(self):
        """Test if Parser can prepare documents data with multiple items."""

        parsed_data = self.parser.parse_documents(
            self.raw_data[3]['documents'])
        keys = ['document_type', 'date', 'uri']
        self.assertCountEqual(parsed_data[0].keys(), keys)
        self.assertGreater(len(parsed_data), 1)

    def test_documents_parser_single(self):
        """Test if Parser can prepare documents data with single item."""

        parsed_data = self.parser.parse_documents(
            self.raw_data[3]['documents'])
        keys = ['document_type', 'date', 'uri']
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_documents_parser_workflow(self):
        """Test if Parser can prepare documents data with workflow root."""

        parsed_data = self.parser.parse_documents(
            self.raw_data[8]['documents'])
        keys = ['document_type', 'date', 'uri']
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_documents_parser_source(self):
        """Test if Parser can prepare documents data with source root."""

        parsed_data = self.parser.parse_documents(
            self.raw_data[2]['documents'])
        keys = ['document_type', 'date', 'uri']
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_documents_parser_workflow_source(self):
        """Test if Parser can prepare documents data with workflow root."""

        parsed_data = self.parser.parse_documents(
            self.raw_data[9]['documents'])
        keys = ['document_type', 'date', 'uri']
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_prepare_committees_multiple(self):
        """Test if Parser can prepare committees data of complex structure."""

        parsed_data = self.parser.prepare_committees(
            self.raw_data[5]['workOuts'])
        keys = ['title', 'date_got', 'date_passed']
        self.assertCountEqual(parsed_data[0].keys(), keys)
        self.assertGreater(len(parsed_data), 1)

    def test_prepare_committees_single(self):
        """Test if Parser can prepare committees data of complex structure."""

        parsed_data = self.parser.prepare_committees(
            self.raw_data[3]['workOuts'])
        keys = ['title', 'date_got', 'date_passed']
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_committee_parser_multiple(self):
        """Test if Parser can prepare numerous committees data."""

        parsed_data = self.parser.parse_committees(
            self.raw_data[3]['workOuts'])
        keys = ['title', 'date_got', 'date_passed']
        self.assertCountEqual(parsed_data[0].keys(), keys)
        self.assertGreater(len(parsed_data), 1)

    def test_committee_parser_single(self):
        """Test if Parser can prepare numerous committees data."""

        parsed_data = self.parser.parse_committees(
            self.raw_data[3]['workOuts'])
        keys = ['title', 'date_got', 'date_passed']
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_bills_parser_multiple(self):
        """Test if Parser can prepare multiple bind bills data items."""

        parsed_data = self.parser.parse_bills(self.raw_data[3]['alternative'])
        keys = ['bill_id']
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_bills_parser_single(self):
        """Test if Parser can prepare bind bills data with single item."""

        parsed_data = self.parser.parse_bills(self.raw_data[7]['alternative'])
        keys = ['bill_id']
        self.assertCountEqual(parsed_data[0].keys(), keys)
        self.assertEqual(len(parsed_data), 1)

    def test_bind_bills_parser_single(self):
        """Test if Parser can prepare bill alternatives data."""

        parsed_data = self.parser.parse_bills(self.raw_data[3]['bind'])
        keys = ['bill_id']
        self.assertCountEqual(parsed_data[0].keys(), keys)
        self.assertEqual(len(parsed_data), 1)

    def test_bind_bills_parser_multiple(self):
        """Test if Parser can prepare bill alternatives data."""

        parsed_data = self.parser.parse_bills(self.raw_data[3]['bind'])
        keys = ['bill_id']
        self.assertCountEqual(parsed_data[0].keys(), keys)

    def test_can_create(self):
        """Test if the Bill model can create a object out of the parsed
        data."""

        old_count = Bill.objects.count()
        parsed_data = self.parser.parse(self.raw_data[3])
        Bill.objects.create(**parsed_data)
        new_count = Bill.objects.count()
        self.assertNotEqual(old_count, new_count)

    def test_has_authors(self):
        """Test if the object has authors."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.authors.count()
        self.assertNotEqual(count, 0)

    def test_has_initiators(self):
        """Test if the object has initiators."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.initiators.count()
        self.assertNotEqual(count, 0)

    def test_has_executives(self):
        """Test if the object has executives."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.executives.count()
        self.assertNotEqual(count, 0)

    def test_has_main_executives(self):
        """Test if the object has main executives."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.main_executives.count()
        self.assertNotEqual(count, 0)

    def test_has_passings(self):
        """Test if the object has passings (chronology)."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.chronology.count()
        self.assertNotEqual(count, 0)

    def test_has_documents(self):
        """Test if the object has documents."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.documents.count()
        self.assertNotEqual(count, 0)

    def test_has_committees(self):
        """Test if the object has committees."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.committees.count()
        self.assertNotEqual(count, 0)

    def test_has_bind_bills(self):
        """Test if the object has related bill ids."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[0])
        Bill.objects.create(**parsed_data)
        parsed_data = parser.parse(self.raw_data[1])
        Bill.objects.create(**parsed_data)
        parsed_data = parser.parse(self.raw_data[2])
        bill = Bill.objects.create(**parsed_data)
        count = bill.bind_bills.count()
        self.assertNotEqual(count, 0)

    def test_has_alternatives(self):
        """Test if the object has related bill ids."""

        parser = BillParser()
        parsed_data = parser.parse(self.raw_data[0])
        Bill.objects.create(**parsed_data)
        parsed_data = parser.parse(self.raw_data[1])
        Bill.objects.create(**parsed_data)
        parsed_data = parser.parse(self.raw_data[2])
        Bill.objects.create(**parsed_data)
        parsed_data = parser.parse(self.raw_data[3])
        bill = Bill.objects.create(**parsed_data)
        count = bill.alternatives.count()
        self.assertNotEqual(count, 0)

    def test_none_to_str(self):
        """Test if method transforms None to empty string."""

        value = None
        parser = BillParser()
        result = parser.none_to_str(value)
        self.assertEqual(result, '')

    def test_parse_root(self):
        """Test if method transform dict key to a list."""

        root = {'date': '2015-01-29'}
        list_root = [{'date': '2015-01-29'}]
        parser = BillParser()
        result = parser.parse_root(root)
        self.assertTrue(type(result) is list)
        self.assertEqual(result, list_root)