Example #1
0
def test_sponsors():
    """
    Do an end-to-end sponsor check.
    """

    opportunities = DataFrame({
        "AccountId": ["A01", "B01", "A01", "B01", "B01"],
        "Amount": [5, 20, 4, 40, 30],
        "CloseDate": ['2009-01-02', '2009-01-03', '2009-01-04',
            '2010-01-02', '2010-01-02'],
        "RecordTypeId": ['01216000001IhIEAA0', '01216000001IhIEAA0',
            '01216000001IhmxAAC', '01216000001IhmxAAC', '01216000001IhmxAAC'],
        "Type": ['Standard', 'In-Kind', '', 'In-Kind', ''],
    })

    accounts = DataFrame({
        "AccountId": ["A01", "B01"],
        "Text_For_Donor_Wall__c": ["Donor A", "Donor B"],
        "Website": ['http://A01.com', 'http://B01.com'],
    })

    expected = """{
        "2009": [
            {
                "events_revenue": "$4",
                "digital_in_kind": "$0",
                "sponsor": "Donor A",
                "url": "http://A01.com",
                "events_in_kind": "$0",
                "total": "$9",
                "digital_revenue": "$5"
            },
            {
                "events_revenue": "$0",
                "digital_in_kind": "$20",
                "sponsor": "Donor B",
                "url": "http://B01.com",
                "events_in_kind": "$0",
                "total": "$20",
                "digital_revenue": "$0"
            }
        ],
        "2010": [
            {
                "events_revenue": "$30",
                "digital_in_kind": "$0",
                "sponsor": "Donor B",
                "url": "http://B01.com",
                "events_in_kind": "$40",
                "total": "$70",
                "digital_revenue": "$0"
            }
        ],
        "all-time": [
            {
                "events_revenue": "$4",
                "digital_in_kind": "$0",
                "sponsor": "Donor A",
                "url": "http://A01.com",
                "events_in_kind": "$0",
                "total": "$9",
                "digital_revenue": "$5"
            },
            {
                "events_revenue": "$30",
                "digital_in_kind": "$20",
                "sponsor": "Donor B",
                "url": "http://B01.com",
                "events_in_kind": "$40",
                "total": "$90",
                "digital_revenue": "$0"
            }
        ]
    }
    """
    actual = convert_sponsors(opportunities=opportunities, accounts=accounts)
    assert json.loads(actual) == json.loads(expected)
Example #2
0
def test_sponsors_sort_order():
    """
    Confirm that sponsors are sorted by their name, not ID.
    """
    opportunities = DataFrame({
        "AccountId": ["A01", "B01", "C01"],
        "Amount": [20, 20, 20],
        "CloseDate": ['2009-01-02', '2009-01-02', '2009-01-02'],
        "RecordTypeId": ['01216000001IhIEAA0', '01216000001IhIEAA0',
            '01216000001IhIEAA0'],
        "Type": ['Standard', 'Standard', 'Standard'],
    })

    accounts = DataFrame({
        "AccountId": ["A01", "B01", "C01"],
        "Text_For_Donor_Wall__c": ["Donor Z", "Donor A", "Donor B"],
        "Website": ['http://Z01.com', 'http://A01.com', 'http://B01.com'],
    })

    expected = """
    {
        "2009": [
            {
                "url": "http://A01.com",
                "events_in_kind": "$0",
                "digital_revenue": "$20",
                "digital_in_kind": "$0",
                "sponsor": "Donor A",
                "events_revenue": "$0",
                "total": "$20"
            },
            {
                "url": "http://B01.com",
                "events_in_kind": "$0",
                "digital_revenue": "$20",
                "digital_in_kind": "$0",
                "sponsor": "Donor B",
                "events_revenue": "$0",
                "total": "$20"
            },
            {
                "url": "http://Z01.com",
                "events_in_kind": "$0",
                "digital_revenue": "$20",
                "digital_in_kind": "$0",
                "sponsor": "Donor Z",
                "events_revenue": "$0",
                "total": "$20"
            }
        ],
        "all-time": [
            {
                "url": "http://A01.com",
                "events_in_kind": "$0",
                "digital_revenue": "$20",
                "digital_in_kind": "$0",
                "sponsor": "Donor A",
                "events_revenue": "$0",
                "total": "$20"
            },
            {
                "url": "http://B01.com",
                "events_in_kind": "$0",
                "digital_revenue": "$20",
                "digital_in_kind": "$0",
                "sponsor": "Donor B",
                "events_revenue": "$0",
                "total": "$20"
            },
            {
                "url": "http://Z01.com",
                "events_in_kind": "$0",
                "digital_revenue": "$20",
                "digital_in_kind": "$0",
                "sponsor": "Donor Z",
                "events_revenue": "$0",
                "total": "$20"
            }
        ]
    }
    """
    actual = convert_sponsors(opportunities=opportunities, accounts=accounts)
    assert json.loads(actual) == json.loads(expected)
Example #3
0
        sleep(3)
    bulk.close_job(job)

    rows = bulk.get_batch_result_iter(job, batch, parse_csv=True)

    accts = DataFrame.from_dict(list(rows))
    accts.rename(columns={'Id': 'AccountId'}, inplace=True)

    return opps, accts

# Circles
print "Fetching Circle data..."
generate_circle_data()

# Sponsors
opps, accts = sf_data(sponsors_query)

print "Transforming and exporting to JSON..."
json_output = convert_sponsors(opportunities=opps, accounts=accts)

print "Saving sponsors to S3..."
push_to_s3(filename='sponsors.json', contents=json_output)

# Donors
opps, accounts = sf_data(donors_query)
print "Transforming and exporting to JSON..."
json_output = convert_donors(opportunities=opps, accounts=accts)

print "Saving donors to S3..."
push_to_s3(filename='donors.json', contents=json_output)