def test_txn_contract_get_or_create():
    """Test TransactionFPDS.get_or_create_2 method."""

    agency1 = mommy.make("references.Agency")
    awd1 = mommy.make("awards.Award", awarding_agency=agency1)
    txn1 = mommy.make(
        "awards.TransactionNormalized",
        award=awd1,
        modification_number="1",
        awarding_agency=agency1,
        last_modified_date=date(2012, 3, 1),
    )
    mommy.make("awards.TransactionFPDS",
               transaction=txn1,
               piid="abc",
               base_and_all_options_value=1000)
    assert TransactionFPDS.objects.all().count() == 1

    # an updated transaction should also update existing TransactionFPDS
    # data, not insert a new record
    tc_dict = {"piid": "abc", "base_and_all_options_value": 5000}
    tc2 = TransactionFPDS.get_or_create_2(txn1, **tc_dict)
    tc2.save()
    assert TransactionFPDS.objects.all().count() == 1
    t = TransactionNormalized.objects.get(id=txn1.id)
    assert t.contract_data.piid == "abc"
    assert t.contract_data.base_and_all_options_value == "5000"

    # a new transaction gets a new TransactionFABS record
    tc_dict = {"piid": "xyz", "base_and_all_options_value": 5555}
    tc3 = TransactionFPDS.get_or_create_2(
        mommy.make("awards.TransactionNormalized"), **tc_dict)
    tc3.save()
    assert TransactionFPDS.objects.all().count() == 2
def test_txn_contract_get_or_create():
    """Test TransactionFPDS.get_or_create_2 method."""

    agency1 = mommy.make('references.Agency')
    awd1 = mommy.make('awards.Award', awarding_agency=agency1)
    txn1 = mommy.make(
        'awards.TransactionNormalized',
        award=awd1,
        modification_number='1',
        awarding_agency=agency1,
        last_modified_date=date(2012, 3, 1),
    )
    mommy.make('awards.TransactionFPDS',
               transaction=txn1,
               piid='abc',
               base_and_all_options_value=1000)
    assert TransactionFPDS.objects.all().count() == 1

    # an updated transaction should also update existing TransactionFPDS
    # data, not insert a new record
    tc_dict = {
        'piid': 'abc',
        'base_and_all_options_value': 5000,
    }
    tc2 = TransactionFPDS.get_or_create_2(txn1, **tc_dict)
    tc2.save()
    assert TransactionFPDS.objects.all().count() == 1
    t = TransactionNormalized.objects.get(id=txn1.id)
    assert t.contract_data.piid == 'abc'
    assert t.contract_data.base_and_all_options_value == '5000'

    # a new transaction gets a new TransactionFABS record
    tc_dict = {
        'piid': 'xyz',
        'base_and_all_options_value': 5555,
    }
    tc3 = TransactionFPDS.get_or_create_2(
        mommy.make('awards.TransactionNormalized'), **tc_dict)
    tc3.save()
    assert TransactionFPDS.objects.all().count() == 2