def test_enqueue_opinions(self):
        test_date = date(2011, 06, 17)
        expected_html = open(TEST_OPINION_PATH + "nysd.2011_06_17.opinions.html").read()
        expected_dockets = PP.parse_opinions(expected_html, 'nysd')
        
        expected_pdf_bits = open(TEST_PDF_PATH + 'gov.uscourts.nysd.351385.14.0.pdf').read()

        # Set up the test environment 
        # monkey patch out dependencies on pacer and rabbitmq
        self.downloader.get_opinions = Mock(return_value=expected_dockets)
        self.downloader.get_document = Mock(return_value=expected_pdf_bits)
        self.downloader.channel.basic_publish = mock_publish_call = Mock()

        self.downloader.enqueue_opinions('nysd', test_date, test_date)
        self.assertEquals(2, mock_publish_call.call_count)
        
        messages = [pickle.loads(args[1]['body']) \
                        for args in mock_publish_call.call_args_list]

        filenames = [m['docket_filename'] for m in messages]
        
        document_maps = [m['docnums_to_filename'] for m in messages]
                        
        #print filenames
        for filename in filenames:
            with open(filename) as f:
                self.assertTrue(f.read() != None)
            # cleanup
            os.unlink(filename)

        for docmap in document_maps:
            self.assertEquals(1, len(docmap))
            self.assertTrue(re.match(r'\d+-0', docmap.keys()[0]))
示例#2
0
  def test_all_bankruptcy_dktrpts_for_parties_basics(self):
    count =0

    no_parties_dockets = []
    one_parties_dockets = []

    for filename in os.listdir(BANK_TEST_DOCKET_PATH):
       court, casenum = filename.split(".")[:2]
       soup = _open_soup("/".join([BANK_TEST_DOCKET_PATH, filename]))

       parties = PP._get_parties_info_from_dkrpt(soup,court) 

       if len(parties)==0:
           no_parties_dockets.append(filename)
       if len(parties) == 1: 
	   one_parties_dockets.append(filename)

    print ""
    print "Dockets with no parties:"
    for filename in no_parties_dockets:
         print filename

    print "Dockets with only one party (possible error): "
    for filename in one_parties_dockets:
	 print filename
示例#3
0
    def test_enqueue_opinions(self):
        test_date = date(2011, 06, 17)
        expected_html = open(TEST_OPINION_PATH +
                             "nysd.2011_06_17.opinions.html").read()
        expected_dockets = PP.parse_opinions(expected_html, 'nysd')

        expected_pdf_bits = open(TEST_PDF_PATH +
                                 'gov.uscourts.nysd.351385.14.0.pdf').read()

        # Set up the test environment
        # monkey patch out dependencies on pacer and rabbitmq
        self.downloader.get_opinions = Mock(return_value=expected_dockets)
        self.downloader.get_document = Mock(return_value=expected_pdf_bits)
        self.downloader.channel.basic_publish = mock_publish_call = Mock()

        self.downloader.enqueue_opinions('nysd', test_date, test_date)
        self.assertEquals(2, mock_publish_call.call_count)

        messages = [pickle.loads(args[1]['body']) \
                        for args in mock_publish_call.call_args_list]

        filenames = [m['docket_filename'] for m in messages]

        document_maps = [m['docnums_to_filename'] for m in messages]

        #print filenames
        for filename in filenames:
            with open(filename) as f:
                self.assertTrue(f.read() != None)
            # cleanup
            os.unlink(filename)

        for docmap in document_maps:
            self.assertEquals(1, len(docmap))
            self.assertTrue(re.match(r'\d+-0', docmap.keys()[0]))
示例#4
0
  def test_parse_dktrpt(self):
    test_dockets = ['mieb.600286.html']

    for filename in test_dockets:
      court, casenum = filename.split(".")[:2]
      f = open("/".join([BANK_TEST_DOCKET_PATH, filename]))
      filebits = f.read()
      
      docket = PP.parse_dktrpt(filebits, court, casenum)
