def test_should_contain1(self): self.expect_xml_http(""" <CFRDOC> <AMDDATE>Jan 1, 2001</AMDDATE> <PARTS>Part 111 to 222</PARTS> </CFRDOC>""") volume = annual.Volume(2001, 12, 2) self.assertFalse(volume.should_contain(1)) self.assertFalse(volume.should_contain(100)) self.assertFalse(volume.should_contain(300)) self.assertFalse(volume.should_contain(250)) self.assertTrue(volume.should_contain(111)) self.assertTrue(volume.should_contain(211)) self.assertTrue(volume.should_contain(222)) self.expect_xml_http(""" <CFRDOC> <AMDDATE>Jan 1, 2001</AMDDATE> <PARTS>Parts 587 to End</PARTS> </CFRDOC>""") volume = annual.Volume(2001, 12, 2) self.assertFalse(volume.should_contain(111)) self.assertFalse(volume.should_contain(586)) self.assertTrue(volume.should_contain(587)) self.assertTrue(volume.should_contain(600)) self.assertTrue(volume.should_contain(999999))
def test_should_contain1(self, requests): response = Response() response.status_code = 200 response._content = """ <CFRDOC> <AMDDATE>Jan 1, 2001</AMDDATE> <PARTS>Part 111 to 222</PARTS> </CFRDOC>""" response._content_consumed = True requests.get.return_value = response volume = annual.Volume(2001, 12, 2) self.assertFalse(volume.should_contain(1)) self.assertFalse(volume.should_contain(100)) self.assertFalse(volume.should_contain(300)) self.assertFalse(volume.should_contain(250)) self.assertTrue(volume.should_contain(111)) self.assertTrue(volume.should_contain(211)) self.assertTrue(volume.should_contain(222)) response._content = """ <CFRDOC> <AMDDATE>Jan 1, 2001</AMDDATE> <PARTS>Parts 587 to End</PARTS> </CFRDOC>""" response._content_consumed = True volume = annual.Volume(2001, 12, 2) self.assertFalse(volume.should_contain(111)) self.assertFalse(volume.should_contain(586)) self.assertTrue(volume.should_contain(587)) self.assertTrue(volume.should_contain(600)) self.assertTrue(volume.should_contain(999999))
def test_init(self): uri = re.compile(r'.*gpo.gov.*1010.*12.*4.*xml') self.expect_xml_http(uri=uri) volume = annual.Volume(1010, 12, 4) self.assertEqual(True, volume.exists) self.expect_xml_http(status=404, uri=uri) volume = annual.Volume(1010, 12, 4) self.assertEqual(False, volume.exists)
def test_init(self, requests): response = Response() response.status_code = 200 requests.get.return_value = response volume = annual.Volume(1010, 12, 4) self.assertEqual(True, volume.exists) response.status_code = 404 volume = annual.Volume(1010, 12, 4) self.assertEqual(False, volume.exists) self.assertTrue('1010' in requests.get.call_args[0][0]) self.assertTrue('12' in requests.get.call_args[0][0]) self.assertTrue('4' in requests.get.call_args[0][0])
def test_should_contain_with_single_part(self): self.expect_xml_http(""" <CFRDOC> <AMDDATE>Jan 1, 2001</AMDDATE> <PARTS>Part 641 (§§ 641.1 to 641.599)</PARTS> </CFRDOC>""") volume = annual.Volume(2001, 12, 2) self.assertFalse(volume.should_contain(640)) self.assertTrue(volume.should_contain(641)) self.assertFalse(volume.should_contain(642))
def test_should_contain2(self, requests): pt111 = """ <PART> <EAR>Pt. 111</EAR> <HD SOURCE="HED">PART 111-Something</HD> <FIELD>111 Content</FIELD> </PART> """ pt112 = """ <PART> <EAR>Pt. 112</EAR> <HD SOURCE="HED">PART 112-Something</HD> <FIELD>112 Content</FIELD> </PART> """ def side_effect(url, stream=False): response = Response() response.status_code = 200 response._content_consumed = True if 'bulkdata' in url: response._content = """ <CFRDOC> <AMDDATE>Jan 1, 2001</AMDDATE> <PARTS>Part 111 to 222</PARTS> %s %s </CFRDOC>""" % (pt111, pt112) elif url.endswith('part111.xml'): response._content = pt111 elif url.endswith('part112.xml'): response._content = pt112 else: response.status_code = 404 return response requests.get.side_effect = side_effect volume = annual.Volume(2001, 12, 2) xml = volume.find_part_xml(111) self.assertEqual(len(xml.xpath('./EAR')), 1) self.assertEqual(xml.xpath('./EAR')[0].text, 'Pt. 111') self.assertEqual(len(xml.xpath('./FIELD')), 1) self.assertEqual(xml.xpath('./FIELD')[0].text, '111 Content') xml = volume.find_part_xml(112) self.assertEqual(len(xml.xpath('./EAR')), 1) self.assertEqual(xml.xpath('./EAR')[0].text, 'Pt. 112') self.assertEqual(len(xml.xpath('./FIELD')), 1) self.assertEqual(xml.xpath('./FIELD')[0].text, '112 Content') self.assertEqual(volume.find_part_xml(113), None)
def test_find_part_local(self): """Verify that a local copy of the annual edition content is checked""" with CliRunner().isolated_filesystem(): path = os.path.join(xml_sync.GIT_DIR, 'annual') os.makedirs(path) path = os.path.join(path, 'CFR-2020-title11-vol12-part13.xml') with open(path, 'w') as f: f.write('<ROOT><CHILD>content</CHILD></ROOT>') xml = annual.Volume(2020, 11, 12).find_part_xml(13) self.assertEqual(xml.xpath('./CHILD')[0].text, 'content')
def test_should_contain__empty_volume(self): """If the first volume does not contain a PARTS tag, we should assume that it covers all of the regs in this title""" self.expect_xml_http(""" <CFRDOC> <SOMETHINGELSE>Here</SOMETHINGELSE> </CFRDOC> """, uri=re.compile(r".*bulkdata.*")) volume = annual.Volume(2001, 12, 1) self.assertTrue(volume.should_contain(1)) self.assertTrue(volume.should_contain(10)) self.assertTrue(volume.should_contain(100)) self.assertTrue(volume.should_contain(1000))
def test_find_part_local(self, http_client): """Verify that a local copy of the annual edition content is checked""" http_client.return_value.get.return_value.status_code = 200 http_client.return_value.get.return_value.content = b""" <PART> <EAR>Pt. 111</EAR> <HD SOURCE="HED">PART 111-Something</HD> <FIELD>111 Content</FIELD> </PART>""" volume = annual.Volume(2001, 12, 1) volume.find_part_xml(111) assert http_client.return_value.get.call_count == 1 http_client.return_value.get.return_value.status_code = 404 volume.find_part_xml(111) assert http_client.return_value.get.call_count == 3
def test_should_contain2(self): pt111 = """ <PART> <EAR>Pt. 111</EAR> <HD SOURCE="HED">PART 111-Something</HD> <FIELD>111 Content</FIELD> </PART>""" pt112 = """ <PART> <EAR>Pt. 112</EAR> <HD SOURCE="HED">PART 112-Something</HD> <FIELD>112 Content</FIELD> </PART>""" self.expect_xml_http(pt111, uri=re.compile(r".*part111\.xml")) self.expect_xml_http(pt112, uri=re.compile(r".*part112\.xml")) self.expect_xml_http(status=404, uri=re.compile(r".*part113\.xml")) self.expect_xml_http(""" <CFRDOC> <AMDDATE>Jan 1, 2001</AMDDATE> <PARTS>Part 111 to 222</PARTS> %s %s </CFRDOC>""" % (pt111, pt112), uri=re.compile(r".*bulkdata.*")) volume = annual.Volume(2001, 12, 2) xml = volume.find_part_xml(111) self.assertEqual(len(xml.xpath('./EAR')), 1) self.assertEqual(xml.xpath('./EAR')[0].text, 'Pt. 111') self.assertEqual(len(xml.xpath('./FIELD')), 1) self.assertEqual(xml.xpath('./FIELD')[0].text, '111 Content') xml = volume.find_part_xml(112) self.assertEqual(len(xml.xpath('./EAR')), 1) self.assertEqual(xml.xpath('./EAR')[0].text, 'Pt. 112') self.assertEqual(len(xml.xpath('./FIELD')), 1) self.assertEqual(xml.xpath('./FIELD')[0].text, '112 Content') self.assertEqual(volume.find_part_xml(113), None)