def test_scrape_sentence_info():
  sentence_info = etree.parse(StringIO("""<sentence_info>
              <program>IPP</program>
              <length_of_sentence>
                <min_length>
                  <time>12.00</time>
                  <unit>Months</unit>
                </min_length>
                <max_length>
                  <time>12.00</time>
                  <unit>Months</unit>
                </max_length>
              </length_of_sentence>
              <date>03/02/2011</date>
              <extra_sentence_details>12 months... HOUSE ARREST FOR FIRST 3 MONTHS. SHERIFF TO T RANSPORT... Complete 20 hours community service...</extra_sentence_details>
            </sentence_info> """))
  sentence_info = scrape_sentence_info(sentence_info)
  assert sentence_info["sentence_program"] == "IPP"
  assert sentence_info["min_length"] == convert_time("12","months")
  assert sentence_info["max_length"] == convert_time("12","months")

  sentence_info = etree.parse(StringIO("""<sentence_info>
              <program>Probation</program>
              <length_of_sentence>
                <min_length>
                  <time>1.00</time>
                  <unit>Years</unit>
                </min_length>
                <max_length>
                  <time>1.00</time>
                  <unit>Years</unit>
                </max_length>
              </length_of_sentence>
              <extra_sentence_details>Max of 1.00 Years... 1 year... Probation is to be served non-reporting....</extra_sentence_details>
            </sentence_info>"""))
  sentence_info = scrape_sentence_info(sentence_info)
  assert sentence_info["min_length"] == datetime.timedelta(days=365*1)
  assert sentence_info["max_length"] == datetime.timedelta(days=365*1)

  # Test a broken one.
  info_missing_program =  etree.parse(StringIO("""<sentence_info>
              <length_of_sentence>
                <min_length>
                  <time>12.00</time>
                  <unit>Months</unit>
                </min_length>
                <max_length>
                  <time>12.00</time>
                  <unit>Months</unit>
                </max_length>
              </length_of_sentence>
              <date>03/02/2011</date>
              <extra_sentence_details>12 months... HOUSE ARREST FOR FIRST 3 MONTHS. SHERIFF TO T RANSPORT... Complete 20 hours community service...</extra_sentence_details>
            </sentence_info> """))
  info_missing_program = scrape_sentence_info(info_missing_program)
  assert info_missing_program["sentence_program"] == "program unknown"
  def test_get_guilty_sequence_records(self):
    docket = Docket("tests/texts/CP-51-CR-0000001-2011_stitched_complete.xml")
    records, errors = docket.get_guilty_sequence_records()
    assert records[0]["judge"] == "Hill, Glynnis"
    assert records[0]["action_date"] == "09/09/2011"
    assert records[0]["charge"] == "Rape Forcible Compulsion"
    assert records[0]["max_length"] == convert_time("15","years")

    # A docket that does not have any guilty sequences to scrape
    docket = Docket("tests/texts/CP-51-CR-0000012-2011_stitched_complete.xml")
    records, errors = docket.get_guilty_sequence_records()
    assert len(records) == 0
def test_convert_time():
  assert convert_time("7 1/2","years") == datetime.timedelta(days=2737.5)
  assert convert_time("1.00","Years") == datetime.timedelta(days=365)
  assert convert_time("1", "year") == datetime.timedelta(days=365)
  assert convert_time("11 1/2","months") == datetime.timedelta(days=349.83000000000004)
  assert convert_time("23","months") == datetime.timedelta(days=699.6600000000001)
  assert convert_time("3.00","Years") == datetime.timedelta(days=1095)