示例#5
0
 def test_bankruptcy_relative_doc1_links(self):
   relfilebits = open(BANK_TEST_DOCKET_PATH+ "flsb.575106" + ".html").read()
   reldocket = PP.parse_dktrpt(relfilebits, "flsb", "575106")
   self.assertEquals(len(reldocket.documents), 20)
   document = reldocket.documents['1-0']
   self.assertEquals("1", document['doc_num'])
   self.assertEquals("0", document['attachment_num'])
   self.assertEquals("050020328570", document['pacer_doc_id'])
   self.assertEquals("2011-12-30", document['date_filed'])
   self.assertEquals("Chapter 7 Voluntary Petition . [Fee Amount $306] (Segaul, John) (Entered: 12/30/2011)", document['long_desc'])
示例#6
0
  def test_docket_output(self):
    docket_list = ["nysd.39589.html"]
    
    for filename in docket_list:
      court, casenum = filename.split(".")[:2]
      f = open("/".join([TEST_DOCKET_PATH, filename]))
      filebits = f.read()
      
      docket = PP.parse_dktrpt(filebits, court, casenum)

      docket_xml = docket.to_xml()
    def test_download_opinions(self):
        #TODO: Change this test to only use html tests.
        # Pacer client tests shouldn't depend on parse pacer
        test_date = date(2011, 06, 17)

        expected_html = open(TEST_OPINION_PATH + "nysd.2011_06_17.opinions.html").read()
        expected_dockets = PP.parse_opinions(expected_html, 'nysd')

        opinions_html = self.pacer_client.get_opinions_html(court='nysd',
                                                       start_date = test_date,
                                                       end_date = test_date)

        dockets = PP.parse_opinions(opinions_html, 'nysd')

        self.assertEquals(len(expected_dockets), len(dockets))

        for d in dockets:
            self.assertTrue(d.get_casenum() in [e.get_casenum() for e in expected_dockets])
            casemeta = d.get_casemeta()
            self.assertTrue(casemeta['case_name'] in [e.get_casemeta()['case_name']
                                                            for e in expected_dockets])
示例#8
0
    def test_download_opinions(self):
        #TODO: Change this test to only use html tests.
        # Pacer client tests shouldn't depend on parse pacer
        test_date = date(2011, 06, 17)

        expected_html = open(TEST_OPINION_PATH +
                             "nysd.2011_06_17.opinions.html").read()
        expected_dockets = PP.parse_opinions(expected_html, 'nysd')

        opinions_html = self.pacer_client.get_opinions_html(
            court='nysd', start_date=test_date, end_date=test_date)

        dockets = PP.parse_opinions(opinions_html, 'nysd')

        self.assertEquals(len(expected_dockets), len(dockets))

        for d in dockets:
            self.assertTrue(
                d.get_casenum() in [e.get_casenum() for e in expected_dockets])
            casemeta = d.get_casemeta()
            self.assertTrue(
                casemeta['case_name'] in
                [e.get_casemeta()['case_name'] for e in expected_dockets])
示例#9
0
  def test_all_bankruptcy_dockets_for_case_metadata(self):
    count =0
    no_assigned_to_dockets = ['njb.764045.html', 'flmb.923870.html']

    unknown_cases= []
    no_date_filed = []

    for filename in os.listdir(BANK_TEST_DOCKET_PATH):
       soup = _open_soup("/".join([BANK_TEST_DOCKET_PATH, filename]))

       court, casenum = filename.split(".")[:2]
       case_data = PP._get_case_metadata_from_dktrpt(soup, court)
	    
       try:
           print count, filename, court, casenum, case_data["docket_num"], case_data["case_name"],"::", case_data["assigned_to"]
       except KeyError:
	  pass
	    
       #self.assertTrue("date_case_filed" in case_data)
       self.assertTrue("docket_num" in case_data)
       self.assertTrue("case_name" in case_data)
       self.assertTrue("date_case_filed" in case_data)

       if filename not in no_assigned_to_dockets:
	    self.assertTrue("assigned_to" in case_data)
	    
       if "date_case_filed" not in case_data:
            no_date_filed.append(filename)

       if case_data["case_name"] == "Unknown Bankruptcy Case Title":
            unknown_cases.append( (filename, case_data["case_name"]))

       count+=1

    print "No Date filed:"
    for filename in no_date_filed:
	    print filename
	    
    print "\nUnknown casename cases:"
    for filename, name in unknown_cases:
       print filename, name
