def test_create_invoice(session):
    """Test create_invoice."""
    pay_account = factory_payment_account(payment_system_code='BCOL',
                                          account_number='BCOL_ACC_1',
                                          bcol_user_id='test')
    pay_account.save()
    payment = factory_payment()
    payment.save()
    i = factory_invoice(payment=payment, payment_account=pay_account)
    i.save()
    fee_schedule = FeeSchedule.find_by_filing_type_and_corp_type('CP', 'OTANN')
    line = factory_payment_line_item(
        i.id, fee_schedule_id=fee_schedule.fee_schedule_id)
    line.save()
    line = PaymentLineItem.find_by_id(line.id)
    # payment_account: PaymentAccount, line_items: [PaymentLineItem], invoice_id: str, **kwargs
    inv = bcol_service.create_invoice(
        payment_account=pay_account,
        line_items=[line],
        invoice=i,
        filing_info={'folioNumber': '1234567890'},
        corp_type_code=i.corp_type_code,
        business_identifier=i.business_identifier)
    assert inv is not None
    assert inv.get('invoice_number') == 'TEST'
def test_get_receipt(session):
    """Test cancel_invoice."""
    pay_account = factory_payment_account(payment_system_code='BCOL', account_number='BCOL_ACC_1', user_id='test')
    pay_account.save()
    payment = factory_payment()
    payment.save()
    i = factory_invoice(payment_id=payment.id, account_id=pay_account.id)
    i.save()
    fee_schedule = FeeSchedule.find_by_filing_type_and_corp_type('CP', 'OTANN')
    line = factory_payment_line_item(i.id, fee_schedule_id=fee_schedule.fee_schedule_id)
    line.save()
    inv_ref = factory_invoice_reference(i.id).save()

    receipt = bcol_service.get_receipt(pay_account, None, inv_ref)
    assert receipt is not None