Example #1
0
def test_recalculate_petitions(petition):
    petition = PetitionFactory(form_type=constants.UNDERAGED_CONVICTIONS)
    batch = petition.batch
    record = CIPRSRecordFactory(batch=batch,
                                jurisdiction=constants.DISTRICT_COURT,
                                county="DURHAM")
    offense = OffenseFactory(
        disposition_method="PROBATION OTHER",
        ciprs_record=record,
        jurisdiction=constants.DISTRICT_COURT,
    )
    offense_record_ids = []
    for i in range(12):
        offense_record = OffenseRecordFactory(offense=offense,
                                              action="CHARGED")
        petition.offense_records.add(offense_record)
        if len(offense_record_ids) < 5:
            offense_record_ids.append(offense_record.id)
    link_offense_records(petition)
    create_documents(petition)

    assert (petition.offense_records.filter(
        petitionoffenserecord__active=True).count() == 12)
    assert petition.has_attachments()
    recalculate_petitions(petition.id, offense_record_ids)
    assert (petition.offense_records.filter(
        petitionoffenserecord__active=True).count() == 5)
    assert not petition.has_attachments()
def test_paginator_attachment_records__11(petition, paginator, records_11):
    link_offense_records(petition)
    records = list(paginator.attachment_offense_records())
    # one attachment
    assert len(records) == 1
    # first attachment has 1 record
    assert records[0].count() == 1
def test_link_offense_records__11(petition, records_11):
    link_offense_records(petition)
    create_documents(petition)
    # one attachment
    assert petition.has_attachments()
    # first attachment has 1 record
    assert petition.documents.order_by(
        "id").last().offense_records.count() == 1
def test_paginator_attachment_records__25(petition, paginator, records_35):
    link_offense_records(petition)
    records = list(paginator.attachment_offense_records())
    # two attachments
    assert len(records) == 2
    # first attachment has 20 records
    assert records[0].count() == 20
    # 2nd attachment has 5 records
    assert records[1].count() == 5
def test_link_offense_records__25(petition, records_35):
    link_offense_records(petition)
    create_documents(petition)
    # two attachments
    assert petition.documents.count() == 3
    attachments = petition.documents.filter(
        previous_document__isnull=False).order_by("id")
    # first attachment has 20 records
    assert attachments[0].offense_records.count() == 20
    # 2nd attachment has 5 records
    assert attachments[1].offense_records.count() == 5
def test_paginator_same_record_number_order(petition, records_10):
    # get the 10th offense record so we can attach one more offense
    # record to the same CIPRSRecord, so that it crosses the
    # attachment boundary
    charge_1 = petition.get_all_offense_records().last()
    # attach a 2nd dismissed charge
    charge_2 = OffenseRecordFactory(
        offense=OffenseFactory(
            disposition_method=dismissed.DISMISSED_DISPOSITION_METHODS[0],
            ciprs_record=charge_1.offense.ciprs_record,
            jurisdiction=constants.DISTRICT_COURT,
        ),
        action="CHARGED",
    )
    link_offense_records(petition)
    create_documents(petition)
    attachment = (petition.documents.filter(
        previous_document__isnull=False).order_by("pk").first())
    # the 1st charge should always be on the first petition
    assert charge_1.pk in petition.offense_records.values_list("pk", flat=True)
    # the 2nd charge should always be on the attachment
    assert charge_2.pk in attachment.offense_records.values_list("pk",
                                                                 flat=True)
def test_link_offense_records__10(petition, records_10):
    link_offense_records(petition)
    assert petition.offense_records.count() == 10
    assert not petition.has_attachments()
def test_paginator_attachment_records__10(petition, paginator, records_10):
    link_offense_records(petition)
    # no attachments
    assert not list(paginator.attachment_offense_records())
def test_paginator_petition_offense_records(petition, paginator, records_11):
    link_offense_records(petition)
    assert paginator.petition_offense_records().count() == 10
def test_paginator_orders_records_correctly(batch, petition):
    def create_new_ciprs_record(file_no):
        ciprs_record = CIPRSRecordFactory(
            batch=batch,
            file_no=file_no,
            jurisdiction=constants.DISTRICT_COURT,
            county="DURHAM",
        )
        offense = OffenseFactory(
            ciprs_record=ciprs_record,
            jurisdiction=constants.DISTRICT_COURT,
            disposition_method=dismissed.DISMISSED_DISPOSITION_METHODS[0],
        )
        offense_record = OffenseRecordFactory(offense=offense)
        return offense_record.id

    # 11 records total
    id1 = create_new_ciprs_record("99CRAAAAAAAAAAAA")
    id2 = create_new_ciprs_record("00CRBBBBBBBBBBBBB")
    id3 = create_new_ciprs_record("99CRCCCCCCCCCCCC")
    id4 = create_new_ciprs_record("99CRBBBBBBBBBBBB")
    id5 = create_new_ciprs_record("90CRAAAAAAAAAAAA")
    id6 = create_new_ciprs_record("20CRAAAAAAAAAAAA")
    id7 = create_new_ciprs_record("98CRAAAAAAAAAAAA")
    id8 = create_new_ciprs_record("99CRDDDDDDDDDDDD")
    id9 = create_new_ciprs_record("99CRAAAAAAAAAAAA")
    id10 = create_new_ciprs_record("00CRAAAAAAAAAAAA")
    id11 = create_new_ciprs_record("98CRBBBBBBBBBBBB")

    EXPECTED_ORDER_FIRST_FORM = [
        id5,
        id7,
        id11,
        id1,
        id9,
        id4,
        id3,
        id8,
        id10,
        id2,
    ]
    EXPECTED_ORDER_SECOND_FORM = [
        id6,
    ]
    EXPECTED_ORDER_ACROSS_FORMS = EXPECTED_ORDER_FIRST_FORM + EXPECTED_ORDER_SECOND_FORM

    link_offense_records(petition)
    create_documents(petition)
    main_document = petition.base_document
    attachment = petition.documents.filter(
        previous_document__isnull=False).first()

    main_petition_form = AOCFormCR287(main_document)
    attachment_petition_form = AOCFormCR285(attachment)

    assert (list(petition.get_all_offense_records().values_list(
        "id", flat=True)) == EXPECTED_ORDER_ACROSS_FORMS)

    assert (list(main_petition_form.get_ordered_offense_records().values_list(
        "id", flat=True)) == EXPECTED_ORDER_FIRST_FORM)
    assert (list(
        attachment_petition_form.get_ordered_offense_records().values_list(
            "id", flat=True)) == EXPECTED_ORDER_SECOND_FORM)