示例#10
0
  def test_get_parties_info_from_dkrpt_multiple_tables(self): 
    the_soup = _open_soup(TEST_DOCKET_PATH + "mad.137971.html")
    parties = PP._get_parties_info_from_dkrpt(the_soup, "mad")
    self.assertEquals(len(parties), 4)
    
    self.assertEquals(parties[0]["name"], "Aaron Swartz")
    self.assertEquals(parties[0]["extra_info"], "TERMINATED: 01/14/2013")
    self.assertEquals(len(parties[0]["attorneys"]), 6)

    self.assertEquals(parties[1]["name"], "Massachusetts Institute of Technology")
    self.assertEquals(len(parties[1]["attorneys"]), 2)
    self.assertEquals(parties[1]["type"], "Interested Party")

    self.assertEquals(parties[2]["name"], "JSTOR")
    self.assertEquals(len(parties[2]["attorneys"]), 1)
    self.assertEquals(parties[2]["type"], "Interested Party")
    
    self.assertEquals(parties[3]["name"], "USA")
    self.assertEquals(len(parties[3]["attorneys"]), 3)
    self.assertEquals(parties[3]["type"], "Plaintiff")
    self.assertEquals(parties[3]["attorneys"][0]["attorney_name"], "Jack W. Pirozzolo")
    self.assertEquals(parties[3]["attorneys"][1]["attorney_name"], "Scott Garland")
    self.assertEquals(parties[3]["attorneys"][2]["attorney_name"], "Stephen P. Heymann")
示例#11
0
  def test_merge_dockets(self):
    no_parties_path = TEST_DOCKET_PATH + "noPartiesXML/"
    no_parties_list = ["cit7830", "cit7391", "caedSomeParties", "candSomeAttys"]
    no_parties_filebits = {}
    for xml in no_parties_list:
        f = open(no_parties_path + xml + ".xml")
	no_parties_filebits[xml] = f.read()
	f.close()
    docketfilebits = {}
     

    for docket in TEST_DOCKET_LIST:
	    f = open(TEST_DOCKET_PATH + docket + "docket.html")
	    docketfilebits[docket] = f.read()
	    f.close()

    # Test merging with no parties in original (olddocket)
    docket = PP.parse_dktrpt(docketfilebits["cit7830"],"cit", "7830")
    olddocket, err =  DocketXML.parse_xml_string(no_parties_filebits["cit7830"]) 

    # Sanity Check
    self.assertNotEquals([], docket.parties)
    self.assertEquals([], olddocket.parties)
    olddocket.merge_docket(docket)
    self.assertEquals(olddocket.parties, docket.parties)


    
    docket = PP.parse_dktrpt(docketfilebits["cit7391"],"cit", "7391")
    olddocket, err =  DocketXML.parse_xml_string(no_parties_filebits["cit7391"]) 

    # Sanity Check
    self.assertNotEquals([], docket.parties)
    self.assertEquals([], olddocket.parties)
    olddocket.merge_docket(docket)
    self.assertEquals(olddocket.parties, docket.parties)

    
    # Test merging with some parties in original (olddocket)
    docket = PP.parse_dktrpt(docketfilebits["caed"],"caed", "7830")
    olddocket, err =  DocketXML.parse_xml_string(no_parties_filebits["caedSomeParties"]) 
    # Sanity Check
    self.assertEquals(6, len(docket.parties))
    self.assertEquals(4, len(olddocket.parties))

    olddocket.merge_docket(docket)

    self.assertEquals(6, len(olddocket.parties))
    self.assertTrue(sorted(olddocket.parties) == sorted(docket.parties))

    # Test merging with same num of parties but different number of attorneys
    docket = PP.parse_dktrpt(docketfilebits["cand2"],"cand2", "7830")
    olddocket, err =  DocketXML.parse_xml_string(no_parties_filebits["candSomeAttys"]) 

    # Sanity
    self.assertEquals("James Brady", olddocket.parties[0]["name"])
    self.assertEquals(1, len(olddocket.parties[0]["attorneys"]))
    self.assertEquals(3, len(docket.parties[0]["attorneys"]))

    self.assertEquals(-1, olddocket.parties[0]["attorneys"][0]["attorney_role"].find("TERMINATED"))

    olddocket.merge_docket(docket)

    self.assertEquals(3, len(olddocket.parties[0]["attorneys"]))
    self.assertNotEquals(-1, olddocket.parties[0]["attorneys"][0]["attorney_role"].find("TERMINATED"))
示例#12
0
  def test_get_parties_info_from_dkrpt(self): 
    testdockets = {}
    for docket in TEST_DOCKET_LIST:
	    testdockets[docket] = _open_soup(TEST_DOCKET_PATH + docket + "docket.html")

    parties = PP._get_parties_info_from_dkrpt(testdockets["txed"], "txed")
    self.assertEquals(len(parties), 14)
    self.assertEquals(parties[0]["name"], "AOL LLC")
    self.assertEquals(parties[0]["extra_info"], "TERMINATED: 03/26/2008")
    self.assertEquals(parties[2]["type"], "Mediator")
    self.assertEquals(parties[2]["name"], "James W. Knowles")

    parties = PP._get_parties_info_from_dkrpt(testdockets["deb"], "deb")

    self.assertEquals(len(parties), 9)
    self.assertEquals(parties[0]["name"], "American Business Financial Services, Inc., a Delaware Corporation")
    self.assertEquals(parties[0]["type"], "Debtor")
    self.assertEquals(len(parties[0]["attorneys"]), 9)
    self.assertEquals(parties[0]["attorneys"][0]["attorney_name"], "Bonnie Glantz Fatell")
    self.assertEquals(parties[0]["attorneys"][0]["attorney_role"], "TERMINATED: 04/11/2006")
    self.assertEquals(len(parties[1]["attorneys"]), 11)
    self.assertEquals(len(parties[1]["attorneys"]), 11)

    
    parties = PP._get_parties_info_from_dkrpt(testdockets["almb"], "almb")

    self.assertEquals(len(parties), 2)
    self.assertEquals(parties[0]["name"], "Ruthie Harris")
    # Should be no attorneys object
    self.assertEquals(parties[1].get("attorneys"), None)


    parties = PP._get_parties_info_from_dkrpt(testdockets["almd"], "almd")

    self.assertEquals(len(parties), 2)
    self.assertEquals(parties[0]["name"], "Joyce Efurd")
    self.assertEquals(parties[0]["type"], "Plaintiff")
    self.assertEquals(len(parties[0]["attorneys"]), 3)
    self.assertEquals(parties[0]["attorneys"][0]["attorney_name"], "Allen Durham Arnold")
    self.assertEquals(parties[0]["attorneys"][0]["attorney_role"], "LEAD ATTORNEY\nATTORNEY TO BE NOTICED")
    self.assertEquals(len(parties[1]["attorneys"]), 3)
    # Should be no extra_info
    self.assertEquals(parties[0].get("extra_info"), None)
    
    parties = PP._get_parties_info_from_dkrpt(testdockets["cit"], "cit")
    self.assertEquals(len(parties), 4)
    self.assertEquals(parties[0]["name"], "New Hampshire Ball Bearing, Inc.")
    self.assertEquals(parties[0]["type"], "Plaintiff")
    self.assertEquals(len(parties[0]["attorneys"]), 1)
    self.assertEquals(parties[0]["attorneys"][0]["attorney_name"], "Frank H. Morgan")
    self.assertEquals(parties[0]["attorneys"][0]["attorney_role"], "LEAD ATTORNEY\nATTORNEY TO BE NOTICED")
#    self.assertEquals(parties[2]["name"], "United States Customs and Border Protection")
    self.assertEquals(len(parties[2]["attorneys"]), 1)
    
    # This document has no parties, but it shouldn't break anything when doing that
    parties = PP._get_parties_info_from_dkrpt(testdockets["cit2"], "cit")
    self.assertEquals(len(parties), 0)

    """ this docket doesn't work - errors in creating beautiful soup
    parties = PP._get_parties_info_from_dkrpt(testdockets["akd"], "akd")
    print_parties(parties)
    self.assertEquals(len(parties), 4)
    self.assertEquals(parties[0]["name"], "West American Insurance Company")
    self.assertEquals(parties[0]["type"], "Plaintiff")
    self.assertEquals(len(parties[0]["attorneys"]), 1)
    self.assertEquals(parties[0]["attorneys"][0]["attorney_name"], "Brewster H. Jamieson")
    self.assertEquals(parties[0]["attorneys"][0]["attorney_role"], "LEAD ATTORNEY\nATTORNEY TO BE NOTICED")
    self.assertEquals(len(parties[1]["attorneys"]), 0)
    """
    parties = PP._get_parties_info_from_dkrpt(testdockets["cand"], "cand")
    self.assertEquals(len(parties), 3)
    self.assertEquals(parties[0]["name"], "John Michael Balbo")
    self.assertEquals(parties[0]["type"], "Petitioner")
    self.assertTrue("PRO SE" in parties[0]["attorneys"][0]["contact"])
    self.assertEquals(len(parties[0]["attorneys"]), 1)
    self.assertEquals(parties[1]["extra_info"], "Secretary CDCR")

    parties = PP._get_parties_info_from_dkrpt(testdockets["cand2"], "cand")
    self.assertEquals(len(parties), 4)
    self.assertEquals(parties[0]["name"], "James Brady")
    self.assertEquals(parties[0]["type"], "Plaintiff")
    self.assertEquals(parties[1]["name"], "Sarah Cavanagh")
    self.assertEquals(parties[1]["type"], "Plaintiff" )
    self.assertEquals(parties[1]["extra_info"], "individually and on behalf of all others similarly situated" )
    self.assertEquals(len(parties[0]["attorneys"]), 3)
    self.assertEquals(parties[2]["name"], "Deloitte & Touche LLP")
    self.assertEquals(parties[2]["extra_info"], "a limited liability partnership")
    self.assertEquals(parties[3]["name"], "Deloitte Tax LLP")
    self.assertEquals(parties[3]["extra_info"], "TERMINATED: 08/14/2008")


    # There is extra metadata in this one that doesn't appear in others - Pending courts, highest offense level, disposition, etc, not collecting those currently
   # parties = PP._get_parties_info_from_dkrpt(testdockets["cand3"], "cand")
   # self.assertEquals(len(parties), 2)
   # self.assertEquals(len(parties[0]["attorneys"]), 1)
   # self.assertEquals(parties[0]["name"], "Gustavo Alfaro-Medina")

    parties = PP._get_parties_info_from_dkrpt(testdockets["caed"], "caed")
    self.assertEquals(len(parties), 6)
    self.assertEquals(len(parties[0]["attorneys"]), 1)
    self.assertEquals(parties[0]["name"], "Corey Mitchell")
    self.assertEquals(parties[1]["extra_info"], "Correctional Officer")

    parties = PP._get_parties_info_from_dkrpt(testdockets["ded"], "ded")
    self.assertEquals(len(parties), 4)
    self.assertEquals(len(parties[0]["attorneys"]), 2)
    self.assertEquals(parties[0]["name"], "Cubist Pharmaceuticals Inc.")

    parties = PP._get_parties_info_from_dkrpt(testdockets["cacd"], "cacd")
    self.assertEquals(len(parties), 18)
    self.assertEquals(len(parties[0]["attorneys"]), 2)
    self.assertEquals(parties[0]["name"], "LA Printex Industries Inc")
示例#13
0
  def test_bankruptcy_parties_info_from_dkrpt(self):
    bank_dockets_list = ["njb.658906", "mnb.325447", "mdb.532409", "nvb.242643", "mieb.600286", "mdb.541423"]

    bank_soups = {}
    for docket in bank_dockets_list:
        bank_soups[docket] = _open_soup(BANK_TEST_DOCKET_PATH + docket + ".html")

    # Normal bankruptcy proceedings
    parties = PP._get_parties_info_from_dkrpt(bank_soups["mdb.532409"], "mdb")
    self.assertEquals(len(parties), 3)
    self.assertEquals(parties[0]["name"], "Rodney K. Cunningham")
    self.assertEquals(parties[0]["type"], "Debtor")
    self.assertEquals(len(parties[0]["attorneys"]), 1)
    self.assertEquals(parties[0]["attorneys"][0]["attorney_name"], "Sopo Ngwa")
    self.assertEquals(parties[1]["name"], "Karen S. Cunningham")
    self.assertEquals(parties[1]["type"], "Debtor")
    self.assertEquals(len(parties[1]["attorneys"]), 1)
    self.assertEquals(parties[1]["attorneys"][0]["attorney_name"], "Sopo Ngwa")
    self.assertEquals(parties[2]["type"], "Trustee")
     
    parties = PP._get_parties_info_from_dkrpt(bank_soups["nvb.242643"], "nvb")
    self.assertEquals(len(parties), 4)
    self.assertEquals(parties[0]["name"], "PAUL OGALESCO")
    self.assertTrue("PRO SE" in parties[0]["attorneys"][0]["contact"])
    self.assertEquals(parties[0]["type"], "Debtor")
    self.assertEquals(len(parties[0]["attorneys"]), 1)
    self.assertEquals(parties[1]["name"], "RICK A. YARNALL")
    self.assertEquals(parties[1]["type"], "Trustee")
    self.assertTrue("TERMINATED" in parties[1]["extra_info"])

    # Adversary Proceeding type docket
    parties = PP._get_parties_info_from_dkrpt(bank_soups["njb.658906"], "njb")
    self.assertEquals(len(parties), 6)
    self.assertEquals(parties[0]["name"], "Richard A. Spair")
    self.assertEquals(parties[0]["type"], "Plaintiff")
    self.assertEquals(len(parties[0]["attorneys"]), 1)
    self.assertEquals(parties[0]["attorneys"][0]["attorney_name"], "Eugene D. Roth")
    self.assertEquals(parties[1]["attorneys"][1]["attorney_role"], "LEAD ATTORNEY")
    self.assertEquals(parties[3]["name"], "Albert Russo")
    self.assertEquals(parties[3]["type"], "Trustee")


    parties = PP._get_parties_info_from_dkrpt(bank_soups["mnb.325447"], "mnb")
    self.assertEquals(len(parties), 2)
    self.assertEquals(parties[0]["name"], "RANDALL L SEAVER")
    self.assertEquals(parties[0]["type"], "Plaintiff")
    self.assertEquals(parties[0]["extra_info"], "101 W. Burnsville Pkwy., Suite 201\nBurnsville, MN 55337")
    self.assertEquals(len(parties[0]["attorneys"]), 1)
    self.assertEquals(parties[0]["attorneys"][0]["attorney_name"], "Matthew R. Burton")
    
    parties = PP._get_parties_info_from_dkrpt(bank_soups["mieb.600286"], "mieb")
    

    miebfilebits = open(BANK_TEST_DOCKET_PATH+ "mieb.600286" + ".html").read()

    miebdocket = PP.parse_dktrpt(miebfilebits, "mieb", "600286")
    
    # mdb Adversary proceedings have slightly different formats, more similar to normal bank, but still different enough to crash parsepacer
    parties = PP._get_parties_info_from_dkrpt(bank_soups["mdb.541423"], "mdb")
    self.assertEquals(len(parties), 3)
    self.assertEquals(parties[0]["name"], "Metamorphix, Inc.")
    self.assertEquals(parties[0]["type"], "Plaintiff")
    self.assertEquals(parties[0]["extra_info"], "Metamorphix, Inc.\nAttn: Dr. Edwin Quattlebaum\n8000 Virginia Manor Road\nBeltsville, MD 20705")
    self.assertEquals(len(parties[0]["attorneys"]), 2)
    self.assertEquals(parties[0]["attorneys"][0]["attorney_name"], "Peter D. Guattery")
    self.assertEquals(parties[1]["name"], "Edwin Quattlebaum")
    self.assertEquals(parties[1]["type"], "Plaintiff")
    self.assertEquals(parties[2]["name"], "Theresa Brady")
    self.assertEquals(parties[2]["type"], "Defendant")
  def test_parse_opinions(self):
    opinion_filelist = ["akd.1900", "akd.2010", "nysd.2009"]

    #test empty file
    filebits = open('/dev/null').read()
    dockets = PP.parse_opinions(filebits, 'test')
    self.assertEquals([], dockets)

    filebits = {}

    for opinion_file in opinion_filelist:
        f = open(TEST_OPINION_PATH + opinion_file + ".opinions.html")
        filebits[opinion_file] = f.read()
        f.close()
    
    #test valid opinion file with no entries
    dockets = PP.parse_opinions(filebits["akd.1900"], "akd")
    self.assertEquals([], dockets) 

    dockets = PP.parse_opinions(filebits["akd.2010"], "akd")
    self.assertEquals(78, len(dockets) ) # number of entries in the opinions table
    
    #check basic metadata
    self.assertEquals("akd", dockets[0].get_court())
    self.assertEquals("12460", dockets[0].get_casenum())
    casemeta = dockets[0].get_casemeta()
    self.assertEquals("Steffensen v. City of Fairbanks et al", casemeta['case_name'])
    self.assertEquals("4:09-cv-00004-RJB", casemeta['docket_num'])
    self.assertEquals("42:1983 Prisoner Civil Rights", casemeta["case_cause"])
    self.assertEquals("Civil Rights: Other", casemeta["nature_of_suit"])
    self.assertEquals(1, len(dockets[0].documents))

    document = dockets[0].documents['98-0']
    self.assertEquals("98", document['doc_num'])
    self.assertEquals("0", document['attachment_num'])
    self.assertEquals("563", document['pacer_de_seq_num'])
    self.assertEquals("602530", document['pacer_dm_id'])
    self.assertEquals("2010-01-05", document['date_filed'])
    self.assertEquals("Order Dismissing Case", document['long_desc'])


    self.assertEquals("akd", dockets[1].get_court())
    self.assertEquals("18239", dockets[1].get_casenum())
    casemeta = dockets[1].get_casemeta()
    self.assertEquals("Kahle v. Executive Force Australia PTY LTD", casemeta['case_name'])
    self.assertEquals("2:09-cv-00008-JWS", casemeta['docket_num'])
    self.assertEquals("28:1441 Petition for Removal- Personal Injury", casemeta["case_cause"])
    self.assertEquals("Personal Inj. Prod. Liability", casemeta["nature_of_suit"])
    self.assertEquals(1, len(dockets[1].documents))

    document = dockets[1].documents['27-0']
    self.assertEquals("27", document['doc_num'])
    self.assertEquals("0", document['attachment_num'])
    self.assertEquals("142", document['pacer_de_seq_num'])
    self.assertEquals("603861", document['pacer_dm_id'])
    self.assertEquals("2010-01-07", document['date_filed'])
    self.assertEquals("Order on Motion for Hearing, Order on Motion to Amend/Correct, Order on Motion to Remand to State Court, Order on Motion to Strike", document['long_desc'])

    self.assertEquals("akd", dockets[5].get_court())
    self.assertEquals("15580", dockets[5].get_casenum())
    casemeta = dockets[5].get_casemeta()
    self.assertEquals("USA v. Celestine et al", casemeta['case_name'])
    self.assertEquals("3:2009-cr-00065-HRH", casemeta['docket_num'])
    self.assertEquals(None, casemeta.get("case_cause"))
    self.assertEquals(None, casemeta.get("nature_of_suit"))
    self.assertEquals(1, len(dockets[5].documents))

    document = dockets[5].documents['135-0']
    self.assertEquals("135", document['doc_num'])
    self.assertEquals("0", document['attachment_num'])
    self.assertEquals("794", document['pacer_de_seq_num'])
    self.assertEquals("616260", document['pacer_dm_id'])
    self.assertEquals(datetime.date.today().isoformat(), document['date_filed'])
    self.assertEquals("Order on Motion for Bill of Particulars, Order on Motion for Joinder", document['long_desc'])

    #Sometimes the document url case id does not match the court case id
    #  In these cases we want to use the parent case number, but also have access to the child casenum
    self.assertEquals("akd", dockets[2].get_court())
    self.assertEquals("4655", dockets[2].get_casenum())
    casemeta = dockets[2].get_casemeta()
    self.assertEquals("USA v. Kott et al", casemeta['case_name'])
    self.assertEquals("3:2007-cr-00056-JWS", casemeta['docket_num'])
    self.assertEquals(1, len(dockets[2].documents))

    document = dockets[2].documents['429-0']
    self.assertEquals("429", document['doc_num'])
    self.assertEquals("0", document['attachment_num'])
    self.assertEquals("1946", document['pacer_de_seq_num'])
    self.assertEquals("606429", document['pacer_dm_id'])
    self.assertEquals("2010-01-13", document['date_filed'])
    self.assertEquals("Order on Motion to Dismiss", document['long_desc'])

    self.assertEquals("4656", document['casenum'])


    # Some dockets have a different linking format from akd. Let's test these out
    dockets = PP.parse_opinions(filebits["nysd.2009"], "nysd")
    self.assertEquals(5916, len(dockets) ) # number of entries in the opinions table

    
    self.assertEquals("nysd", dockets[0].get_court())
    self.assertEquals("53122", dockets[0].get_casenum())
    casemeta = dockets[0].get_casemeta()
    self.assertEquals("Kingsway Financial v. Pricewaterhouse, et al", casemeta['case_name'])
    self.assertEquals("1:03-cv-05560-RMB-HBP", casemeta['docket_num'])
    self.assertEquals("15:78m(a) Securities Exchange Act", casemeta["case_cause"])
    self.assertEquals("Securities/Commodities", casemeta["nature_of_suit"])
    self.assertEquals(1, len(dockets[0].documents))
    
    document = dockets[0].documents['380-0']
    self.assertEquals("380", document['doc_num'])
    self.assertEquals("0", document['attachment_num'])
    self.assertEquals("6095482", document['pacer_de_seq_num'])
    self.assertEquals("5453339", document['pacer_dm_id'])
    self.assertEquals("2009-01-05", document['date_filed'])
    self.assertEquals("Memorandum & Opinion", document['long_desc'])
    

    # Some sanity checks about iquery type opinion pages

    for docket in dockets:
        self.assertEquals(1, len(docket.documents))
        document = docket.documents.values()[0]
        casenum_diff = int(docket.get_casenum()) - int(document['casenum'])
        self.assertTrue(casenum_diff <= 0)